diff options
author | Sebastian Keller <skeller@gnome.org> | 2023-04-28 12:20:11 +0200 |
---|---|---|
committer | Sebastian Keller <skeller@gnome.org> | 2023-04-28 12:46:58 +0200 |
commit | d643eb5c6fe50e7f1afffda0e8747a87f668a799 (patch) | |
tree | 01f7b801f32779cefc8202c3c41e3fdde9ccedef | |
parent | 28a6447ff060ae1fbac8f20a13908d6e230eddc2 (diff) | |
download | mutter-d643eb5c6fe50e7f1afffda0e8747a87f668a799.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>
-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; } |