[clfswm-cvs] CVS clfswm

pbrochard pbrochard at common-lisp.net
Tue Dec 25 22:52:16 UTC 2007


Update of /project/clfswm/cvsroot/clfswm
In directory clnet:/tmp/cvs-serv17241

Modified Files:
	ChangeLog bindings-second-mode.lisp clfswm-internal.lisp 
Log Message:
hide-group and less flickering when moving/resizing groups

--- /project/clfswm/cvsroot/clfswm/ChangeLog	2007/12/22 22:55:26	1.4
+++ /project/clfswm/cvsroot/clfswm/ChangeLog	2007/12/25 22:52:16	1.5
@@ -1,10 +1,22 @@
+2007-12-25  Philippe Brochard  <hocwp at free.fr>
+
+	* bindings-second-mode.lisp (mouse-motion): use hide-group to have
+	less flickering when moving/resizing groups.
+
+	* clfswm-internal.lisp (hide-group): new function.
+	(show-all-group): clear-all: new parameter.
+
 2007-12-22  Philippe Brochard  <hocwp at free.fr>
 
-	* clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new macro.
-	* clfswm: Color change for the pager. Typo or better description
+	* clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
+	macro.
+	* clfswm*: Color change for the pager. Typo or better description
 	in bindings definitions. Define bindings for a qwerty keyboard by
-	default. dot-clfswmrc show examples to switch to an azerty keyboard.
-	* config.lisp: new file - group all globals variables in this file.
+	default. dot-clfswmrc show examples to switch to an azerty
+	keyboard. 
+	License change to GPL v3.
+	* config.lisp: new file - group all globals variables in this
+	file.
 	
 2007-08-26  Philippe Brochard  <hocwp at free.fr>
 
--- /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp	2007/12/22 22:55:26	1.5
+++ /project/clfswm/cvsroot/clfswm/bindings-second-mode.lisp	2007/12/25 22:52:16	1.6
@@ -1,7 +1,7 @@
 ;;; --------------------------------------------------------------------------
 ;;; CLFSWM - FullScreen Window Manager
 ;;;
-;;; #Date#: Sat Dec 22 23:31:58 2007
+;;; #Date#: Tue Dec 25 23:09:55 2007
 ;;;
 ;;; --------------------------------------------------------------------------
 ;;; Documentation: Bindings keys and mouse for second mode
@@ -428,16 +428,18 @@
 	(setf accept-motion t))
     (case *motion-action*
       (:move-group
+       (hide-group *root* *motion-object*)
        (setf (group-x *motion-object*) (+ root-x *motion-dx*)
 	     (group-y *motion-object*) (+ root-y *motion-dy*))
        (adapt-all-window-in-group *motion-object*)
-       (show-all-group (current-workspace)))
+       (show-all-group (current-workspace) *root* *root-gc* nil))
       (:resize-group
+       (hide-group *root* *motion-object*)
        (setf (group-width *motion-object*) (max (+ (group-width *motion-object*) (- root-x *motion-dx*)) 100)
 	     (group-height *motion-object*) (max (+ (group-height *motion-object*) (- root-y *motion-dy*)) 100)
 	     *motion-dx* root-x *motion-dy* root-y)
        (adapt-all-window-in-group *motion-object*)
-       (show-all-group (current-workspace))))))
+       (show-all-group (current-workspace) *root* *root-gc* nil)))))
 
 
 
--- /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp	2007/12/21 22:01:14	1.4
+++ /project/clfswm/cvsroot/clfswm/clfswm-internal.lisp	2007/12/25 22:52:16	1.5
@@ -1,7 +1,7 @@
 ;;; --------------------------------------------------------------------------
 ;;; CLFSWM - FullScreen Window Manager
 ;;;
-;;; #Date#: Fri Dec 21 23:00:08 2007
+;;; #Date#: Tue Dec 25 23:17:49 2007
 ;;;
 ;;; --------------------------------------------------------------------------
 ;;; Documentation: Main functions
@@ -180,6 +180,13 @@
 
 
 
+(defun hide-group (root group)
+  (multiple-value-bind (x y width height)
+      (get-group-size group)
+    (clear-area root :x (1- x) :y (1- y) :width (+ width 2) :height (+ height 2))))
+
+
+
 (defun show-group (root gc group)
   (when (and gc group)
     (handler-case
@@ -197,12 +204,16 @@
 
 
 
-(defun show-all-group (workspace &optional (root *root*) (gc *root-gc*))
-  "Show all groups in workspace"
+(defun show-all-group (workspace &optional (root *root*) (gc *root-gc*) (clear-all :hide-each))
+  "Show all groups in workspace
+clear-all: nil=do not clear; t=clear all root window; :hide-each=clear each group before redrawing"
   (handler-case
       (progn
-	(clear-area root)
+	(when clear-all
+	  (clear-area root))
 	(dolist (group (reverse (workspace-group-list workspace)))
+	  (when (eql clear-all :hide-each)
+	    (hide-group root group))
 	  (show-group root gc group)))
     ((or match-error window-error drawable-error) (c)
       (declare (ignore c)))))




More information about the clfswm-cvs mailing list