summaryrefslogtreecommitdiff
path: root/mozilla-1568569.patch
diff options
context:
space:
mode:
authorMartin Stransky <stransky@redhat.com>2019-07-24 18:31:42 +0200
committerMartin Stransky <stransky@redhat.com>2019-07-24 18:31:42 +0200
commite29a8d85ee9107f69dcaaba27f6dd84ce6d41a84 (patch)
tree2464cff70c329cd68cd2a35efbfa028176a2cafd /mozilla-1568569.patch
parentMerge branch 'master' into f30 (diff)
parentAdded fix for rhbz#1709840 (diff)
downloadlibrewolf-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.patch73
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.
bgstack15