emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master be89d888de: Allow dropping text to the root window


From: Po Lu
Subject: master be89d888de: Allow dropping text to the root window
Date: Tue, 5 Apr 2022 04:20:02 -0400 (EDT)

branch: master
commit be89d888de10964c2195b6e2e6bc26845ad7cebb
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Allow dropping text to the root window
    
    * src/xterm.c (x_dnd_send_unsupported_drop): Allow dropping to
    the root window.
    (handle_one_xevent): Send unsupported drops to the last toplevel
    instead of the target window.
---
 src/xterm.c | 44 ++++++++++++++++++++++++--------------------
 1 file changed, 24 insertions(+), 20 deletions(-)

diff --git a/src/xterm.c b/src/xterm.c
index 77861c3fc0..922aafbbdf 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2806,7 +2806,10 @@ x_dnd_send_unsupported_drop (struct x_display_info 
*dpyinfo, Window target_windo
   XSETFRAME (frame, x_dnd_frame);
 
   x_catch_errors (dpyinfo->display);
+
   child = dpyinfo->root_window;
+  dest_x = root_x;
+  dest_y = root_y;
 
   while (XTranslateCoordinates (dpyinfo->display, child,
                                child, root_x, root_y, &dest_x,
@@ -2821,27 +2824,24 @@ x_dnd_send_unsupported_drop (struct x_display_info 
*dpyinfo, Window target_windo
       root_y = dest_y;
     }
 
-  if (child != dpyinfo->root_window)
-    {
-      x_own_selection (QPRIMARY, Qnil, frame);
+  x_own_selection (QPRIMARY, Qnil, frame);
 
-      event.xbutton.window = child;
-      event.xbutton.x = dest_x;
-      event.xbutton.y = dest_y;
-      event.xbutton.state = 0;
-      event.xbutton.button = 2;
-      event.xbutton.same_screen = True;
-      event.xbutton.time = before + 1;
-      event.xbutton.time = before + 2;
+  event.xbutton.window = child;
+  event.xbutton.x = dest_x;
+  event.xbutton.y = dest_y;
+  event.xbutton.state = 0;
+  event.xbutton.button = 2;
+  event.xbutton.same_screen = True;
+  event.xbutton.time = before + 1;
+  event.xbutton.time = before + 2;
 
-      x_set_pending_dnd_time (before);
+  x_set_pending_dnd_time (before);
 
-      XSendEvent (dpyinfo->display, child,
-                 True, ButtonPressMask, &event);
-      event.xbutton.type = ButtonRelease;
-      XSendEvent (dpyinfo->display, child,
-                 True, ButtonReleaseMask, &event);
-    }
+  XSendEvent (dpyinfo->display, child,
+             True, ButtonPressMask, &event);
+  event.xbutton.type = ButtonRelease;
+  XSendEvent (dpyinfo->display, child,
+             True, ButtonReleaseMask, &event);
 
   x_uncatch_errors ();
 }
@@ -15443,7 +15443,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                    else
                      {
                        x_set_pending_dnd_time (event->xbutton.time);
-                       x_dnd_send_unsupported_drop (dpyinfo, 
x_dnd_last_seen_window,
+                       x_dnd_send_unsupported_drop (dpyinfo, 
(x_dnd_last_seen_toplevel != None
+                                                              ? 
x_dnd_last_seen_toplevel
+                                                              : 
x_dnd_last_seen_window),
                                                     event->xbutton.x_root, 
event->xbutton.y_root,
                                                     event->xbutton.time);
                      }
@@ -16605,7 +16607,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                          else
                            {
                              x_set_pending_dnd_time (xev->time);
-                             x_dnd_send_unsupported_drop (dpyinfo, 
x_dnd_last_seen_window,
+                             x_dnd_send_unsupported_drop (dpyinfo, 
(x_dnd_last_seen_toplevel != None
+                                                                    ? 
x_dnd_last_seen_toplevel
+                                                                    : 
x_dnd_last_seen_window),
                                                           xev->root_x, 
xev->root_y, xev->time);
                            }
                        }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]