emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 9f54cb5f8f 1/2: Prevent signals when dragging nonexistent files o


From: Po Lu
Subject: master 9f54cb5f8f 1/2: Prevent signals when dragging nonexistent files on Haiku
Date: Wed, 30 Mar 2022 04:26:39 -0400 (EDT)

branch: master
commit 9f54cb5f8f0df79468546b9431a0fe72ee2f1a52
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Prevent signals when dragging nonexistent files on Haiku
    
    * 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 | 4 +++-
 src/haiku_support.cc   | 3 ---
 src/haikuselect.c      | 9 ++++++++-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lisp/term/haiku-win.el b/lisp/term/haiku-win.el
index f9dcd0d192..738cf56caa 100644
--- a/lisp/term/haiku-win.el
+++ b/lisp/term/haiku-win.el
@@ -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))))
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index 39df06e436..dd27d6317c 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -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)));
diff --git a/src/haikuselect.c b/src/haikuselect.c
index 38d4933948..77dcff42a6 100644
--- a/src/haikuselect.c
+++ b/src/haikuselect.c
@@ -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");



reply via email to

[Prev in Thread] Current Thread [Next in Thread]