>From 452c4c2699080004a8c0322e9400f7416614f374 Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Fri, 26 Nov 2010 17:34:09 +0100 Subject: [PATCH 2/6] focus everywhere in the window --- floating-group.lisp | 37 ++++++++++++++++++------------------- 1 files changed, 18 insertions(+), 19 deletions(-) diff --git a/floating-group.lisp b/floating-group.lisp index f72aed2..c1566ac 100644 --- a/floating-group.lisp +++ b/floating-group.lisp @@ -189,21 +189,23 @@ (defmethod group-button-press ((group float-group) x y (window float-window)) (let ((screen (group-screen group))) - (cond - ((or (< x (xlib:drawable-x (window-xwin window))) - (> x (+ (xlib:drawable-width (window-xwin window)) - (xlib:drawable-x (window-xwin window)))) - (< y (xlib:drawable-y (window-xwin window))) - (> y (+ (xlib:drawable-height (window-xwin window)) - (xlib:drawable-y (window-xwin window))))) - (multiple-value-bind (relx rely same-screen-p child state-mask) - (xlib:query-pointer (window-parent window)) - (declare (ignore same-screen-p child)) - (let ((initial-width (xlib:drawable-width (slot-value window 'parent))) - (initial-height (xlib:drawable-height (slot-value window 'parent)))) - (labels ((move-window-event-handler (&rest event-slots &key event-key &allow-other-keys) - (case event-key - (:button-release + (unless (eq *mouse-focus-policy* :sloppy) + (focus-window window)) + (when (or (< x (xlib:drawable-x (window-xwin window))) + (> x (+ (xlib:drawable-width (window-xwin window)) + (xlib:drawable-x (window-xwin window)))) + (< y (xlib:drawable-y (window-xwin window))) + (> y (+ (xlib:drawable-height (window-xwin window)) + (xlib:drawable-y (window-xwin window))))) + (multiple-value-bind (relx rely same-screen-p child state-mask) + (xlib:query-pointer (window-parent window)) + (declare (ignore same-screen-p child)) + (let ((initial-width (xlib:drawable-width (slot-value window 'parent))) + (initial-height (xlib:drawable-height (slot-value window 'parent)))) + (labels ((move-window-event-handler + (&rest event-slots &key event-key &allow-other-keys) + (case event-key + (:button-release :done) (:motion-notify (with-slots (parent) window @@ -247,10 +249,7 @@ (update-configuration window) ;; don't forget to update the cache (setf (window-x window) (xlib:drawable-x (window-parent window)) - (window-y window) (xlib:drawable-y (window-parent window))))))) - (t - (unless (eq *mouse-focus-policy* :sloppy) - (focus-window window)))))) + (window-y window) (xlib:drawable-y (window-parent window))))))))) (defmethod group-button-press ((group float-group) x y where) (declare (ignore x y where)) -- 1.7.6