From 3edf2e8880aff11803f4d4889914e05c3543e6e7 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Mon, 9 Oct 2017 00:29:05 +0800 Subject: [PATCH] Fix systemtray applications crash when restarting * exwm-systemtray.el (exwm-systemtray--exit): Reparent out the tray embedder to protect tray icons. --- exwm-systemtray.el | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/exwm-systemtray.el b/exwm-systemtray.el index 48bd8eacb..4fc7ded33 100644 --- a/exwm-systemtray.el +++ b/exwm-systemtray.el @@ -480,6 +480,18 @@ You shall use the default value if using auto-hide minibuffer.") (defun exwm-systemtray--exit () "Exit the systemtray module." (when exwm-systemtray--connection + ;; Hide & reparent out the embedder before disconnection to prevent + ;; embedded icons from being reparented to an Emacs frame (which is the + ;; parent of the embedder). + (xcb:+request exwm-systemtray--connection + (make-instance 'xcb:UnmapWindow + :window exwm-systemtray--embedder)) + (xcb:+request exwm-systemtray--connection + (make-instance 'xcb:ReparentWindow + :window exwm-systemtray--embedder + :parent exwm--root + :x 0 + :y 0)) (xcb:disconnect exwm-systemtray--connection) (setq exwm-systemtray--connection nil exwm-systemtray--list nil