mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 09:14:18 +00:00
Fix announcements of XDND mouse rectangles
* lisp/x-dnd.el (x-dnd-handle-xdnd): Use correct meaning of "2", which isn't well documented. * src/xterm.c (handle_one_xevent): Likewise. Also fix unpacking of mouse rects.
This commit is contained in:
parent
0463368a7b
commit
6230ed6d63
2 changed files with 14 additions and 9 deletions
|
|
@ -695,13 +695,13 @@ FORMAT is 32 (not used). MESSAGE is the data part of an XClientMessageEvent."
|
||||||
(list-to-send
|
(list-to-send
|
||||||
(list (string-to-number
|
(list (string-to-number
|
||||||
(frame-parameter frame 'outer-window-id))
|
(frame-parameter frame 'outer-window-id))
|
||||||
(+ 2 accept) ;; 1 = accept, 0 = reject. 2 =
|
;; 1 = accept, 0 = reject. 2 = "want position
|
||||||
;; "want position updates".
|
;; updates even for movement inside the given
|
||||||
(if dnd-indicate-insertion-point 0
|
;; widget bounds".
|
||||||
(x-dnd-get-drop-x-y frame window))
|
(+ (if dnd-indicate-insertion-point 2 0) accept)
|
||||||
(if dnd-indicate-insertion-point 0
|
(x-dnd-get-drop-x-y frame window)
|
||||||
(x-dnd-get-drop-width-height
|
(x-dnd-get-drop-width-height
|
||||||
frame window (eq accept 1)))
|
frame window (eq accept 1))
|
||||||
;; The no-toolkit Emacs build can actually
|
;; The no-toolkit Emacs build can actually
|
||||||
;; receive drops from programs that speak
|
;; receive drops from programs that speak
|
||||||
;; versions of XDND earlier than 3 (such as
|
;; versions of XDND earlier than 3 (such as
|
||||||
|
|
|
||||||
|
|
@ -16468,10 +16468,15 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
||||||
if (x_dnd_last_protocol_version != -1
|
if (x_dnd_last_protocol_version != -1
|
||||||
&& x_dnd_in_progress
|
&& x_dnd_in_progress
|
||||||
&& target == x_dnd_last_seen_window
|
&& target == x_dnd_last_seen_window
|
||||||
&& event->xclient.data.l[1] & 2)
|
/* The XDND documentation is not very clearly worded.
|
||||||
|
But this should be the correct behavior, since
|
||||||
|
"kDNDStatusSendHereFlag" in the reference
|
||||||
|
implementation is 2, and means the mouse rect
|
||||||
|
should be ignored. */
|
||||||
|
&& !(event->xclient.data.l[1] & 2))
|
||||||
{
|
{
|
||||||
r1 = event->xclient.data.l[2];
|
r1 = event->xclient.data.l[2];
|
||||||
r2 = event->xclient.data.l[2];
|
r2 = event->xclient.data.l[3];
|
||||||
|
|
||||||
x_dnd_mouse_rect_target = target;
|
x_dnd_mouse_rect_target = target;
|
||||||
x_dnd_mouse_rect.x = (r1 & 0xffff0000) >> 16;
|
x_dnd_mouse_rect.x = (r1 & 0xffff0000) >> 16;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue