diff options
| author | Po Lu | 2022-04-18 16:08:19 +0800 |
|---|---|---|
| committer | Po Lu | 2022-04-18 16:08:19 +0800 |
| commit | 736fd8b258e5bbddf3e5260db1692d3e9ca4c81c (patch) | |
| tree | 84495e509418cb8dd110873c4b36ea2bb3696e67 /src | |
| parent | 96b21b8da10e4e31981e8a6874411ab184259fa4 (diff) | |
| download | emacs-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.c | 7 |
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) |