summaryrefslogtreecommitdiff
path: root/x11-toolkits/gtk30/files/patch-721398
diff options
context:
space:
mode:
Diffstat (limited to 'x11-toolkits/gtk30/files/patch-721398')
-rw-r--r--x11-toolkits/gtk30/files/patch-72139881
1 files changed, 0 insertions, 81 deletions
diff --git a/x11-toolkits/gtk30/files/patch-721398 b/x11-toolkits/gtk30/files/patch-721398
deleted file mode 100644
index ad6204648efd..000000000000
--- a/x11-toolkits/gtk30/files/patch-721398
+++ /dev/null
@@ -1,81 +0,0 @@
-From 55edc81c10742bf3e410168f6dc317f8aca05938 Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Mon, 27 Jul 2015 23:18:27 -0400
-Subject: x11: Make selection handling work across screens
-
-When dealing with selection events, we might see windows from
-other screens in the requestor field. The current x11 backend
-code fails to wrap these in a foreign GdkWindow, since we
-don't have the corresponding GdkScreen anymore. Work around
-this by creating such 'foreign screens' on demand. We still
-maintain the 1:1 relation between the display and the screen
-returned by gdk_display_get_default_screen().
-
-https://bugzilla.gnome.org/show_bug.cgi?id=721398
-
-diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
-index f2824b6..9bb27ee 100644
---- gdk/x11/gdkdisplay-x11.c
-+++ gdk/x11/gdkdisplay-x11.c
-@@ -1959,6 +1959,7 @@ gdk_x11_display_finalize (GObject *object)
-
- /* Free all GdkScreens */
- g_object_unref (display_x11->screen);
-+ g_list_free_full (display_x11->screens, g_object_unref);
-
- g_free (display_x11->startup_notification_id);
-
-@@ -2035,12 +2036,36 @@ GdkScreen *
- _gdk_x11_display_screen_for_xrootwin (GdkDisplay *display,
- Window xrootwin)
- {
-- GdkScreen *screen = gdk_display_get_default_screen (display);
-+ GdkScreen *screen;
-+ XWindowAttributes attrs;
-+ gboolean result;
-+ GdkX11Display *display_x11;
-+ GList *l;
-+
-+ screen = gdk_display_get_default_screen (display);
-
- if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
- return screen;
-
-- return NULL;
-+ display_x11 = GDK_X11_DISPLAY (display);
-+
-+ for (l = display_x11->screens; l; l = l->next)
-+ {
-+ screen = l->data;
-+ if (GDK_SCREEN_XROOTWIN (screen) == xrootwin)
-+ return screen;
-+ }
-+
-+ gdk_x11_display_error_trap_push (display);
-+ result = XGetWindowAttributes (display_x11->xdisplay, xrootwin, &attrs);
-+ if (gdk_x11_display_error_trap_pop (display) || !result)
-+ return NULL;
-+
-+ screen = _gdk_x11_screen_new (display, XScreenNumberOfScreen (attrs.screen));
-+
-+ display_x11->screens = g_list_prepend (display_x11->screens, screen);
-+
-+ return screen;
- }
-
- /**
-diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
-index aadf255..9b78f61 100644
---- gdk/x11/gdkdisplay-x11.h
-+++ gdk/x11/gdkdisplay-x11.h
-@@ -39,6 +39,7 @@ struct _GdkX11Display
- GdkDisplay parent_instance;
- Display *xdisplay;
- GdkScreen *screen;
-+ GList *screens;
-
- GSource *event_source;
-
---
-cgit v0.10.2
-