aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/haiku_support.cc7
-rw-r--r--src/haiku_support.h2
-rw-r--r--src/haikuselect.c10
3 files changed, 13 insertions, 6 deletions
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index b58420fcb99..a1616258bc3 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -4068,7 +4068,7 @@ be_drag_message_thread_entry (void *thread_data)
4068} 4068}
4069 4069
4070bool 4070bool
4071be_drag_message (void *view, void *message, 4071be_drag_message (void *view, void *message, bool allow_same_view,
4072 void (*block_input_function) (void), 4072 void (*block_input_function) (void),
4073 void (*unblock_input_function) (void), 4073 void (*unblock_input_function) (void),
4074 void (*process_pending_signals_function) (void), 4074 void (*process_pending_signals_function) (void),
@@ -4083,7 +4083,10 @@ be_drag_message (void *view, void *message,
4083 ssize_t stat; 4083 ssize_t stat;
4084 4084
4085 block_input_function (); 4085 block_input_function ();
4086 msg->AddInt32 ("emacs:window_id", window->window_id); 4086
4087 if (!allow_same_view)
4088 msg->AddInt32 ("emacs:window_id", window->window_id);
4089
4087 if (!vw->LockLooper ()) 4090 if (!vw->LockLooper ())
4088 gui_abort ("Failed to lock view looper for drag"); 4091 gui_abort ("Failed to lock view looper for drag");
4089 4092
diff --git a/src/haiku_support.h b/src/haiku_support.h
index c978926e735..ae3ad6a68a8 100644
--- a/src/haiku_support.h
+++ b/src/haiku_support.h
@@ -944,7 +944,7 @@ extern "C"
944 BMessage_delete (void *message); 944 BMessage_delete (void *message);
945 945
946 extern bool 946 extern bool
947 be_drag_message (void *view, void *message, 947 be_drag_message (void *view, void *message, bool allow_same_view,
948 void (*block_input_function) (void), 948 void (*block_input_function) (void),
949 void (*unblock_input_function) (void), 949 void (*unblock_input_function) (void),
950 void (*process_pending_signals_function) (void), 950 void (*process_pending_signals_function) (void),
diff --git a/src/haikuselect.c b/src/haikuselect.c
index 5540f467c0d..f1aa4f20d96 100644
--- a/src/haikuselect.c
+++ b/src/haikuselect.c
@@ -585,7 +585,7 @@ haiku_should_quit_drag (void)
585} 585}
586 586
587DEFUN ("haiku-drag-message", Fhaiku_drag_message, Shaiku_drag_message, 587DEFUN ("haiku-drag-message", Fhaiku_drag_message, Shaiku_drag_message,
588 2, 2, 0, 588 2, 3, 0,
589 doc: /* Begin dragging MESSAGE from FRAME. 589 doc: /* Begin dragging MESSAGE from FRAME.
590 590
591MESSAGE an alist of strings, denoting message field names, to a list 591MESSAGE an alist of strings, denoting message field names, to a list
@@ -606,8 +606,11 @@ associates to a 32-bit unsigned integer describing the type of the
606system message. 606system message.
607 607
608FRAME is a window system frame that must be visible, from which the 608FRAME is a window system frame that must be visible, from which the
609drag will originate. */) 609drag will originate.
610 (Lisp_Object frame, Lisp_Object message) 610
611ALLOW-SAME-FRAME, if nil or not specified, means that MESSAGE will be
612ignored if it is dropped on top of FRAME. */)
613 (Lisp_Object frame, Lisp_Object message, Lisp_Object allow_same_frame)
611{ 614{
612 specpdl_ref idx; 615 specpdl_ref idx;
613 void *be_message; 616 void *be_message;
@@ -625,6 +628,7 @@ drag will originate. */)
625 record_unwind_protect_ptr (BMessage_delete, be_message); 628 record_unwind_protect_ptr (BMessage_delete, be_message);
626 haiku_lisp_to_message (message, be_message); 629 haiku_lisp_to_message (message, be_message);
627 rc = be_drag_message (FRAME_HAIKU_VIEW (f), be_message, 630 rc = be_drag_message (FRAME_HAIKU_VIEW (f), be_message,
631 !NILP (allow_same_frame),
628 block_input, unblock_input, 632 block_input, unblock_input,
629 process_pending_signals, 633 process_pending_signals,
630 haiku_should_quit_drag); 634 haiku_should_quit_drag);