aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-04-18 16:08:19 +0800
committerPo Lu2022-04-18 16:08:19 +0800
commit736fd8b258e5bbddf3e5260db1692d3e9ca4c81c (patch)
tree84495e509418cb8dd110873c4b36ea2bb3696e67 /src
parent96b21b8da10e4e31981e8a6874411ab184259fa4 (diff)
downloademacs-736fd8b258e5bbddf3e5260db1692d3e9ca4c81c.tar.gz
emacs-736fd8b258e5bbddf3e5260db1692d3e9ca4c81c.zip
Stop skipping ShapeNotify events during DND on GTK+
* src/xterm.c (handle_one_xevent): Don't skip ShapeNotify events because we can't send these events back to GDK manually.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/xterm.c b/src/xterm.c
index ef00e027f8e..99269e3e92b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -18661,7 +18661,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
18661 && x_dnd_in_progress && x_dnd_use_toplevels 18661 && x_dnd_in_progress && x_dnd_use_toplevels
18662 && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame)) 18662 && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
18663 { 18663 {
18664#ifndef USE_GTK
18664 XEvent xevent; 18665 XEvent xevent;
18666#endif
18665 XShapeEvent *xse = (XShapeEvent *) event; 18667 XShapeEvent *xse = (XShapeEvent *) event;
18666#if defined HAVE_XCB_SHAPE && defined HAVE_XCB_SHAPE_INPUT_RECTS 18668#if defined HAVE_XCB_SHAPE && defined HAVE_XCB_SHAPE_INPUT_RECTS
18667 xcb_shape_get_rectangles_cookie_t bounding_rect_cookie; 18669 xcb_shape_get_rectangles_cookie_t bounding_rect_cookie;
@@ -18678,6 +18680,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
18678 int rc, ordering; 18680 int rc, ordering;
18679#endif 18681#endif
18680 18682
18683 /* Somehow this really interferes with GTK's own processing
18684 of ShapeNotify events. Not sure what GTK uses them for,
18685 but we cannot skip any of them here. */
18686#ifndef USE_GTK
18681 while (XPending (dpyinfo->display)) 18687 while (XPending (dpyinfo->display))
18682 { 18688 {
18683 XNextEvent (dpyinfo->display, &xevent); 18689 XNextEvent (dpyinfo->display, &xevent);
@@ -18691,6 +18697,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
18691 break; 18697 break;
18692 } 18698 }
18693 } 18699 }
18700#endif
18694 18701
18695 for (struct x_client_list_window *tem = x_dnd_toplevels; tem; 18702 for (struct x_client_list_window *tem = x_dnd_toplevels; tem;
18696 tem = tem->next) 18703 tem = tem->next)