]> git.eshelyaron.com Git - emacs.git/commitdiff
Prevent signals when dragging nonexistent files on Haiku
authorPo Lu <luangruo@yahoo.com>
Wed, 30 Mar 2022 08:13:35 +0000 (08:13 +0000)
committerPo Lu <luangruo@yahoo.com>
Wed, 30 Mar 2022 08:13:35 +0000 (08:13 +0000)
* lisp/term/haiku-win.el (x-begin-drag): Bind
`haiku-signal-invalid-refs' to nil.
* src/haiku_support.cc (MouseMoved): Send motion events while
dragging as well.
* src/haikuselect.c (haiku_lisp_to_message): Respect new
variable.
(syms_of_haikuselect): New variable `haiku-signal-invalid-refs'.

lisp/term/haiku-win.el
src/haiku_support.cc
src/haikuselect.c

index f9dcd0d19221fbe0c70a3b3c6bb05644a0e46d6a..738cf56caaa2d633a1af168b0da57485ef2c2533 100644 (file)
@@ -44,6 +44,7 @@
 (defvar x-command-line-resources)
 
 (defvar haiku-initialized)
+(defvar haiku-signal-invalid-refs)
 
 (defvar haiku-dnd-selection-value nil
   "The local value of the special `XdndSelection' selection.")
@@ -277,7 +278,8 @@ take effect on menu items until the menu bar is updated again."
   "SKIP: real doc in xfns.c."
   (unless haiku-dnd-selection-value
     (error "No local value for XdndSelection"))
-  (let ((message nil))
+  (let ((message nil)
+        (haiku-signal-invalid-refs nil))
     (dolist (target targets)
       (let ((selection-converter (cdr (assoc (intern target)
                                              haiku-dnd-selection-converters))))
index 39df06e43664e794ab1f73fe70a57c48218f8ccb..dd27d6317c506f687f11485f1686290687a5cae6 100644 (file)
@@ -1530,9 +1530,6 @@ public:
     rq.window = this->Window ();
     rq.time = system_time ();
 
-    if (drag_msg && transit != B_EXITED_VIEW)
-      return;
-
     if (ToolTip ())
       ToolTip ()->SetMouseRelativeLocation (BPoint (-(point.x - tt_absl_pos.x),
                                                    -(point.y - tt_absl_pos.y)));
index 38d4933948f325f0907720a9a11621b150294d74..77dcff42a613699144fbe8f57b6ff4fdfec9ed3c 100644 (file)
@@ -520,7 +520,8 @@ haiku_lisp_to_message (Lisp_Object obj, void *message)
            case 'RREF':
              CHECK_STRING (data);
 
-             if (be_add_refs_data (message, SSDATA (name), SSDATA (data)))
+             if (be_add_refs_data (message, SSDATA (name), SSDATA (data))
+                 && haiku_signal_invalid_refs)
                signal_error ("Invalid file name", data);
              break;
 
@@ -787,6 +788,12 @@ ignored if it is dropped on top of FRAME.  */)
 void
 syms_of_haikuselect (void)
 {
+  DEFVAR_BOOL ("haiku-signal-invalid-refs", haiku_signal_invalid_refs,
+     doc: /* If nil, silently ignore invalid file names in system messages.
+Otherwise, an error will be signalled if adding a file reference to a
+system message failed.  */);
+  haiku_signal_invalid_refs = true;
+
   DEFSYM (QSECONDARY, "SECONDARY");
   DEFSYM (QCLIPBOARD, "CLIPBOARD");
   DEFSYM (QSTRING, "STRING");