firefox/mozilla-1568569.patch
2019-11-26 11:08:00 +01:00

44 lines
1.9 KiB
Diff

diff -up firefox-71.0/widget/gtk/nsWindow.cpp.1568569 firefox-71.0/widget/gtk/nsWindow.cpp
--- firefox-71.0/widget/gtk/nsWindow.cpp.1568569 2019-11-26 10:51:08.303063138 +0100
+++ firefox-71.0/widget/gtk/nsWindow.cpp 2019-11-26 10:54:28.428994823 +0100
@@ -3348,6 +3348,8 @@ void nsWindow::OnWindowStateEvent(GtkWid
return;
}
+ nsSizeMode lastSizeState = mSizeState;
+
if (aEvent->new_window_state & GDK_WINDOW_STATE_ICONIFIED) {
LOG(("\tIconified\n"));
mSizeState = nsSizeMode_Minimized;
@@ -3379,6 +3381,18 @@ void nsWindow::OnWindowStateEvent(GtkWid
mIsTiled = false;
}
+ // 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) {
@@ -3930,6 +3944,11 @@ nsresult nsWindow::Create(nsIWidget* aPa
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) {