mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
gtkdnd: Hardcode the DnD window onto the drag widget window on Wayland
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
This commit is contained in:
parent
ee93db1659
commit
14b4e4d35a
17
gtk/gtkdnd.c
17
gtk/gtkdnd.c
@ -39,6 +39,10 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
|
#include <gdk/wayland/gdkwayland.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "gtkdnd.h"
|
#include "gtkdnd.h"
|
||||||
#include "gtkiconhelperprivate.h"
|
#include "gtkiconhelperprivate.h"
|
||||||
#include "gtkicontheme.h"
|
#include "gtkicontheme.h"
|
||||||
@ -49,6 +53,7 @@
|
|||||||
#include "gtkwindow.h"
|
#include "gtkwindow.h"
|
||||||
#include "gtkintl.h"
|
#include "gtkintl.h"
|
||||||
#include "gtkselectionprivate.h"
|
#include "gtkselectionprivate.h"
|
||||||
|
#include "gtkwindowprivate.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3293,6 +3298,12 @@ set_icon_helper (GdkDragContext *context,
|
|||||||
gtk_widget_get_style_context (window),
|
gtk_widget_get_style_context (window),
|
||||||
&width, &height);
|
&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 &&
|
if (!force_window &&
|
||||||
gtk_drag_can_use_rgba_cursor (display, width + 2, height + 2))
|
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);
|
gtk_window_set_screen (GTK_WINDOW (window), screen);
|
||||||
set_can_change_screen (window, TRUE);
|
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_events (window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
|
||||||
gtk_widget_set_app_paintable (window, TRUE);
|
gtk_widget_set_app_paintable (window, TRUE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user