[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm c8c0bc7: Neglect trivial resizing requests
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm c8c0bc7: Neglect trivial resizing requests |
Date: |
Fri, 11 Mar 2016 06:13:23 +0000 |
branch: externals/exwm
commit c8c0bc7b60c043d47e153e40c2ae139f513e9358
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Neglect trivial resizing requests
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Neglect trivial
resizing requests since that cannot be done precisely.
---
exwm-manage.el | 52 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/exwm-manage.el b/exwm-manage.el
index bb6d5ff..b0657b9 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -407,10 +407,14 @@ Would you like to kill it? "
(xcb:+request exwm--connection ,request))))
(xcb:flush exwm--connection)))
+;; FIXME: Make the following values as small as possible.
+(defconst exwm-manage--width-delta-min 5)
+(defconst exwm-manage--height-delta-min 5)
+
(defun exwm-manage--on-ConfigureRequest (data _synthetic)
"Handle ConfigureRequest event."
(let ((obj (make-instance 'xcb:ConfigureRequest))
- buffer edges)
+ buffer edges width-delta height-delta)
(xcb:unmarshal obj data)
(with-slots (window x y width height
border-width sibling stack-mode value-mask)
@@ -421,7 +425,29 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
border-width sibling stack-mode)
(if (and (setq buffer (exwm--id->buffer window))
(with-current-buffer buffer
- (or exwm--fullscreen (not exwm--floating-frame))))
+ (or exwm--fullscreen
+ ;; Make sure it's a floating X window wanting to resize
+ ;; itself.
+ (or (not exwm--floating-frame)
+ (progn
+ (setq edges
+ (window-inside-pixel-edges
+ (get-buffer-window buffer t))
+ width-delta (- width (- (elt edges 2)
+ (elt edges 0)))
+ height-delta (- height (- (elt edges 3)
+ (elt edges 1))))
+ ;; We cannot do resizing precisely for now.
+ (and (if (= 0 (logand value-mask
+ xcb:ConfigWindow:Width))
+ t
+ (< (abs width-delta)
+ exwm-manage--width-delta-min))
+ (if (= 0 (logand value-mask
+ xcb:ConfigWindow:Height))
+ t
+ (< (abs height-delta)
+ exwm-manage--height-delta-min))))))))
;; Send client message for managed windows
(with-current-buffer buffer
(setq edges
@@ -449,16 +475,18 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
(if buffer
(with-current-buffer buffer
(exwm--log "ConfigureWindow (resize floating X window)")
- (setq edges
- (window-inside-pixel-edges (get-buffer-window buffer t)))
- (set-frame-size exwm--floating-frame
- (+ width
- (- (frame-pixel-width exwm--floating-frame)
- (- (elt edges 2) (elt edges 0))))
- (+ height
- (- (frame-pixel-height exwm--floating-frame)
- (- (elt edges 3) (elt edges 1))))
- t))
+ (when (and (/= 0 (logand value-mask xcb:ConfigWindow:Width))
+ (>= (abs width-delta) exwm-manage--width-delta-min))
+ (set-frame-width exwm--floating-frame
+ (+ (frame-pixel-width exwm--floating-frame)
+ width-delta)
+ nil t))
+ (when (and (/= 0 (logand value-mask xcb:ConfigWindow:Height))
+ (>= (abs height-delta) exwm-manage--height-delta-min))
+ (set-frame-height exwm--floating-frame
+ (+ (frame-pixel-height exwm--floating-frame)
+ height-delta)
+ nil t)))
(exwm--log "ConfigureWindow (preserve geometry)")
;; Configure the unmanaged window.
(xcb:+request exwm--connection
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/exwm c8c0bc7: Neglect trivial resizing requests,
Chris Feng <=