emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/corfu 4f426ab 3/3: corfu--popup-hide-on-click: Redirect


From: ELPA Syncer
Subject: [elpa] externals/corfu 4f426ab 3/3: corfu--popup-hide-on-click: Redirect focus
Date: Sun, 11 Jul 2021 02:57:07 -0400 (EDT)

branch: externals/corfu
commit 4f426ab92665cdc622dd6bd7a45549c93362fae7
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    corfu--popup-hide-on-click: Redirect focus
---
 corfu.el | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/corfu.el b/corfu.el
index 2bf47af..9ab3592 100644
--- a/corfu.el
+++ b/corfu.el
@@ -243,19 +243,30 @@ filter string with spaces is allowed."
     (buffer-read-only . t))
   "Default child frame buffer parameters.")
 
-(defun corfu--popup-hide-on-click ()
-  "Close if mouse events land in the popup."
-  (when (mouse-event-p last-input-event)
-    (select-frame (frame-parent corfu--frame) 'norecord)
-    (corfu--popup-hide)
-    (setq this-command #'ignore)))
+(defvar corfu--mouse-ignore-map
+  (let ((map (make-sparse-keymap)))
+    (dolist (k '(mouse-1 down-mouse-1 drag-mouse-1 double-mouse-1 
triple-mouse-1
+                 mouse-2 down-mouse-2 drag-mouse-2 double-mouse-2 
triple-mouse-2
+                 mouse-3 down-mouse-3 drag-mouse-3 double-mouse-3 
triple-mouse-3
+                 mouse-4 down-mouse-4 drag-mouse-4 double-mouse-4 
triple-mouse-4
+                 mouse-5 down-mouse-5 drag-mouse-5 double-mouse-5 
triple-mouse-5
+                 mouse-6 down-mouse-6 drag-mouse-6 double-mouse-6 
triple-mouse-6
+                 mouse-7 down-mouse-7 drag-mouse-7 double-mouse-7 
triple-mouse-7))
+      (define-key map (vector k) #'ignore))
+    map)
+  "Ignore all mouse clicks.")
+
+(defun corfu--popup-redirect-focus ()
+  "Redirect focus from popup."
+  (redirect-frame-focus corfu--frame (frame-parent corfu--frame)))
 
 (defun corfu--make-buffer (content)
   "Create corfu buffer with CONTENT."
   (let ((fr face-remapping-alist)
         (buffer (get-buffer-create " *corfu*")))
     (with-current-buffer buffer
-      (add-hook 'pre-command-hook #'corfu--popup-hide-on-click nil 'local)
+      (add-hook 'pre-command-hook #'corfu--popup-redirect-focus nil 'local)
+      (use-local-map corfu--mouse-ignore-map)
       (dolist (var corfu--buffer-parameters)
         (set (make-local-variable (car var)) (cdr var)))
       (setq-local face-remapping-alist fr)



reply via email to

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