[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)