(list-to-send
(list (string-to-number
(frame-parameter frame 'outer-window-id))
- (+ 2 accept) ;; 1 = accept, 0 = reject. 2 =
- ;; "want position updates".
- (if dnd-indicate-insertion-point 0
- (x-dnd-get-drop-x-y frame window))
- (if dnd-indicate-insertion-point 0
- (x-dnd-get-drop-width-height
- frame window (eq accept 1)))
+ ;; 1 = accept, 0 = reject. 2 = "want position
+ ;; updates even for movement inside the given
+ ;; widget bounds".
+ (+ (if dnd-indicate-insertion-point 2 0) accept)
+ (x-dnd-get-drop-x-y frame window)
+ (x-dnd-get-drop-width-height
+ frame window (eq accept 1))
;; The no-toolkit Emacs build can actually
;; receive drops from programs that speak
;; versions of XDND earlier than 3 (such as
if (x_dnd_last_protocol_version != -1
&& x_dnd_in_progress
&& 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];
- r2 = event->xclient.data.l[2];
+ r2 = event->xclient.data.l[3];
x_dnd_mouse_rect_target = target;
x_dnd_mouse_rect.x = (r1 & 0xffff0000) >> 16;