diff options
author | Sebastian Keller <skeller@gnome.org> | 2023-04-28 12:20:11 +0200 |
---|---|---|
committer | Jonas Ã…dahl <jadahl@gmail.com> | 2023-05-03 04:43:33 -0400 |
commit | f21cc690527010918d10638cfc7747df3eede496 (patch) | |
tree | 01f7b801f32779cefc8202c3c41e3fdde9ccedef | |
parent | 28a6447ff060ae1fbac8f20a13908d6e230eddc2 (diff) | |
download | mutter-f21cc690527010918d10638cfc7747df3eede496.tar.gz |
frames: Disable XDND support on the frame window
All X11 surfaces created by gtk4 claim to support XDND via the XdndAware
property. This was leading some clients, e.g. Qt, to consider the frame
window as drop target instead of the client window.
Avoid this issue by removing the XdndAware property again after gtk has
created the surface.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2715
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2978>
(cherry picked from commit d643eb5c6fe50e7f1afffda0e8747a87f668a799)
-rw-r--r-- | src/frames/meta-frame.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/frames/meta-frame.c b/src/frames/meta-frame.c index be685c51f..345751ad1 100644 --- a/src/frames/meta-frame.c +++ b/src/frames/meta-frame.c @@ -504,6 +504,7 @@ frame_sync_wm_state (MetaFrame *frame, GtkWidget * meta_frame_new (Window window) { + GdkDisplay *display; GtkWidget *frame, *header, *content; GdkSurface *surface; int frame_height = 0; @@ -549,6 +550,13 @@ meta_frame_new (Window window) frame_sync_motif_wm_hints (GTK_WINDOW (frame), window); frame_sync_wm_normal_hints (GTK_WINDOW (frame), window); + /* Disable XDND support on the frame window, because it can cause some clients + * to try use it instead of the client window as drop target */ + display = gtk_widget_get_display (GTK_WIDGET (frame)); + XDeleteProperty (gdk_x11_display_get_xdisplay (display), + gdk_x11_surface_get_xid (surface), + gdk_x11_get_xatom_by_name_for_display (display, "XdndAware")); + return frame; } |