diff options
| author | Po Lu | 2022-04-03 11:08:42 +0000 |
|---|---|---|
| committer | Po Lu | 2022-04-03 11:08:42 +0000 |
| commit | c3f12cd5da54c9d5180fccaeee2e34b05489def2 (patch) | |
| tree | 3b04f9115b5fcbbbdfc1b810b90fb77d7423817f /src | |
| parent | 28f720e7c483c37a6c94f6b561e8f175b3af51a4 (diff) | |
| download | emacs-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.c | 10 |
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. */ | ||
| 2569 | static void | 2573 | static void |
| 2570 | haiku_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window, | 2574 | haiku_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)) |