summaryrefslogtreecommitdiff
path: root/lisp/frameset.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2019-08-18 01:40:32 +0300
committerJuri Linkov <juri@linkov.net>2019-08-18 01:40:32 +0300
commit6616806896060d95355c965599517d7065c19b86 (patch)
treea5e24222b921dbe886511e2dc3b00245b056a3b2 /lisp/frameset.el
parentc81c041f605afe9c9fb64d4f821a153dafd6f94d (diff)
downloademacs-6616806896060d95355c965599517d7065c19b86.tar.gz
* lisp/frameset.el (frameset-restore): Make sure last-focus frame has focus.
Call select-frame-set-input-focus to restore focus on the frame that had last-focus-update frame parameter before saving frameset. (Bug#36894)
Diffstat (limited to 'lisp/frameset.el')
-rw-r--r--lisp/frameset.el10
1 files changed, 10 insertions, 0 deletions
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 60b6fe38ad9..9a7a75f5efc 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -1346,6 +1346,16 @@ All keyword parameters default to nil."
(error
(delay-warning 'frameset (error-message-string err) :warning))))))
+ ;; Make sure the frame with last-focus-update has focus.
+ (let ((last-focus-frame
+ (catch 'last-focus
+ (maphash (lambda (frame _)
+ (when (frame-parameter frame 'last-focus-update)
+ (throw 'last-focus frame)))
+ frameset--action-map))))
+ (when last-focus-frame
+ (select-frame-set-input-focus last-focus-frame)))
+
;; Make sure there's at least one visible frame.
(unless (or (daemonp)
(catch 'visible