diff options
author | Martin Stransky <stransky@redhat.com> | 2019-07-24 18:31:42 +0200 |
---|---|---|
committer | Martin Stransky <stransky@redhat.com> | 2019-07-24 18:31:42 +0200 |
commit | e29a8d85ee9107f69dcaaba27f6dd84ce6d41a84 (patch) | |
tree | 2464cff70c329cd68cd2a35efbfa028176a2cafd /mozilla-1568569.patch | |
parent | Merge branch 'master' into f30 (diff) | |
parent | Added fix for rhbz#1709840 (diff) | |
download | librewolf-fedora-ff-e29a8d85ee9107f69dcaaba27f6dd84ce6d41a84.tar.gz librewolf-fedora-ff-e29a8d85ee9107f69dcaaba27f6dd84ce6d41a84.tar.bz2 librewolf-fedora-ff-e29a8d85ee9107f69dcaaba27f6dd84ce6d41a84.zip |
Merge branch 'master' into f30
Diffstat (limited to 'mozilla-1568569.patch')
-rw-r--r-- | mozilla-1568569.patch | 73 |
1 files changed, 73 insertions, 0 deletions
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. |