diff --git a/gtk3-fix-screen-changes-csd.patch b/gtk3-fix-screen-changes-csd.patch new file mode 100644 index 0000000..b130332 --- /dev/null +++ b/gtk3-fix-screen-changes-csd.patch @@ -0,0 +1,58 @@ +From d7bff60140225dff76befacf6eb2136c6723b794 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Fri, 24 Oct 2014 13:30:19 -0400 +Subject: Fix a problem with screen changes and csd + +When a new screen is set on a window, we unrealize it, to +recreate all the resources. But we don't reset the client_decorated +flag, so realize() doesn't call create_decoration() - which makes +sense, since the decoration already exists. But the side-effect +of create_decoration() is to select the rgba visual, and visuals +are per-screen. + +Fix this by looking for the rgba visual in set_screen(), and +replacing it with the rgba visual for the new screen, if necessary. + +diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c +index 367d88c..e846c41 100644 +--- a/gtk/gtkwindow.c ++++ b/gtk/gtkwindow.c +@@ -10272,6 +10272,7 @@ gtk_window_set_screen (GtkWindow *window, + GtkWindowPrivate *priv; + GtkWidget *widget; + GdkScreen *previous_screen; ++ gboolean was_rgba; + gboolean was_mapped; + + g_return_if_fail (GTK_IS_WINDOW (window)); +@@ -10285,6 +10286,12 @@ gtk_window_set_screen (GtkWindow *window, + widget = GTK_WIDGET (window); + + previous_screen = priv->screen; ++ ++ if (gdk_screen_get_rgba_visual (previous_screen) == gtk_widget_get_visual (widget)) ++ was_rgba = TRUE; ++ else ++ was_rgba = FALSE; ++ + was_mapped = gtk_widget_get_mapped (widget); + + if (was_mapped) +@@ -10318,6 +10325,15 @@ gtk_window_set_screen (GtkWindow *window, + } + g_object_notify (G_OBJECT (window), "screen"); + ++ if (was_rgba) ++ { ++ GdkVisual *visual; ++ ++ visual = gdk_screen_get_rgba_visual (screen); ++ if (visual) ++ gtk_widget_set_visual (widget, visual); ++ } ++ + if (was_mapped) + gtk_widget_map (widget); + +-- +cgit v0.10.1 diff --git a/gtk3.changes b/gtk3.changes index a636192..abdf2de 100644 --- a/gtk3.changes +++ b/gtk3.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Nov 3 16:50:56 UTC 2014 - badshah400@gmail.com + +- Add gtk3-fix-screen-changes-csd.patch: fixes a problem with + screen changes and csd that caused some applications to launch + with ugly black borders (bgo#739812). + ------------------------------------------------------------------- Tue Oct 21 22:19:47 UTC 2014 - dimstar@opensuse.org diff --git a/gtk3.spec b/gtk3.spec index 9b80c41..72960b0 100644 --- a/gtk3.spec +++ b/gtk3.spec @@ -44,6 +44,8 @@ Patch1: gtk3-path-local.patch Patch3: gtk3-bnc130159-bgo319483-async-font-selection.patch # PATCH-FIX-UPSTREAM gtk3-find-wayland-includedir.patch bgo#696507 zaitor@opensuse.org -- Make configure find wayland include files. Patch4: gtk3-find-wayland-includedir.patch +# PATCH-FIX-UPSTREAM gtk3-fix-screen-changes-csd.patch bgo#739812 badshah400@gmail.com -- Fix a problem with screen changes and csd that caused some applications to launch with ugly black borders +Patch5: gtk3-fix-screen-changes-csd.patch BuildRequires: cups-devel >= 1.2 BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes @@ -332,6 +334,7 @@ cp -a %{S:1} . %if %{build_wayland_backend} %patch4 -p1 %endif +%patch5 -p1 %build # Needed for patch1 and patch4