aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-04-03 11:08:42 +0000
committerPo Lu2022-04-03 11:08:42 +0000
commitc3f12cd5da54c9d5180fccaeee2e34b05489def2 (patch)
tree3b04f9115b5fcbbbdfc1b810b90fb77d7423817f /src
parent28f720e7c483c37a6c94f6b561e8f175b3af51a4 (diff)
downloademacs-c3f12cd5da54c9d5180fccaeee2e34b05489def2.tar.gz
emacs-c3f12cd5da54c9d5180fccaeee2e34b05489def2.zip
Implement (sort of) `drag-source' on Haiku
* src/haikuterm.c (haiku_mouse_or_wdesc_frame) (haiku_mouse_position): Behave reasonably when track_mouse is Qdrag_source.
Diffstat (limited to 'src')
-rw-r--r--src/haikuterm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/haikuterm.c b/src/haikuterm.c
index cdddf50d19d..374d066787d 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -452,7 +452,8 @@ haiku_mouse_or_wdesc_frame (void *window)
452 ? x_display_list->last_mouse_frame 452 ? x_display_list->last_mouse_frame
453 : NULL); 453 : NULL);
454 454
455 if (lm_f && !EQ (track_mouse, Qdropping)) 455 if (lm_f && !EQ (track_mouse, Qdropping)
456 && !EQ (track_mouse, Qdrag_source))
456 return lm_f; 457 return lm_f;
457 else 458 else
458 { 459 {
@@ -2566,6 +2567,9 @@ haiku_scroll_run (struct window *w, struct run *run)
2566 unblock_input (); 2567 unblock_input ();
2567} 2568}
2568 2569
2570/* Haiku doesn't provide any way to get the frame actually underneath
2571 the pointer, so we typically return dpyinfo->last_mouse_frame, and
2572 refrain from returning anything if that doesn't exist. */
2569static void 2573static void
2570haiku_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window, 2574haiku_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
2571 enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y, 2575 enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y,
@@ -2585,7 +2589,9 @@ haiku_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
2585 XFRAME (frame)->mouse_moved = false; 2589 XFRAME (frame)->mouse_moved = false;
2586 } 2590 }
2587 2591
2588 if (gui_mouse_grabbed (x_display_list) && !EQ (track_mouse, Qdropping)) 2592 if (gui_mouse_grabbed (x_display_list)
2593 && !EQ (track_mouse, Qdropping)
2594 && !EQ (track_mouse, Qdrag_source))
2589 f1 = x_display_list->last_mouse_frame; 2595 f1 = x_display_list->last_mouse_frame;
2590 2596
2591 if (!f1 || FRAME_TOOLTIP_P (f1)) 2597 if (!f1 || FRAME_TOOLTIP_P (f1))