summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-08-28 14:44:44 +0200
committerCarlos Garnacho <carlosg@gnome.org>2014-09-01 19:17:54 +0200
commit52a0e5320f68e1bb0808dc05b06b61756046181c (patch)
tree57debf55c361971a2335af92e2a7885fd0cd1b44
parentee93db16592b1450765ef400acb8747c10f6addf (diff)
downloadgtk+-wayland-selections.tar.gz
gtkdnd: Harcode the DnD window onto the drag widget window on Waylandwayland-selections
This makes the drag widget use the same window surface that was passed when starting the drag operation. https://bugzilla.gnome.org/show_bug.cgi?id=697855
-rw-r--r--gtk/gtkdnd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index cc595914b0..6fabf68420 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -39,6 +39,10 @@
#endif
#endif
+#ifdef GDK_WINDOWING_WAYLAND
+#include <gdk/wayland/gdkwayland.h>
+#endif
+
#include "gtkdnd.h"
#include "gtkiconhelperprivate.h"
#include "gtkicontheme.h"
@@ -49,6 +53,7 @@
#include "gtkwindow.h"
#include "gtkintl.h"
#include "gtkselectionprivate.h"
+#include "gtkwindowprivate.h"
/**
@@ -3293,6 +3298,12 @@ set_icon_helper (GdkDragContext *context,
gtk_widget_get_style_context (window),
&width, &height);
+#ifdef GDK_WINDOWING_WAYLAND
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ gtk_window_set_hardcoded_window (GTK_WINDOW (window),
+ gdk_wayland_drag_context_get_dnd_window (context));
+#endif
+
if (!force_window &&
gtk_drag_can_use_rgba_cursor (display, width + 2, height + 2))
{
@@ -3463,6 +3474,12 @@ gtk_drag_set_icon_surface (GdkDragContext *context,
gtk_window_set_screen (GTK_WINDOW (window), screen);
set_can_change_screen (window, TRUE);
+#ifdef GDK_WINDOWING_WAYLAND
+ if (GDK_IS_WAYLAND_DISPLAY (gdk_screen_get_display (screen)))
+ gtk_window_set_hardcoded_window (GTK_WINDOW (window),
+ gdk_wayland_drag_context_get_dnd_window (context));
+#endif
+
gtk_widget_set_events (window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
gtk_widget_set_app_paintable (window, TRUE);