From 77e9ffc8d39bba62a06187035335d2f8efe2c657 Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Wed, 24 Jul 2019 18:31:18 +0200 Subject: Added fix for rhbz#1709840 --- mozilla-1568569.patch | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mozilla-1568569.patch (limited to 'mozilla-1568569.patch') diff --git a/mozilla-1568569.patch b/mozilla-1568569.patch new file mode 100644 index 0000000..ab6225a --- /dev/null +++ b/mozilla-1568569.patch @@ -0,0 +1,73 @@ +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -3238,16 +3238,18 @@ void nsWindow::OnWindowStateEvent(GtkWid + // We don't care about anything but changes in the maximized/icon/fullscreen + // states + if ((aEvent->changed_mask & + (GDK_WINDOW_STATE_ICONIFIED | GDK_WINDOW_STATE_MAXIMIZED | + GDK_WINDOW_STATE_FULLSCREEN)) == 0) { + return; + } + ++ nsSizeMode lastSizeState = mSizeState; ++ + if (aEvent->new_window_state & GDK_WINDOW_STATE_ICONIFIED) { + LOG(("\tIconified\n")); + mSizeState = nsSizeMode_Minimized; + #ifdef ACCESSIBILITY + DispatchMinimizeEventAccessible(); + #endif // ACCESSIBILITY + } else if (aEvent->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) { + LOG(("\tFullscreen\n")); +@@ -3261,16 +3263,28 @@ void nsWindow::OnWindowStateEvent(GtkWid + } else { + LOG(("\tNormal\n")); + mSizeState = nsSizeMode_Normal; + #ifdef ACCESSIBILITY + DispatchRestoreEventAccessible(); + #endif // ACCESSIBILITY + } + ++ // Fullscreen video playback may generate bogus alpha values which blends ++ // with desktop background in fullscreen video playback (Bug 1568569). ++ // As a workaround enable to draw mShell background in fullscreen mode ++ // if we draw to mContainer. ++ if (gtk_widget_get_has_window(GTK_WIDGET(mContainer))) { ++ if (mSizeState == nsSizeMode_Fullscreen) { ++ gtk_widget_set_app_paintable(mShell, FALSE); ++ } else if (lastSizeState == nsSizeMode_Fullscreen) { ++ gtk_widget_set_app_paintable(mShell, TRUE); ++ } ++ } ++ + if (mWidgetListener) { + mWidgetListener->SizeModeChanged(mSizeState); + if (aEvent->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) { + mWidgetListener->FullscreenChanged(aEvent->new_window_state & + GDK_WINDOW_STATE_FULLSCREEN); + } + } + +@@ -3787,16 +3801,21 @@ nsresult nsWindow::Create(nsIWidget* aPa + eventWidget = (drawToContainer) ? container : mShell; + + // Prevent GtkWindow from painting a background to avoid flickering. + gtk_widget_set_app_paintable(eventWidget, TRUE); + + gtk_widget_add_events(eventWidget, kEvents); + if (drawToContainer) { + gtk_widget_add_events(mShell, GDK_PROPERTY_CHANGE_MASK); ++ // Don't paint mShell background when we draw to mContainer. ++ // Otherwise we see mShell backround to shine through ++ // mContainer (Bug 1507608). ++ // But it may also lead to various bugs where mContainer has unintended ++ // transparent parts which blend with underlying desktop (Bug 1516224). + gtk_widget_set_app_paintable(mShell, TRUE); + } + if (mTransparencyBitmapForTitlebar) { + moz_container_force_default_visual(mContainer); + } + + // If we draw to mContainer window then configure it now because + // gtk_container_add() realizes the child widget. -- cgit