Fix 2 dock-related issues

* exwm-floating.el (exwm-floating--set-floating): Add a workaround to
prevent accidental move of Emacs frame when struts are set.

* exwm-workspace.el (exwm-workspace--update-workareas): Make legacy
docks working.
This commit is contained in:
Chris Feng 2016-07-18 12:55:27 +08:00
parent 1a716d3939
commit c22f35620f
2 changed files with 29 additions and 13 deletions

View file

@ -70,6 +70,7 @@
(defvar exwm-workspace--list)
(defvar exwm-workspace-current-index)
(defvar exwm-workspace--switch-history-outdated)
(defvar exwm-workspace--struts)
(declare-function exwm-layout--refresh "exwm-layout.el" ())
(declare-function exwm-layout--show "exwm-layout.el" (id &optional window))
@ -242,7 +243,18 @@
(exwm-floating-hide))
(with-selected-frame exwm-workspace--current
(exwm-layout--refresh))
(select-frame-set-input-focus frame)))
(select-frame-set-input-focus frame))
;; FIXME: Strangely, the Emacs frame can move itself at this point
;; when there are left/top struts set. Force resetting its
;; position seems working, but it'd better to figure out why.
(when exwm-workspace--struts
(xcb:+request exwm--connection
(make-instance 'xcb:ConfigureWindow
:window outer-id
:value-mask (logior xcb:ConfigWindow:X
xcb:ConfigWindow:Y)
:x 0 :y 0))
(xcb:flush exwm--connection)))
(run-hooks 'exwm-floating-setup-hook)
;; Redraw the frame.
(redisplay))