summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Keller <skeller@gnome.org>2023-04-28 12:20:11 +0200
committerSebastian Keller <skeller@gnome.org>2023-04-28 12:46:58 +0200
commitd643eb5c6fe50e7f1afffda0e8747a87f668a799 (patch)
tree01f7b801f32779cefc8202c3c41e3fdde9ccedef
parent28a6447ff060ae1fbac8f20a13908d6e230eddc2 (diff)
downloadmutter-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.c8
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;
}