[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 5373c1d 57/64: Add support for xcb:Atom:_NET_CLIEN
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm 5373c1d 57/64: Add support for xcb:Atom:_NET_CLIENT_LIST_STACKING etc |
Date: |
Thu, 17 Sep 2015 23:18:11 +0000 |
branch: externals/exwm
commit 5373c1df1a8432f6a54e8ded8c9a145842c067e2
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Add support for xcb:Atom:_NET_CLIENT_LIST_STACKING etc
The _NET_CLIENT_LIST_STACKING EWMH property is essential for e.g. the
tabbar of
chromium to work correctly.
* exwm-input.el: Remove invalid TODO item.
* exwm.el (exwm--init-icccm-ewmh): Add xcb:Atom:_NET_CLIENT_LIST and
xcb:Atom:_NET_CLIENT_LIST_STACKING to _NET_SUPPORTED.
* exwm-layout.el (exwm-layout--refresh): Update _NET_CLIENT_LIST_STACKING.
* exwm-manage.el (exwm-manage--manage-window, exwm-manage--unmanage-window):
Update _NET_CLIENT_LIST.
---
exwm-input.el | 1 -
exwm-layout.el | 15 ++++++++++++++-
exwm-manage.el | 9 +++++++++
exwm.el | 2 ++
4 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/exwm-input.el b/exwm-input.el
index 69d2aff..afa619b 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -32,7 +32,6 @@
;; + Simulation keys to mimic Emacs key bindings for text edit (redo, select,
;; cancel, clear, etc). Some of them are not present on common keyboard
;; (keycode = 0). May need to use XKB extension.
-;; + Investigate DnD support (e.g. drag a chromium tab to another window).
;;; Code:
diff --git a/exwm-layout.el b/exwm-layout.el
index a14651a..ae1f48d 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -239,7 +239,20 @@
(with-current-buffer (window-buffer window)
(when (and (eq major-mode 'exwm-mode)
(or exwm--floating-frame (not (eq frame exwm--frame))))
- (set-window-buffer window placeholder)))))))
+ (set-window-buffer window placeholder))))
+ ;; Update _NET_CLIENT_LIST_STACKING
+ (xcb:+request exwm--connection
+ (make-instance 'xcb:ewmh:set-_NET_CLIENT_LIST_STACKING
+ :window exwm--root
+ :data (vconcat
+ (delq nil
+ (mapcar
+ (lambda (buffer)
+ (with-current-buffer buffer
+ (when (eq major-mode 'exwm-mode)
+ exwm--id)))
+ (buffer-list))))))
+ (xcb:flush exwm--connection))))
(defun exwm-layout--on-minibuffer-setup ()
"Refresh layout when minibuffer grows."
diff --git a/exwm-manage.el b/exwm-manage.el
index a8d0e59..2636c01 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -128,6 +128,10 @@ corresponding buffer.")
:cursor xcb:Cursor:None
:button xcb:ButtonIndex:Any
:modifiers xcb:ModMask:Any))
+ (xcb:+request exwm--connection ;update _NET_CLIENT_LIST
+ (make-instance 'xcb:ewmh:set-_NET_CLIENT_LIST
+ :window exwm--root
+ :data (vconcat (mapcar #'car exwm--id-buffer-alist))))
(xcb:flush exwm--connection)
(exwm--update-title id)
(exwm--update-transient-for id)
@@ -150,6 +154,11 @@ corresponding buffer.")
(let ((buffer (exwm--id->buffer id)))
(exwm--log "Unmanage #x%x (buffer: %s)" id buffer)
(setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
+ (xcb:+request exwm--connection ;update _NET_CLIENT_LIST
+ (make-instance 'xcb:ewmh:set-_NET_CLIENT_LIST
+ :window exwm--root
+ :data (vconcat (mapcar #'car exwm--id-buffer-alist))))
+ (xcb:flush exwm--connection)
(when (buffer-live-p buffer)
(with-current-buffer buffer
(exwm-workspace--update-switch-history)
diff --git a/exwm.el b/exwm.el
index 84fbc15..bf45e40 100644
--- a/exwm.el
+++ b/exwm.el
@@ -417,6 +417,8 @@
(make-instance 'xcb:ewmh:set-_NET_SUPPORTED
:window exwm--root
:data (vector xcb:Atom:_NET_SUPPORTED
+ xcb:Atom:_NET_CLIENT_LIST
+ xcb:Atom:_NET_CLIENT_LIST_STACKING
xcb:Atom:_NET_NUMBER_OF_DESKTOPS
xcb:Atom:_NET_DESKTOP_VIEWPORT
xcb:Atom:_NET_CURRENT_DESKTOP
- [elpa] externals/exwm 5f9f673 47/64: Fix window size calculations, (continued)
- [elpa] externals/exwm 5f9f673 47/64: Fix window size calculations, Chris Feng, 2015/09/17
- [elpa] externals/exwm 7032ee7 48/64: Re-enable complete refresh of keyboard mapping, Chris Feng, 2015/09/17
- [elpa] externals/exwm 981293f 44/64: Replay KeyPress events instead of fake them in line-mode, Chris Feng, 2015/09/17
- [elpa] externals/exwm f7bec7a 51/64: Minor fix, Chris Feng, 2015/09/17
- [elpa] externals/exwm 5222dc1 49/64: Avoid deleting the frame created by Emacs client by accident, Chris Feng, 2015/09/17
- [elpa] externals/exwm f1d37b9 53/64: Ungrab pointer timely when resizing is aborted, Chris Feng, 2015/09/17
- [elpa] externals/exwm 76f4849 50/64: Drop intro to xelb-util, Chris Feng, 2015/09/17
- [elpa] externals/exwm 9eee94e 52/64: Merge pull request #52 from pipcet/minor-fix, Chris Feng, 2015/09/17
- [elpa] externals/exwm 637ac15 55/64: Code cleanups, Chris Feng, 2015/09/17
- [elpa] externals/exwm b50a6e6 45/64: Correct several EWMH properties, Chris Feng, 2015/09/17
- [elpa] externals/exwm 5373c1d 57/64: Add support for xcb:Atom:_NET_CLIENT_LIST_STACKING etc,
Chris Feng <=
- [elpa] externals/exwm eafd031 56/64: Allow hide/show mode-line on floating frames, Chris Feng, 2015/09/17
- [elpa] externals/exwm 1d43515 59/64: Allow switch to normal buffers in exwm-workspace-switch-to-window, Chris Feng, 2015/09/17
- [elpa] externals/exwm 3f2f844 58/64: Add a command to interactively move X window to the current workspace, Chris Feng, 2015/09/17
- [elpa] externals/exwm cfbd9a5 61/64: Minor fix for window move, Chris Feng, 2015/09/17
- [elpa] externals/exwm 576a676 62/64: Fix with-slots, Chris Feng, 2015/09/17
- [elpa] externals/exwm dbcabe7 60/64: Implement move/resize with keyboard, Chris Feng, 2015/09/17
- [elpa] externals/exwm 10a7fe8 01/64: First commit, Chris Feng, 2015/09/17
- [elpa] externals/exwm 4255f07 64/64: On-demand update exwm-workspace--switch-history, Chris Feng, 2015/09/17
- [elpa] externals/exwm 6d63c71 54/64: Prepare for GNU ELPA release, Chris Feng, 2015/09/17
- [elpa] externals/exwm b458d5a 63/64: Allow showing buffers on other workspaces and moving an X window by switching, Chris Feng, 2015/09/17