[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 15cdf8f 5/6: Unmanage X windows on exit
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm 15cdf8f 5/6: Unmanage X windows on exit |
Date: |
Sun, 07 Feb 2016 03:41:53 +0000 |
branch: externals/exwm
commit 15cdf8f5897183adf5426ecc280eb61626e2c980
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Unmanage X windows on exit
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): New function
called on exit to unmanage X windows.
(exwm-workspace--init): Set `confirm-kill-emacs' to
`exwm-workspace--confirm-kill-emacs'.
* exwm-manage.el (exwm-manage--on-UnmapNotify): Ignore UnmapNotify event
generated as a result of parent being resized.
---
exwm-manage.el | 6 ++++--
exwm-workspace.el | 20 ++++++++++++++------
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/exwm-manage.el b/exwm-manage.el
index b32d677..b899afb 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -421,8 +421,10 @@ Would you like to kill it? "
(unless synthetic
(let ((obj (make-instance 'xcb:UnmapNotify)))
(xcb:unmarshal obj data)
- (exwm--log "UnmapNotify from #x%x" (slot-value obj 'window))
- (exwm-manage--unmanage-window (slot-value obj 'window) t))))
+ (with-slots (window from-configure) obj
+ (unless from-configure ;the parent is being resized
+ (exwm--log "UnmapNotify from #x%x" window)
+ (exwm-manage--unmanage-window window t))))))
(defun exwm-manage--on-DestroyNotify (data synthetic)
"Handle DestroyNotify event."
diff --git a/exwm-workspace.el b/exwm-workspace.el
index b166733..f65c557 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -454,16 +454,24 @@ This functions is modified from
`display-buffer-reuse-window' and
(cancel-timer exwm-workspace--display-echo-area-timer)
(setq exwm-workspace--display-echo-area-timer nil)))
+(defun exwm-workspace--confirm-kill-emacs (prompt)
+ "Confirm before exiting Emacs."
+ (when (pcase (length exwm--id-buffer-alist)
+ (0 (y-or-n-p prompt))
+ (x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
+ x (if (= x 1) "" "s") prompt))))
+ (dolist (i exwm--id-buffer-alist)
+ (exwm-manage--unmanage-window (car i) t)
+ (xcb:+request exwm--connection
+ (make-instance 'xcb:MapWindow :window (car i))))
+ (xcb:flush exwm--connection)
+ t))
+
(defun exwm-workspace--init ()
"Initialize workspace module."
(cl-assert (and (< 0 exwm-workspace-number) (>= 10 exwm-workspace-number)))
;; Prevent unexpected exit
- (setq confirm-kill-emacs
- (lambda (prompt)
- (pcase (length exwm--id-buffer-alist)
- (0 (y-or-n-p prompt))
- (x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
- x (if (= x 1) "" "s") prompt))))))
+ (setq confirm-kill-emacs #'exwm-workspace--confirm-kill-emacs)
(if (not (exwm-workspace--minibuffer-own-frame-p))
;; Initialize workspaces with minibuffers.
(progn
- [elpa] externals/exwm updated (97daba2 -> fb9bfd2), Chris Feng, 2016/02/06
- [elpa] externals/exwm 3d643fa 3/6: Remove an assertion, Chris Feng, 2016/02/06
- [elpa] externals/exwm fb9bfd2 6/6: Eliminate compilation warnings, Chris Feng, 2016/02/06
- [elpa] externals/exwm 0006523 1/6: Resize minibuffer only when it's in its own frame, Chris Feng, 2016/02/06
- [elpa] externals/exwm e9e476c 2/6: Merge branch 'fjl-fix-resize-minibuffer', Chris Feng, 2016/02/06
- [elpa] externals/exwm e2edf81 4/6: Add some useful key bindings, Chris Feng, 2016/02/06
- [elpa] externals/exwm 15cdf8f 5/6: Unmanage X windows on exit,
Chris Feng <=