Change focus for sloppy-select-window in manage-focus only on child change
authorPhilippe Brochard <pbrochard@common-lisp.net>
Mon, 3 Jun 2013 20:42:21 +0000 (3 22:42 +0200)
committerPhilippe Brochard <pbrochard@common-lisp.net>
Mon, 3 Jun 2013 20:42:21 +0000 (3 22:42 +0200)
src/clfswm-internal.lisp
src/clfswm-util.lisp
src/clfswm.lisp
src/config.lisp

index f42b8a8..bf1c3f6 100644 (file)
@@ -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
index 68e00a6..0187a9f 100644 (file)
@@ -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))))
 
index d6c75bf..884372b 100644 (file)
 (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)
index 19e3058..3cd3c35 100644 (file)
@@ -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