From d5e80bb911b496f1a1a9836cb2884cf64b532fb5 Mon Sep 17 00:00:00 2001 From: Philippe Brochard Date: Mon, 3 Jun 2013 22:42:21 +0200 Subject: [PATCH] Change focus for sloppy-select-window in manage-focus only on child change --- src/clfswm-internal.lisp | 6 +++--- src/clfswm-util.lisp | 3 +-- src/clfswm.lisp | 2 +- src/config.lisp | 28 ++++++++++++++-------------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/clfswm-internal.lisp b/src/clfswm-internal.lisp index f42b8a8..bf1c3f6 100644 --- a/src/clfswm-internal.lisp +++ b/src/clfswm-internal.lisp @@ -1676,7 +1676,7 @@ managed." (frame-selected-pos parent) 0))) -(let ((lx -1) (ly -1)) +(let ((last-child nil)) (defun manage-focus (window root-x root-y) (case (if (frame-p (current-child)) (frame-focus-policy (current-child)) @@ -1699,8 +1699,8 @@ managed." (need-warp-pointer (not (or (frame-p child) (child-equal-p child (frame-selected-child parent)))))) (unless (or (child-root-p child) - (= lx root-x) (= ly root-y)) - (setf lx root-x ly root-y) + (child-equal-p child last-child)) + (setf last-child child) (when (focus-all-children child parent) (show-all-children) (when (and need-warp-pointer diff --git a/src/clfswm-util.lisp b/src/clfswm-util.lisp index 68e00a6..0187a9f 100644 --- a/src/clfswm-util.lisp +++ b/src/clfswm-util.lisp @@ -1807,8 +1807,7 @@ For window: set current child to window or its parent according to window-parent (put-child-on-top window parent) (when maximized (change-root (find-root parent) parent)) - (when *steal-focus* - (focus-all-children window parent)) + (focus-all-children window parent) (show-all-children t)) (funcall run-fn)))) diff --git a/src/clfswm.lisp b/src/clfswm.lisp index d6c75bf..884372b 100644 --- a/src/clfswm.lisp +++ b/src/clfswm.lisp @@ -126,7 +126,7 @@ (define-handler main-mode :enter-notify (window root-x root-y) (unless (and (> root-x (- (xlib:screen-width *screen*) 3)) (> root-y (- (xlib:screen-height *screen*) 3))) - (manage-focus window root-x root-y))) + (manage-focus window root-x root-y))) (define-handler main-mode :exposure (window) diff --git a/src/config.lisp b/src/config.lisp index 19e3058..3cd3c35 100644 --- a/src/config.lisp +++ b/src/config.lisp @@ -32,8 +32,8 @@ ;;; CONFIG - Default modifiers -(defconfig *default-modifiers* '() nil - "Default modifiers list to append to explicit modifiers +(defconfig *default-modifiers* '() + nil "Default modifiers list to append to explicit modifiers Example: :mod-2 for num_lock, :lock for Caps_lock...") @@ -59,24 +59,24 @@ Example: :mod-2 for num_lock, :lock for Caps_lock...") A list of (list match-function handle-function)") -(defconfig *steal-focus* t nil - "Allow to streal the focus on configure request") +(defconfig *steal-focus* t + nil "Allow to steal the focus on configure request") -(defconfig *hide-unmanaged-window* t nil - "Hide or not unmanaged windows when a child is deselected.") +(defconfig *hide-unmanaged-window* t + nil "Hide or not unmanaged windows when a child is deselected.") -(defconfig *snap-size* 5 nil - "Snap size (in % of parent size) when move or resize frame is constrained") +(defconfig *snap-size* 5 + nil "Snap size (in % of parent size) when move or resize frame is constrained") -(defconfig *spatial-move-delay-before* 0.2 nil - "Delay to display the current child before doing a spatial move") +(defconfig *spatial-move-delay-before* 0.2 + nil "Delay to display the current child before doing a spatial move") -(defconfig *spatial-move-delay-after* 0.5 nil - "Delay to display the new child after doing a spatial move") +(defconfig *spatial-move-delay-after* 0.5 + nil "Delay to display the new child after doing a spatial move") -(defconfig *corner-size* 3 'Corner - "The size of the corner square") +(defconfig *corner-size* 3 + 'Corner "The size of the corner square") ;;; CONFIG: Corner actions - See in clfswm-corner.lisp for ;;; allowed functions -- 2.11.4.GIT