branch: elpa/keycast
commit 75d3862deab1bfa2993b75092320b2ba6c7ed7da
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>

    keycast-log-mode: Also toggle focus-avoidance of log frame
    
    Without this it is difficult to kill the buffer and frame after
    exiting the mode.
    
    Closes #27.
---
 keycast.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/keycast.el b/keycast.el
index 2ae77e35fc..e89a824285 100644
--- a/keycast.el
+++ b/keycast.el
@@ -670,10 +670,12 @@ t to show the actual COMMAND, or a symbol to be shown 
instead."
    (keycast-log-mode
     (add-hook 'post-command-hook #'keycast--update t)
     (add-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit t)
+    (keycast-log--set-focus-properties t)
     (keycast-log-update-buffer))
    ((not (keycast--mode-active-p))
     (remove-hook 'post-command-hook #'keycast--update)
-    (remove-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit))))
+    (remove-hook 'minibuffer-exit-hook #'keycast--minibuffer-exit)
+    (keycast-log--set-focus-properties nil))))
 
 (defun keycast-log-update-buffer ()
   (let ((buf (get-buffer keycast-log-buffer-name)))
@@ -699,6 +701,15 @@ t to show the actual COMMAND, or a symbol to be shown 
instead."
           (insert output))
         (goto-char (if keycast-log-newest-first (point-min) (point-max)))))))
 
+(defun keycast-log--set-focus-properties (value)
+  (when-let* ((buffer (get-buffer keycast-log-buffer-name))
+              (window (get-buffer-window buffer t))
+              (frame (window-frame window)))
+    (when (cdr (assq 'no-accept-focus keycast-log-frame-alist))
+      (set-frame-parameter frame 'no-accept-focus value))
+    (when (cdr (assq 'no-accept-on-map keycast-log-frame-alist))
+      (set-frame-parameter frame 'no-focus-on-map value))))
+
 (defun keycast-log-erase-buffer ()
   "Erase the contents of `keycast-log-mode's buffer."
   (interactive)

Reply via email to