From ihatchondo at common-lisp.net Sat Nov 1 09:41:49 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Sat, 01 Nov 2003 04:41:49 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/widgets.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv19500 Modified Files: widgets.lisp Log Message: fix focus loss problem when switching into fullscreen. Date: Sat Nov 1 04:41:49 2003 Author: ihatchondo Index: eclipse/widgets.lisp diff -u eclipse/widgets.lisp:1.17 eclipse/widgets.lisp:1.18 --- eclipse/widgets.lisp:1.17 Thu Oct 9 07:37:08 2003 +++ eclipse/widgets.lisp Sat Nov 1 04:41:49 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: widgets.lisp,v 1.17 2003/10/09 11:37:08 ihatchondo Exp $ +;;; $Id: widgets.lisp,v 1.18 2003/11/01 09:41:49 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -249,7 +249,8 @@ (setf x 0 y 0 w (screen-width) h (screen-height))) (xlib:with-state (window) (setf (window-position window) (values x y) - (drawable-sizes window) (values w h))))) + (drawable-sizes window) (values w h)))) + (focus-widget application 0)) (with-event-mask (*root-window*) (setf (window-position window) (geometry-coordinates fgeometry) (drawable-sizes window) (geometry-sizes fgeometry)) From ihatchondo at common-lisp.net Wed Nov 5 09:12:43 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 05 Nov 2003 04:12:43 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/Makefile.in Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv22461 Modified Files: Makefile.in Log Message: ptch from Christian Lynbech applied. Date: Wed Nov 5 04:12:43 2003 Author: ihatchondo Index: eclipse/Makefile.in diff -u eclipse/Makefile.in:1.7 eclipse/Makefile.in:1.8 --- eclipse/Makefile.in:1.7 Mon Oct 6 13:57:25 2003 +++ eclipse/Makefile.in Wed Nov 5 04:12:43 2003 @@ -1,5 +1,5 @@ # -*- Mode: Makefile -*- -# $Id: Makefile.in,v 1.7 2003/10/06 17:57:25 ihatchondo Exp $ +# $Id: Makefile.in,v 1.8 2003/11/05 09:12:43 ihatchondo Exp $ # # Makefile for Eclipse window manager. @@ -101,7 +101,8 @@ for theme in ${themes} ; do \ test -f "themes/$$theme/theme.o" && \ $(install) -d ${themedir}/$$theme && \ - $(install) ${themedir}/$$theme/theme.o && \ + $(install) themes/$$theme/theme.o \ + ${themedir}/$$theme/theme.o && \ for file in themes/$$theme/*.pnm ; do \ $(install) $$file ${themedir}/$$theme/. ; \ done ; \ From ihatchondo at common-lisp.net Sat Nov 8 19:54:13 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Sat, 08 Nov 2003 14:54:13 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/widgets.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv11742 Modified Files: widgets.lisp Log Message: fix misplaced ignore-errors declarations. Date: Sat Nov 8 14:54:13 2003 Author: ihatchondo Index: eclipse/widgets.lisp diff -u eclipse/widgets.lisp:1.18 eclipse/widgets.lisp:1.19 --- eclipse/widgets.lisp:1.18 Sat Nov 1 04:41:49 2003 +++ eclipse/widgets.lisp Sat Nov 8 14:54:13 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: widgets.lisp,v 1.18 2003/11/01 09:41:49 ihatchondo Exp $ +;;; $Id: widgets.lisp,v 1.19 2003/11/08 19:54:13 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -304,7 +304,7 @@ (when desktop-p (pushnew :_net_wm_state_sticky netwm-state) (add-desktop-application *root* app) - (setf (window-priority window prec-desk) stack-mode)) + (setf (xlib:window-priority window prec-desk) stack-mode)) (setf (netwm:net-wm-state window) netwm-state (window-desktop-num window) +any-desktop+)) (grab-button window :any '(:button-press) :sync-pointer-p t)) @@ -566,9 +566,10 @@ (with-slots (window icon gcontext) application (let ((background (clx-ext::wm-hints-icon-pixmap window)) (width 45) (height 20)) - (if (typep background 'xlib:pixmap) - (multiple-value-setq (width height) (drawable-sizes background)) - (setf background nil)) + (ignore-errors + (if (typep background 'xlib:pixmap) + (multiple-value-setq (width height) (drawable-sizes background)) + (setf background nil))) (ignore-errors (when (and background (= 1 (xlib:drawable-depth background))) (let ((pix (xlib:create-pixmap From ihatchondo at common-lisp.net Mon Nov 10 10:02:55 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 10 Nov 2003 05:02:55 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/system.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv19005 Modified Files: system.lisp Log Message: compile-theme hacking. Should fix theme compiling problem report by Robert Strandh. Date: Mon Nov 10 05:02:54 2003 Author: ihatchondo Index: eclipse/system.lisp diff -u eclipse/system.lisp:1.6 eclipse/system.lisp:1.7 --- eclipse/system.lisp:1.6 Thu Aug 28 10:50:35 2003 +++ eclipse/system.lisp Mon Nov 10 05:02:53 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: User -*- -;;; $Id: system.lisp,v 1.6 2003/08/28 14:50:35 hatchond Exp $ +;;; $Id: system.lisp,v 1.7 2003/11/10 10:02:53 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -79,8 +79,9 @@ ) (defun compile-theme (directory-name) - (let ((i-filespec (merge-pathnames "theme.lisp" directory-name)) - (o-filespec (merge-pathnames "theme.o"))) + (let* ((i-filespec (merge-pathnames "theme.lisp" directory-name)) + (directory-truename (directory-namestring (truename i-filespec))) + (o-filespec (merge-pathnames "theme.o" directory-truename))) (operate-on-system :eclipse :load) (load i-filespec) (compile-file i-filespec :output-file o-filespec))) From ihatchondo at common-lisp.net Thu Nov 13 00:03:52 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 12 Nov 2003 19:03:52 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/gnome-manager.lisp eclipse/lib/manager-commons.lisp eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv2268 Modified Files: gnome-manager.lisp manager-commons.lisp netwm-manager.lisp Log Message: more hacking. Replace make-window-list-setter by define-window-list-property-accessor, that defines both the reader and the writer for the given property atom. Date: Wed Nov 12 19:03:51 2003 Author: ihatchondo Index: eclipse/lib/gnome-manager.lisp diff -u eclipse/lib/gnome-manager.lisp:1.1 eclipse/lib/gnome-manager.lisp:1.2 --- eclipse/lib/gnome-manager.lisp:1.1 Thu Nov 7 09:23:31 2002 +++ eclipse/lib/gnome-manager.lisp Wed Nov 12 19:03:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: GNOME -*- -;;; $Id: gnome-manager.lisp,v 1.1 2002/11/07 14:23:31 hatchond Exp $ +;;; $Id: gnome-manager.lisp,v 1.2 2003/11/13 00:03:50 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -37,7 +37,7 @@ set-workspace-names set-atoms-property get-atoms-property get-window-property - make-window-list-seter) + define-window-list-property-accessor) (:export win-client-list win-workspace-count win-workspace-names win-workspace @@ -92,16 +92,18 @@ ;; Each entry is a window-id of a managed client. -(defun win-client-list (window &key window-list) - (get-window-property window :_WIN_CLIENT_LIST window-list)) - -(make-window-list-seter win-client-list :_WIN_CLIENT_LIST :CARDINAL) - -(defsetf win-client-list (window &key (mode :replace)) (win) - " To set this property give or a single window or a list of window. - you can add or remove one window from the property or - simply replace the actual value by a new list." - `(set-win-client-list ,window ,win ,mode)) +(define-window-list-property-accessor (win-client-list) + :property-atom :_WIN_CLIENT_LIST + :data-type :CARDINAL + :reader-documentation + "Returns the _win_client_list property. + - window: a window + - window-list: if true the returned list is a list of window. Otherwise + the returned list is the list of window-id." + :writer-documentation + "To set this property give or a single window or a list of window. + You can add or remove one window from the property or simply + replace the actual value by a new list.") ;; _WIN_WORKSPACE_COUNT Index: eclipse/lib/manager-commons.lisp diff -u eclipse/lib/manager-commons.lisp:1.1 eclipse/lib/manager-commons.lisp:1.2 --- eclipse/lib/manager-commons.lisp:1.1 Thu Nov 7 09:23:31 2002 +++ eclipse/lib/manager-commons.lisp Wed Nov 12 19:03:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: MANAGER-COMMONS -*- -;;; $Id: manager-commons.lisp,v 1.1 2002/11/07 14:23:31 hatchond Exp $ +;;; $Id: manager-commons.lisp,v 1.2 2003/11/13 00:03:50 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -207,19 +207,25 @@ (lambda (id) (xlib::lookup-window (xlib:drawable-display window) id))))) -(defmacro make-window-list-seter (type atom &optional (data-type :WINDOW)) - (let ((primary (with-standard-io-syntax (format nil "~A" type))) - (setter (with-standard-io-syntax (format nil "SET-~A" type)))) - `(defun ,(intern setter) (window win mode) - (when win - (change-property - window - ,atom - (cond ((eq mode :remove) - (setf mode :replace) - (remove win (,(intern primary) window :window-list t))) - ((listp win) win) - (t (list win))) - ,data-type - 32 - :mode mode :transform #'xlib:window-id))))) +(defmacro define-window-list-property-accessor + ((name) &key property-atom (data-type :window) + reader-documentation writer-documentation) + (let ((reader (with-standard-io-syntax (format nil "~A" name)))) + `(progn + (defun ,(intern reader) (window &key window-list) + ,@(when reader-documentation `(,reader-documentation)) + (get-window-property window ,property-atom window-list)) + (defsetf ,(intern reader) (window &key (mode :replace)) (win) + ,@(when writer-documentation `(,writer-documentation)) + `(when ,win + (change-property + ,window + ,',property-atom + (cond ((eq ,mode :remove) + (remove ,win (,',(intern reader) ,window :window-list t))) + ((listp ,win) ,win) + (t (list ,win))) + ,',data-type + 32 + :mode (if (eq ,mode :remove) :replace ,mode) + :transform #'xlib:window-id)))))) \ No newline at end of file Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.3 eclipse/lib/netwm-manager.lisp:1.4 --- eclipse/lib/netwm-manager.lisp:1.3 Thu Aug 28 10:40:34 2003 +++ eclipse/lib/netwm-manager.lisp Wed Nov 12 19:03:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.3 2003/08/28 14:40:34 hatchond Exp $ +;;; $Id: netwm-manager.lisp,v 1.4 2003/11/13 00:03:50 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -37,7 +37,7 @@ set-workspace-names set-atoms-property get-atoms-property get-window-property - make-window-list-seter) + define-window-list-property-accessor) (:export net-supported net-client-list net-client-list-stacking net-number-of-desktops @@ -140,29 +140,31 @@ ;; _NET_CLIENT_LIST -(defun net-client-list (window &key window-list) - (get-window-property window :_NET_CLIENT_LIST window-list)) - -(make-window-list-seter net-client-list :_NET_CLIENT_LIST) - -(defsetf net-client-list (window &key (mode :replace)) (win) - " To set this property give or a single window or a list of window. - you can add or remove one window from the property or - simply replace the actual value by a new list." - `(set-net-client-list ,window ,win ,mode)) +(define-window-list-property-accessor (net-client-list) + :property-atom :_NET_CLIENT_LIST + :reader-documentation + "Returns the _net_client_list property. + - window: a window + - window-list: if true the returned list is a list of window. Otherwise + the returned list is the list of window-id." + :writer-documentation + "To set this property give or a single window or a list of window. + You can add or remove one window from the property or simply + replace the actual value by a new list.") ;; _NET_CLIENT_LIST_STACKING -(defun net-client-list-stacking (window &key window-list) - (get-window-property window :_NET_CLIENT_LIST_STACKING window-list)) - -(make-window-list-seter net-client-list-stacking :_NET_CLIENT_LIST_STACKING) - -(defsetf net-client-list-stacking (window &key (mode :replace)) (win) - " To set this property give a single window or a list of window. - you can add/remove one window from the property or - simply replace the actual value by a new list." - `(set-net-client-list-stacking ,window ,win ,mode)) +(define-window-list-property-accessor (net-client-list-stacking) + :property-atom :_NET_CLIENT_LIST_STACKING + :reader-documentation + "Returns the _net_client_list_stacking property. + - window: a window + - window-list: if true the returned list is a list of window. Otherwise + the returned list is the list of window-id." + :writer-documentation + "To set this property give a single window or a list of window. + You can add/remove one window from the property or + simply replace the actual value by a new list.") ;; _NET_NUMBER_OF_DESKTOPS @@ -241,16 +243,17 @@ ;; _NET_VIRTUAL_ROOTS -(defun net-virtual-roots (window &key window-list) - (get-window-property window :_NET_VIRTUAL_ROOTS window-list)) - -(make-window-list-seter net-virtual-roots :_NET_VIRTUAL_ROOTS :CARDINAL) - -(defsetf net-virtual-roots (window &key (mode :replace)) (windows) - " To set this property give or a single window or a list of window. - you can add or remove one window from the property or - simply replace the actual value by a new list." - `(set-net-virtual-roots ,window ,windows ,mode)) +(define-window-list-property-accessor (net-virtual-roots) + :property-atom :_NET_VIRTUAL_ROOTS + :reader-documentation + "Returns the _net_virtual_roots property. + - window: a window + - window-list: if true the returned list is a list of window. Otherwise + the returned list is the list of window-id." + :writer-documentation + "To set this property give or a single window or a list of window. + You can add or remove one window from the property or simply + replace the actual value by a new list.") ;; _NET_SHOWING_DESKTOP From ihatchondo at common-lisp.net Thu Nov 13 00:10:17 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 12 Nov 2003 19:10:17 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv6846 Modified Files: netwm-manager.lisp Log Message: net-wm-allowed-actions now use get-atoms-property. Date: Wed Nov 12 19:10:07 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.4 eclipse/lib/netwm-manager.lisp:1.5 --- eclipse/lib/netwm-manager.lisp:1.4 Wed Nov 12 19:03:50 2003 +++ eclipse/lib/netwm-manager.lisp Wed Nov 12 19:10:04 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.4 2003/11/13 00:03:50 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.5 2003/11/13 00:10:04 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -450,11 +450,7 @@ ;; list indicate actions that are not supported for this window. (defun net-wm-allowed-actions (window) - (get-property - window - :_NET_WM_ALLOWED_ACTIONS - :transform #'(lambda (id) - (xlib:atom-name (xlib:drawable-display window) id)))) + (get-atoms-property window :_NET_WM_ALLOWED_ACTIONS t)) (defsetf net-wm-allowed-actions (window &key (mode :replace)) (actions) `(set-atoms-property ,window ,actions :_NET_WM_ALLOWED_ACTIONS :mode ,mode)) From ihatchondo at common-lisp.net Thu Nov 13 00:39:15 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 12 Nov 2003 19:39:15 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv19865 Modified Files: netwm-manager.lisp Log Message: more hacking. Date: Wed Nov 12 19:39:15 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.5 eclipse/lib/netwm-manager.lisp:1.6 --- eclipse/lib/netwm-manager.lisp:1.5 Wed Nov 12 19:10:04 2003 +++ eclipse/lib/netwm-manager.lisp Wed Nov 12 19:39:14 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.5 2003/11/13 00:10:04 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.6 2003/11/13 00:39:14 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -258,7 +258,7 @@ ;; _NET_SHOWING_DESKTOP (defun net-showing-desktop (window) - (zerop (the card-32 (first (get-property window :_NET_SHOWING_DESKTOP))))) + (= 1 (the card-32 (first (get-property window :_NET_SHOWING_DESKTOP))))) (defsetf net-showing-desktop (window) (mode-p) `(change-property ,window @@ -356,11 +356,7 @@ ;; _NET_WM_WINDOW_TYPE (defun net-wm-window-type (window) - (get-property - window - :_NET_WM_WINDOW_TYPE - :transform #'(lambda (id) - (xlib:atom-name (xlib:drawable-display window) id)))) + (get-atoms-property window :_NET_WM_WINDOW_TYPE t)) (defsetf net-wm-window-type (window &key (mode :replace)) (types) `(set-atoms-property ,window ,types :_NET_WM_WINDOW_TYPE :mode ,mode)) @@ -368,11 +364,7 @@ ;; _NET_WM_STATE (defun net-wm-state (window) - (get-property - window - :_NET_WM_STATE - :transform #'(lambda (id) - (xlib:atom-name (xlib:drawable-display window) id)))) + (get-atoms-property window :_NET_WM_STATE t)) (defsetf net-wm-state (window &key (mode :replace)) (states) `(set-atoms-property ,window ,states :_NET_WM_STATE :mode ,mode)) From ihatchondo at common-lisp.net Thu Nov 13 11:02:05 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Thu, 13 Nov 2003 06:02:05 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/eclipse.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv7090 Modified Files: eclipse.lisp Log Message: fix indentation. Date: Thu Nov 13 06:02:05 2003 Author: ihatchondo Index: eclipse/eclipse.lisp diff -u eclipse/eclipse.lisp:1.10 eclipse/eclipse.lisp:1.11 --- eclipse/eclipse.lisp:1.10 Mon Oct 6 13:57:26 2003 +++ eclipse/eclipse.lisp Thu Nov 13 06:02:05 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: eclipse.lisp,v 1.10 2003/10/06 17:57:26 ihatchondo Exp $ +;;; $Id: eclipse.lisp,v 1.11 2003/11/13 11:02:05 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -63,10 +63,10 @@ ;; Check if a non ICCCM complient window manager is not running. (flet ((handle-redirect-error (condition) - (declare (ignorable condition)) - (format *error-output* "Redirect error - another WM is running~%") - (xlib:close-display display) - (%quit%))) + (declare (ignorable condition)) + (format *error-output* "Redirect error - another WM is running~%") + (xlib:close-display display) + (%quit%))) (handler-bind ((error #'handle-redirect-error)) ; xlib:access-error (setf (xlib:window-event-mask root-window) '(:substructure-redirect :button-press :button-release From ihatchondo at common-lisp.net Thu Nov 13 11:12:31 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Thu, 13 Nov 2003 06:12:31 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/input.lisp eclipse/gestures.lisp eclipse/virtual-screen.lisp eclipse/misc.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv9206 Modified Files: input.lisp gestures.lisp virtual-screen.lisp misc.lisp Log Message: Fix incorect handling of the states _net_wm_state_{above, below}. They are permanent as the other states (see inpout.lisp). It implies that the (setf window-priority) should take those state in account when modifying the stack order (see misc.lisp) This have as last implication, that we should work with an external list of window for the window circulation keystrokes. Indeed, if one window has the _net_wm_state_above state then it will always be on top of the others. What means, that will stay stuck on this window during circulation. (see minor signature modification of circulate-window in virtual-screen.lisp, and small hack in gestures.lisp) Date: Thu Nov 13 06:12:28 2003 Author: ihatchondo Index: eclipse/input.lisp diff -u eclipse/input.lisp:1.20 eclipse/input.lisp:1.21 --- eclipse/input.lisp:1.20 Sun Oct 12 17:59:17 2003 +++ eclipse/input.lisp Thu Nov 13 06:12:27 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: input.lisp,v 1.20 2003/10/12 21:59:17 ihatchondo Exp $ +;;; $Id: input.lisp,v 1.21 2003/11/13 11:12:27 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -361,10 +361,15 @@ (maximize-window application 3)) (when (and master (or-eql :_net_wm_state_shaded p1 p2)) (shade master)) - (when (or-eql :_net_wm_state_above p1 p2) - (put-on-top application)) - (when (or-eql :_net_wm_state_below p1 p2) - (put-on-bottom application))))) + (flet ((set-stack-state (s) + (setf (netwm:net-wm-state window) + (if (= 0 mode) (remove s p) (pushnew s p))))) + (when (or-eql :_net_wm_state_above p1 p2) + (set-stack-state :_net_wm_state_above) + (put-on-top application)) + (when (or-eql :_net_wm_state_below p1 p2) + (set-stack-state :_net_wm_state_below) + (put-on-bottom application)))))) (:_NET_WM_DESKTOP (let* ((cur-desk (window-desktop-num window)) (new-desk (aref data 0)) Index: eclipse/gestures.lisp diff -u eclipse/gestures.lisp:1.9 eclipse/gestures.lisp:1.10 --- eclipse/gestures.lisp:1.9 Mon Oct 6 13:57:26 2003 +++ eclipse/gestures.lisp Thu Nov 13 06:12:28 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: gestures.lisp,v 1.9 2003/10/06 17:57:26 ihatchondo Exp $ +;;; $Id: gestures.lisp,v 1.10 2003/11/13 11:12:28 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -329,6 +329,7 @@ (defvar *depth* nil) (defvar *current-widget-info* nil) +(defvar *windows* nil) (defun initialize-circulate-window (root-window dpy) "Initialize gestures internal hooks before circulating windows." @@ -341,7 +342,9 @@ (xlib:grab-keyboard root-window) (unless *current-widget-info* (setf *current-widget-info* (create-message-box nil :parent root-window))) - (setf *depth* 0)) + (let ((i (current-vscreen root-window))) + (setf *windows* (reverse (get-screen-content i :iconify-p *cycle-icons-p*)) + *depth* 0))) (defun circulate-window-modifier-callback (event) (when (typep event 'key-release) @@ -351,30 +354,43 @@ for code = (unless (eq mod :and) (kb:keyname->keycodes *display* mod)) when code do (remhash (cons (if (listp code) (car code) code) #x8000) map)) - (let ((widget (lookup-widget (input-focus *display*)))) + (let ((widget (lookup-widget (car *windows*)))) (when widget (setf (application-wants-iconic-p widget) nil))) (xlib:unmap-window (widget-window *current-widget-info*)) - (setf *depth* nil))) + (setf *depth* nil *windows* nil))) -(defun circulate-window-up-and-down (event dir) - "Make window circulating according to the `dir' argument (or :above :below)." +(defun circulate-window-up-and-down (event direction) + "Circulate windows according to the `direction' argument (or :above :below)." (when (typep event 'key-press) (with-slots ((root-win root)) event (unless *depth* (initialize-circulate-window root-win (xlib:drawable-display root-win))) - (if (eq dir :above) (incf *depth*) (decf *depth*)) - (let ((widget (circulate-window - (lookup-widget root-win) - :direction dir - :nth *depth* - :icon-p *cycle-icons-p*))) - (when (and *verbose-window-cycling* widget) - (with-slots (window) - (if (decoration-p widget) (get-child widget :application) widget) - (setf (message-pixmap *current-widget-info*) - (clx-ext::wm-hints-icon-pixmap window)) - (setf (button-item-to-draw *current-widget-info*) (wm-name window))) - (with-slots (window) *current-widget-info* - (xlib:map-window window) - (setf (xlib:window-priority window) :above) - (repaint *current-widget-info* nil nil))))))) + (unless *windows* (return-from circulate-window-up-and-down nil)) + (circulate-window + (lookup-widget root-win) + :direction direction + :nth (if (eq direction :above) (incf *depth*) (decf *depth*)) + :windows *windows* + :icon-p *cycle-icons-p*)) + (let* ((length (length *windows*)) + (depth-aux (mod *depth* length))) + (cond + ((<= length 1) nil) + ((and (eq direction :above) (= depth-aux 0)) + (setf (cdr (last *windows*)) (list (pop *windows*)))) + ((and (eq direction :below) (= depth-aux (1- length))) + (let ((penultimate-cons (last *windows* 2))) + (push (cadr penultimate-cons) *windows*) + (setf (cdr penultimate-cons) nil))) + (t + (when (eq direction :below) (incf depth-aux)) + (rotatef (nth 0 *windows*) (nth depth-aux *windows*))))) + (when (and *verbose-window-cycling* (car *windows*)) + (with-slots (window) (lookup-widget (car *windows*)) + (setf (message-pixmap *current-widget-info*) + (clx-ext::wm-hints-icon-pixmap window)) + (setf (button-item-to-draw *current-widget-info*) (wm-name window))) + (with-slots (window) *current-widget-info* + (xlib:map-window window) + (setf (xlib:window-priority window) :above) + (repaint *current-widget-info* nil nil))))) Index: eclipse/virtual-screen.lisp diff -u eclipse/virtual-screen.lisp:1.10 eclipse/virtual-screen.lisp:1.11 --- eclipse/virtual-screen.lisp:1.10 Thu Oct 9 07:39:41 2003 +++ eclipse/virtual-screen.lisp Thu Nov 13 06:12:28 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: virtual-screen.lisp,v 1.10 2003/10/09 11:39:41 ihatchondo Exp $ +;;; $Id: virtual-screen.lisp,v 1.11 2003/11/13 11:12:28 ihatchondo Exp $ ;;; ;;;?Copyright (C) 2002 Iban HATCHONDO ;;; contact : hatchond at yahoo.fr @@ -129,14 +129,16 @@ (unless given-p (xlib:set-input-focus *display* :pointer-root :pointer-root)))) -(defmethod circulate-window ((root root) &key direction (nth 0) icon-p) - (let* ((wins (reverse (get-screen-content (current-desk) :iconify-p icon-p))) - (length (length wins))) - (or wins (return-from circulate-window nil)) +(defmethod circulate-window + ((root root) &key direction (nth 0) icon-p windows (desk (current-desk))) + (unless windows + (setf windows (reverse (get-screen-content desk :iconify-p icon-p)))) + (or windows (return-from circulate-window nil)) + (let ((length (length windows))) (setf nth (mod nth length)) (let ((above-p (eq direction :above)) - (focus-dest (nth nth wins)) - (first (lookup-widget (car wins)))) + (focus-dest (nth nth windows)) + (first (lookup-widget (car windows)))) ;; Grab the pointer to avoid enter notify events race concurrence ;; between the window hierarchy change and the warp-pointer call. (with-pointer-grabbed ((widget-window root) nil) @@ -151,15 +153,15 @@ (setf (window-priority window sibling) priority))) (cond ((= length 1) (set-window-priority focus-dest nil :above)) ((= nth 0) - (let ((sibling (if above-p (last wins) (cdr wins)))) - (set-window-priority (car wins) (car sibling) :below) - (setf focus-dest (second wins)))) + (let ((sibling (if above-p (last windows) (cdr windows)))) + (set-window-priority (car windows) (car sibling) :below) + (setf focus-dest (second windows)))) ((or (and (= nth (1- length)) (not above-p)) (and (= nth 1) above-p)) (set-window-priority focus-dest nil :above)) (t (unless above-p - (setf focus-dest (nth (incf nth) wins))) - (set-window-priority (car wins) focus-dest :below) + (setf focus-dest (nth (incf nth) windows))) + (set-window-priority (car windows) focus-dest :below) (set-window-priority focus-dest nil :above)))) (with-slots (master) (setf focus-dest (lookup-widget focus-dest)) (when (and icon-p (application-iconic-p focus-dest)) @@ -168,6 +170,6 @@ (when master (setf focus-dest master))) (when *warp-pointer-when-cycle* (xlib:warp-pointer (widget-window focus-dest) 8 5))) - (when (and (eq *focus-type* :on-click) *focus-when-window-cycle*) + (when *focus-when-window-cycle* (focus-widget focus-dest 0)) focus-dest))) Index: eclipse/misc.lisp diff -u eclipse/misc.lisp:1.12 eclipse/misc.lisp:1.13 --- eclipse/misc.lisp:1.12 Mon Oct 6 13:57:26 2003 +++ eclipse/misc.lisp Thu Nov 13 06:12:28 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: misc.lisp,v 1.12 2003/10/06 17:57:26 ihatchondo Exp $ +;;; $Id: misc.lisp,v 1.13 2003/11/13 11:12:28 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -32,6 +32,10 @@ ;;;; Helpers macros. +(defmacro with-gensym (symbols &body body) + `(let ,(loop for s in symbols collect `(,s (gensym))) + , at body)) + (defmacro screen-width () `(xlib:screen-width (xlib:display-default-screen *display*))) @@ -142,13 +146,62 @@ :format 32 :data (cons (atom-name->id atom) data))) +(defun screen-windows-layers (window &aux (i (window-desktop-num window))) + "Returns, as multiple value, three window lists that corresponds to the + three layers (:_net_wm_state_below none :_net_wm_state_above) of the + virtual screen that the given `window' argument belongs to. The given + window will be filtered." + (loop with n = (if (eql i +any-desktop+) (current-desk) i) + for w in (get-screen-content n) + for nwm-state = (netwm:net-wm-state w) + unless (xlib:window-equal w window) + if (member :_net_wm_state_above nwm-state) collect w into aboves + else if (member :_net_wm_state_below nwm-state) collect w into belows + else collect w into no-stack-state + finally (return (values belows no-stack-state aboves)))) + (defsetf window-priority (window &optional sibling) (priority) - "Set the window priority such as (setf xlib:window-priority) but - also invoke update-client-list-stacking to reflect the priority - change in all the root properties that are involved in." - `(progn - (setf (xlib:window-priority ,window ,sibling) ,priority) - (update-client-list-stacking *root*))) + "Set the window priority such as if done by (setf xlib:window-priority) and + guaranty that stacking order constraints described in the extended window + manager protocol will be respected. Then invokes update-client-list-stacking + to reflect the new order in all the root properties that are involved in." + (with-gensym (above-p wnwm-state snwm-state win sib b m a %priority) + `(flet ((lookup-app-w (widget) + (when (decoration-p widget) + (get-child widget :application :window t))) + (first (windows &optional above-p) + (car (if above-p (last windows) windows)))) + (let* ((,%priority ,priority) + (,win (or (lookup-app-w (lookup-widget ,window)) ,window)) + (,sib (or (lookup-app-w (lookup-widget ,sibling)) ,sibling)) + (,above-p (eq ,priority :above)) + (,wnwm-state (netwm:net-wm-state ,win)) + (,snwm-state (and ,sib (netwm:net-wm-state ,sib)))) + (if (not (application-p (lookup-widget ,win))) + (setf (xlib:window-priority ,window ,sibling) ,priority) + (multiple-value-bind (,b ,m ,a) (screen-windows-layers ,win) + (cond ((member :_net_wm_state_below ,wnwm-state) + (unless (member ,sib ,b) + (setf ,sib (first (or ,b ,m ,a) (and ,b ,above-p))) + (unless ,b (setf ,%priority :below)))) + ((member :_net_wm_state_above ,wnwm-state) + (unless (member ,sib ,a) + (unless (member :_net_wm_state_fullscreen ,snwm-state) + (setf ,sib (first ,a ,above-p)) + (unless ,a (setf ,%priority :above))))) + ((member :_net_wm_state_fullscreen ,wnwm-state) + (when (member ,sib ,b) + (setf ,sib (first (or ,m ,a))) + (setf ,%priority :below))) + ((not (member ,sib ,m)) + (setf ,sib (first (or ,m ,b ,a) (if ,m ,above-p ,b))) + (unless ,m (setf ,%priority (if ,b :above :below))))) + (when (and ,sib (application-master (lookup-widget ,sib))) + (with-slots (master) (lookup-widget ,sib) + (setf ,sib (widget-window master)))) + (when (or ,b ,m ,a) + (setf (xlib:window-priority ,window ,sib) ,%priority) + (update-client-list-stacking *root*)))))))) (defun grab-root-pointer (&key cursor owner-p confine-to) (xlib:grab-pointer @@ -217,8 +270,7 @@ (car (member name (application-list) :test #'equal :key #'application-name))) (defun application-class (app) - (multiple-value-bind (name type) - (xlib:get-wm-class (widget-window app)) + (multiple-value-bind (name type) (xlib:get-wm-class (widget-window app)) (cons name type))) (defun application-class-name (app) From ihatchondo at common-lisp.net Wed Nov 19 10:29:09 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 19 Nov 2003 05:29:09 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/gestures.lisp eclipse/misc.lisp eclipse/move-resize.lisp eclipse/virtual-screen.lisp eclipse/wm.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv32148 Modified Files: gestures.lisp misc.lisp move-resize.lisp virtual-screen.lisp wm.lisp Log Message: More hacking. change get-screen-content for screen-content. Some keyword parameter added. Date: Wed Nov 19 05:29:08 2003 Author: ihatchondo Index: eclipse/gestures.lisp diff -u eclipse/gestures.lisp:1.10 eclipse/gestures.lisp:1.11 --- eclipse/gestures.lisp:1.10 Thu Nov 13 06:12:28 2003 +++ eclipse/gestures.lisp Wed Nov 19 05:29:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: gestures.lisp,v 1.10 2003/11/13 11:12:28 ihatchondo Exp $ +;;; $Id: gestures.lisp,v 1.11 2003/11/19 10:29:08 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -343,7 +343,7 @@ (unless *current-widget-info* (setf *current-widget-info* (create-message-box nil :parent root-window))) (let ((i (current-vscreen root-window))) - (setf *windows* (reverse (get-screen-content i :iconify-p *cycle-icons-p*)) + (setf *windows* (reverse (screen-content i :iconify-p *cycle-icons-p*)) *depth* 0))) (defun circulate-window-modifier-callback (event) Index: eclipse/misc.lisp diff -u eclipse/misc.lisp:1.13 eclipse/misc.lisp:1.14 --- eclipse/misc.lisp:1.13 Thu Nov 13 06:12:28 2003 +++ eclipse/misc.lisp Wed Nov 19 05:29:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: misc.lisp,v 1.13 2003/11/13 11:12:28 ihatchondo Exp $ +;;; $Id: misc.lisp,v 1.14 2003/11/19 10:29:08 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -152,7 +152,7 @@ virtual screen that the given `window' argument belongs to. The given window will be filtered." (loop with n = (if (eql i +any-desktop+) (current-desk) i) - for w in (get-screen-content n) + for w in (screen-content n) for nwm-state = (netwm:net-wm-state w) unless (xlib:window-equal w window) if (member :_net_wm_state_above nwm-state) collect w into aboves Index: eclipse/move-resize.lisp diff -u eclipse/move-resize.lisp:1.8 eclipse/move-resize.lisp:1.9 --- eclipse/move-resize.lisp:1.8 Thu Oct 9 11:04:08 2003 +++ eclipse/move-resize.lisp Wed Nov 19 05:29:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: move-resize.lisp,v 1.8 2003/10/09 15:04:08 ihatchondo Exp $ +;;; $Id: move-resize.lisp,v 1.9 2003/11/19 10:29:08 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -366,7 +366,7 @@ (with-slots (window active-p) widget (setf (window-priority window) :above) (setf active-p t - *screen-windows* (get-screen-content (current-desk)) + *screen-windows* (screen-content (current-desk)) *delta-x* (- (event-root-x event) (xlib:drawable-x window)) *delta-y* (- (event-root-y event) (xlib:drawable-y window))))) Index: eclipse/virtual-screen.lisp diff -u eclipse/virtual-screen.lisp:1.11 eclipse/virtual-screen.lisp:1.12 --- eclipse/virtual-screen.lisp:1.11 Thu Nov 13 06:12:28 2003 +++ eclipse/virtual-screen.lisp Wed Nov 19 05:29:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: virtual-screen.lisp,v 1.11 2003/11/13 11:12:28 ihatchondo Exp $ +;;; $Id: virtual-screen.lisp,v 1.12 2003/11/19 10:29:08 ihatchondo Exp $ ;;; ;;;?Copyright (C) 2002 Iban HATCHONDO ;;; contact : hatchond at yahoo.fr @@ -23,17 +23,23 @@ ;;;; Private -(defun window-belongs-to-vscreen-p (win scr-num iconify-p) +(defun window-belongs-to-vscreen-p + (win scr-num iconify-p skip-taskbar skip-desktop skip-dock) (when (lookup-widget win) (let ((n (or (window-desktop-num win) -1)) (wm-state (car (wm-state win))) - (netwm-type (netwm:net-wm-window-type win))) + (netwm-type (netwm:net-wm-window-type win)) + (netwm-state (netwm:net-wm-state win))) (and (or (= n scr-num) (= n +any-desktop+)) (or (eq wm-state 1) (and iconify-p (eq wm-state 3))) - (not (member :win_hints_skip_taskbar (gnome:win-hints win))) - (not (member :_net_wm_state_skip_taskbar (netwm:net-wm-state win))) - (not (member :_net_wm_window_type_desktop netwm-type)) - (not (member :_net_wm_window_type_dock netwm-type)))))) + (not (and skip-taskbar + (member :_net_wm_state_skip_taskbar netwm-state))) + (not (and skip-taskbar + (member :win_hints_skip_taskbar (gnome:win-hints win)))) + (not (and skip-desktop + (member :_net_wm_window_type_desktop netwm-type))) + (not (and skip-dock + (member :_net_wm_window_type_dock netwm-type))))))) (defun map-or-unmap-vscreen (fun scr-num) (loop for widget being each hash-value in *widget-table* @@ -109,16 +115,28 @@ (or (nth new (workspace-names window)) (format nil "WORKSPACE ~D" new)))))))) -(defun get-screen-content (scr-num &key iconify-p) + +(defun screen-content (scr-num + &key (predicate #'window-belongs-to-vscreen-p) iconify-p + (skip-taskbar t) (skip-desktop t) (skip-dock t)) "Returns the list of application's windows that represent the contents - of the given virtual screen. Use :iconify-p t to includes iconfied windows" - (loop for win in (query-application-tree *root-window*) - when (window-belongs-to-vscreen-p win scr-num iconify-p) collect win)) + of the given virtual screen. + :iconify-p to include or not iconfied windows (default nil). + :skip-taskbar to include window with skip-taskbar hint (default t). + :skip-desktop to include window with desktop window type (default t). + :skip-dock to include window with dock window type (default t). + :predicate a function of six arguments: + window screen-number iconify-p skip-taskbar-p skip-desktop-p skip-dock-p." + (loop with i = (if (eql scr-num +any-desktop+) (current-desk) scr-num) + for w in (query-application-tree *root-window*) + when (funcall + predicate w i iconify-p skip-taskbar skip-desktop skip-dock) + collect w)) (defun give-focus-to-next-widget-in-desktop () "Gives the focus to the window that is on top of the stacking order." (loop with given-p = nil - for window in (reverse (get-screen-content (current-desk))) + for window in (reverse (screen-content (current-desk))) when (eq :viewable (xlib:window-map-state window)) do (with-slots (input-model) (lookup-widget window) (unless (eq input-model :no-input) @@ -132,7 +150,7 @@ (defmethod circulate-window ((root root) &key direction (nth 0) icon-p windows (desk (current-desk))) (unless windows - (setf windows (reverse (get-screen-content desk :iconify-p icon-p)))) + (setf windows (reverse (screen-content desk :iconify-p icon-p)))) (or windows (return-from circulate-window nil)) (let ((length (length windows))) (setf nth (mod nth length)) Index: eclipse/wm.lisp diff -u eclipse/wm.lisp:1.22 eclipse/wm.lisp:1.23 --- eclipse/wm.lisp:1.22 Thu Oct 9 07:37:08 2003 +++ eclipse/wm.lisp Wed Nov 19 05:29:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: wm.lisp,v 1.22 2003/10/09 11:37:08 ihatchondo Exp $ +;;; $Id: wm.lisp,v 1.23 2003/11/19 10:29:08 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -590,7 +590,7 @@ (3 (uniconify (slot-value (lookup-widget window) 'icon)))) (put-on-top (lookup-widget window)))) (make-desktop-entries (index) - (loop for w in (get-screen-content index :iconify-p t) + (loop for w in (screen-content index :iconify-p t) for state = (= 1 (first (wm-state w))) collect (cons (format nil "~:[[ ~A ]~;~A~]" state (wm-name w)) (raise w index))))) From ihatchondo at common-lisp.net Thu Nov 20 23:39:50 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Thu, 20 Nov 2003 18:39:50 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv13692/lib Modified Files: netwm-manager.lisp Log Message: fix invalid net-wm-strut property accessor. fix invalid net-wm-strut-partial reader. Date: Thu Nov 20 18:39:50 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.6 eclipse/lib/netwm-manager.lisp:1.7 --- eclipse/lib/netwm-manager.lisp:1.6 Wed Nov 12 19:39:14 2003 +++ eclipse/lib/netwm-manager.lisp Thu Nov 20 18:39:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.6 2003/11/13 00:39:14 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.7 2003/11/20 23:39:50 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -372,10 +372,16 @@ ;; _NET_WM_STRUT (defun net-wm-strut (window) - (get-geometry-hint window :_NET_WM_STRUT)) + "return the strut property as a multiple value (left right top bottom)." + (let ((v (get-property window :_NET_WM_STRUT :result-type 'vector))) + (declare (type (or null (simple-array integer (4)) v))) + (when v (values (aref v 1) (aref v 2) (aref v 3) (aref v 4))))) (defsetf net-wm-strut (window) (strut) - `(set-geometry-hint ,window ,strut :_NET_WM_STRUT)) + "set the strut property. The given strut is expected to be a list or a + vector of length 4. The order of the element inside the strut is: + left, right, top, bottom." + `(change-property ,window :_NET_WM_STRUT ,strut :CARDINAL 32)) ;; _NET_WM_STRUT_PARTIAL @@ -385,10 +391,11 @@ left_start_y, left_end_y, right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x, bottom_end_x" (let ((v (get-property window :_NET_WM_STRUT_PARTIAL :result-type 'vector))) - (declare (type (simple-array integer (12)) v)) - (values (aref v 1) (aref v 2) (aref v 3) (aref v 4) - (aref v 5) (aref v 6) (aref v 7) (aref v 8) - (aref v 9) (aref v 10) (aref v 11) (aref v 12)))) + (declare (type (or null (simple-array integer (12)) v))) + (when v + (values (aref v 1) (aref v 2) (aref v 3) (aref v 4) + (aref v 5) (aref v 6) (aref v 7) (aref v 8) + (aref v 9) (aref v 10) (aref v 11) (aref v 12))))) (defsetf net-wm-strut-partial (window) (strut) "set the strut partial property. The given strut is expected to be a From ihatchondo at common-lisp.net Thu Nov 20 23:48:55 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Thu, 20 Nov 2003 18:48:55 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv17612 Modified Files: netwm-manager.lisp Log Message: fix wrong type declaration done in precedent commit. Date: Thu Nov 20 18:48:55 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.7 eclipse/lib/netwm-manager.lisp:1.8 --- eclipse/lib/netwm-manager.lisp:1.7 Thu Nov 20 18:39:50 2003 +++ eclipse/lib/netwm-manager.lisp Thu Nov 20 18:48:54 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.7 2003/11/20 23:39:50 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.8 2003/11/20 23:48:54 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -374,7 +374,7 @@ (defun net-wm-strut (window) "return the strut property as a multiple value (left right top bottom)." (let ((v (get-property window :_NET_WM_STRUT :result-type 'vector))) - (declare (type (or null (simple-array integer (4)) v))) + (declare (type (or null (simple-array integer (4))) v)) (when v (values (aref v 1) (aref v 2) (aref v 3) (aref v 4))))) (defsetf net-wm-strut (window) (strut) @@ -391,7 +391,7 @@ left_start_y, left_end_y, right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x, bottom_end_x" (let ((v (get-property window :_NET_WM_STRUT_PARTIAL :result-type 'vector))) - (declare (type (or null (simple-array integer (12)) v))) + (declare (type (or null (simple-array integer (12))) v)) (when v (values (aref v 1) (aref v 2) (aref v 3) (aref v 4) (aref v 5) (aref v 6) (aref v 7) (aref v 8) From ihatchondo at common-lisp.net Fri Nov 21 00:04:08 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Thu, 20 Nov 2003 19:04:08 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv24305/lib Modified Files: netwm-manager.lisp Log Message: fix invalid array range. Date: Thu Nov 20 19:04:08 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.8 eclipse/lib/netwm-manager.lisp:1.9 --- eclipse/lib/netwm-manager.lisp:1.8 Thu Nov 20 18:48:54 2003 +++ eclipse/lib/netwm-manager.lisp Thu Nov 20 19:04:08 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.8 2003/11/20 23:48:54 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.9 2003/11/21 00:04:08 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -375,7 +375,7 @@ "return the strut property as a multiple value (left right top bottom)." (let ((v (get-property window :_NET_WM_STRUT :result-type 'vector))) (declare (type (or null (simple-array integer (4))) v)) - (when v (values (aref v 1) (aref v 2) (aref v 3) (aref v 4))))) + (when v (values (aref v 0) (aref v 1) (aref v 2) (aref v 3))))) (defsetf net-wm-strut (window) (strut) "set the strut property. The given strut is expected to be a list or a @@ -393,9 +393,9 @@ (let ((v (get-property window :_NET_WM_STRUT_PARTIAL :result-type 'vector))) (declare (type (or null (simple-array integer (12))) v)) (when v - (values (aref v 1) (aref v 2) (aref v 3) (aref v 4) - (aref v 5) (aref v 6) (aref v 7) (aref v 8) - (aref v 9) (aref v 10) (aref v 11) (aref v 12))))) + (values (aref v 0) (aref v 1) (aref v 2) (aref v 3) + (aref v 4) (aref v 5) (aref v 6) (aref v 7) + (aref v 8) (aref v 9) (aref v 10) (aref v 11))))) (defsetf net-wm-strut-partial (window) (strut) "set the strut partial property. The given strut is expected to be a From ihatchondo at common-lisp.net Mon Nov 24 13:12:02 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 24 Nov 2003 08:12:02 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/input.lisp eclipse/virtual-screen.lisp eclipse/widgets.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv20635 Modified Files: input.lisp virtual-screen.lisp widgets.lisp Log Message: We now (un)map the application window and the master window (if it exists) when mapping/unmapping a desktop. Date: Mon Nov 24 08:12:02 2003 Author: ihatchondo Index: eclipse/input.lisp diff -u eclipse/input.lisp:1.21 eclipse/input.lisp:1.22 --- eclipse/input.lisp:1.21 Thu Nov 13 06:12:27 2003 +++ eclipse/input.lisp Mon Nov 24 08:12:01 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: input.lisp,v 1.21 2003/11/13 11:12:27 ihatchondo Exp $ +;;; $Id: input.lisp,v 1.22 2003/11/24 13:12:01 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -377,10 +377,19 @@ (unless (= cur-desk new-desk) (when (shaded-p application) (shade application)) (setf (window-desktop-num window) new-desk) - (if (or (= new-desk +any-desktop+) (= new-desk (current-desk))) - (xlib:map-window (or master-window window)) - (with-event-mask (*root-window*) - (xlib:unmap-window (or master-window window))))))) + (if (/= new-desk +any-desktop+ (current-desk)) + (progn + (with-event-mask (*root-window*) + (xlib:unmap-window (or master-window window)) + (when master + (with-event-mask (master-window) + (xlib:unmap-window window)))) + (xlib:set-input-focus *display* :pointer-root :pointer-root)) + (if master + (with-event-mask (master-window) + (xlib:map-window window) + (xlib:map-window master-window)) + (xlib:map-window window)))))) (:_NET_CLOSE_WINDOW (close-widget application)) (:_NET_ACTIVE_WINDOW (cond ((shaded-p application) (shade application)) Index: eclipse/virtual-screen.lisp diff -u eclipse/virtual-screen.lisp:1.12 eclipse/virtual-screen.lisp:1.13 --- eclipse/virtual-screen.lisp:1.12 Wed Nov 19 05:29:08 2003 +++ eclipse/virtual-screen.lisp Mon Nov 24 08:12:01 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: virtual-screen.lisp,v 1.12 2003/11/19 10:29:08 ihatchondo Exp $ +;;; $Id: virtual-screen.lisp,v 1.13 2003/11/24 13:12:01 ihatchondo Exp $ ;;; ;;;?Copyright (C) 2002 Iban HATCHONDO ;;; contact : hatchond at yahoo.fr @@ -47,7 +47,11 @@ (with-slots (window master) widget (when (and (eq (window-desktop-num window) scr-num) (eq (car (wm-state window)) 1)) - (funcall fun (if master (widget-window master) window)))))) + (let ((mwindow (when master (widget-window master)))) + (funcall fun (or mwindow window)) + (when mwindow + (with-event-mask (mwindow) + (funcall fun window)))))))) ;;;; Public @@ -106,8 +110,8 @@ (setf (application-wants-focus-p widget) t)))) (xlib:set-input-focus *display* :pointer-root :pointer-root) (with-pointer-grabbed (window nil) - (map-or-unmap-vscreen #'xlib:map-window new) - (map-or-unmap-vscreen #'xlib:unmap-window cur))) + (map-or-unmap-vscreen #'xlib:unmap-window cur) + (map-or-unmap-vscreen #'xlib:map-window new))) (setf (gnome:win-workspace window) new (netwm:net-current-desktop window) new) (when *change-desktop-message-active-p* Index: eclipse/widgets.lisp diff -u eclipse/widgets.lisp:1.19 eclipse/widgets.lisp:1.20 --- eclipse/widgets.lisp:1.19 Sat Nov 8 14:54:13 2003 +++ eclipse/widgets.lisp Mon Nov 24 08:12:02 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: widgets.lisp,v 1.19 2003/11/08 19:54:13 ihatchondo Exp $ +;;; $Id: widgets.lisp,v 1.20 2003/11/24 13:12:02 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -664,6 +664,8 @@ (when (shaded-p application) (shade application)) (setf iconic-p t wants-focus-p t) + (when (eq (xlib:window-map-state window) :unmapped) + (setf (wm-state window) 3)) (xlib:unmap-window window) (when master (xlib:unmap-window (widget-window master))) From ihatchondo at common-lisp.net Mon Nov 24 13:12:27 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 24 Nov 2003 08:12:27 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/global.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv21473 Modified Files: global.lisp Log Message: +netwm-protocols+ updated. Date: Mon Nov 24 08:12:26 2003 Author: ihatchondo Index: eclipse/global.lisp diff -u eclipse/global.lisp:1.13 eclipse/global.lisp:1.14 --- eclipse/global.lisp:1.13 Thu Oct 9 07:36:18 2003 +++ eclipse/global.lisp Mon Nov 24 08:12:26 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: global.lisp,v 1.13 2003/10/09 11:36:18 ihatchondo Exp $ +;;; $Id: global.lisp,v 1.14 2003/11/24 13:12:26 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2001, 2002 Iban HATCHONDO @@ -35,7 +35,12 @@ (defconstant +netwm-protocol+ '(:_net_client_list :_net_client_list_stacking :_net_number_of_desktops :_net_current_desktop :_net_active_window :_net_close_window :_net_wm_state - :_net_wm_desktop :_net_wm_window_type :_net_desktop_names + :_net_wm_desktop :_net_wm_window_type :_net_desktop_names :_net_wm_strut + :_net_wm_strut_partial + :_net_wm_window_type_desktop :_net_wm_window_type_dock + :_net_wm_window_type_toolbar :_net_wm_window_type_menu + :_net_wm_window_type_utility :_net_wm_window_type_splash + :_net_wm_window_type_dialog :_net_wm_window_type_normal :_net_wm_state_maximized_horz :_net_wm_state_maximized_vert :_net_wm_state_skip_taskbar :_net_wm_state_skip_pager :_net_wm_state_shaded :_net_wm_state_sticky :_net_wm_state_fullscreen :_net_wm_state_hidden @@ -74,7 +79,9 @@ (defparameter *focus-type* :none "values are: :none :on-click") (defparameter *font-name* "-misc-fixed-medium-r-normal--14-110-100-100-c-70-iso8859-1") - +(defparameter *maximize-fill* nil + "Indicate if the action of maximizing window should making it filling whether + the largest area around (excluding overlapped windows) or screen area.") (defparameter *icon-hints* t "if you don't want eclipse to display miniature window for icons say nil") (defparameter *icon-box* '#(-75 5 -5 -5) From ihatchondo at common-lisp.net Mon Nov 24 13:44:50 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 24 Nov 2003 08:44:50 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/input.lisp eclipse/move-resize.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv3695 Modified Files: input.lisp move-resize.lisp Log Message: more hacking. Date: Mon Nov 24 08:44:50 2003 Author: ihatchondo Index: eclipse/input.lisp diff -u eclipse/input.lisp:1.22 eclipse/input.lisp:1.23 --- eclipse/input.lisp:1.22 Mon Nov 24 08:12:01 2003 +++ eclipse/input.lisp Mon Nov 24 08:44:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: input.lisp,v 1.22 2003/11/24 13:12:01 ihatchondo Exp $ +;;; $Id: input.lisp,v 1.23 2003/11/24 13:44:50 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -373,23 +373,19 @@ (:_NET_WM_DESKTOP (let* ((cur-desk (window-desktop-num window)) (new-desk (aref data 0)) - (master-window (and master (widget-window master)))) + (master-window (and master (widget-window master))) + (unmap-p (/= new-desk +any-desktop+ (current-desk)))) (unless (= cur-desk new-desk) (when (shaded-p application) (shade application)) (setf (window-desktop-num window) new-desk) - (if (/= new-desk +any-desktop+ (current-desk)) - (progn - (with-event-mask (*root-window*) - (xlib:unmap-window (or master-window window)) - (when master - (with-event-mask (master-window) - (xlib:unmap-window window)))) - (xlib:set-input-focus *display* :pointer-root :pointer-root)) - (if master - (with-event-mask (master-window) - (xlib:map-window window) - (xlib:map-window master-window)) - (xlib:map-window window)))))) + (let ((operation (if unmap-p #'xlib:unmap-window #'xlib:map-window))) + (with-event-mask (*root-window*) + (funcall operation (or master-window window)) + (when master-window + (with-event-mask (master-window) + (funcall operation window))))) + (when unmap-p + (xlib:set-input-focus *display* :pointer-root :pointer-root))))) (:_NET_CLOSE_WINDOW (close-widget application)) (:_NET_ACTIVE_WINDOW (cond ((shaded-p application) (shade application)) Index: eclipse/move-resize.lisp diff -u eclipse/move-resize.lisp:1.9 eclipse/move-resize.lisp:1.10 --- eclipse/move-resize.lisp:1.9 Wed Nov 19 05:29:08 2003 +++ eclipse/move-resize.lisp Mon Nov 24 08:44:50 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: move-resize.lisp,v 1.9 2003/11/19 10:29:08 ihatchondo Exp $ +;;; $Id: move-resize.lisp,v 1.10 2003/11/24 13:44:50 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -294,8 +294,7 @@ (declare (optimize (speed 3) (safety 0))) (declare (type (signed-byte 16) x y x2 y2)) (declare (type (unsigned-byte 16) w h w2 h2)) - (or (and (<= x (+ x2 w2)) (<= x2 (+ x w)) (<= y (+ y2 h2)) (<= y2 (+ y h))) - (and (<= x2 (+ x w)) (<= x (+ x2 w2)) (<= y2 (+ y h)) (<= y (+ y2 h2))))) + (and (<= x (+ x2 w2)) (<= x2 (+ x w)) (<= y (+ y2 h2)) (<= y2 (+ y h)))) (defun region-intersect-window-in-screen (x y w h &rest windows-to-skip) "Returns a window list that has an intersection with the given region From ihatchondo at common-lisp.net Mon Nov 24 16:42:59 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 24 Nov 2003 11:42:59 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/virtual-screen.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv18618 Modified Files: virtual-screen.lisp Log Message: surround the map-or-unmap calls in change-vscreen with a with-server-grabbed to improve a bit performances. Date: Mon Nov 24 11:42:59 2003 Author: ihatchondo Index: eclipse/virtual-screen.lisp diff -u eclipse/virtual-screen.lisp:1.13 eclipse/virtual-screen.lisp:1.14 --- eclipse/virtual-screen.lisp:1.13 Mon Nov 24 08:12:01 2003 +++ eclipse/virtual-screen.lisp Mon Nov 24 11:42:59 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: virtual-screen.lisp,v 1.13 2003/11/24 13:12:01 ihatchondo Exp $ +;;; $Id: virtual-screen.lisp,v 1.14 2003/11/24 16:42:59 ihatchondo Exp $ ;;; ;;;?Copyright (C) 2002 Iban HATCHONDO ;;; contact : hatchond at yahoo.fr @@ -42,6 +42,8 @@ (member :_net_wm_window_type_dock netwm-type))))))) (defun map-or-unmap-vscreen (fun scr-num) + (declare (optimize (speed 3) (safety 0))) + (declare (type function fun)) (loop for widget being each hash-value in *widget-table* when (application-p widget) do (with-slots (window master) widget @@ -109,9 +111,10 @@ (when (application-p widget) (setf (application-wants-focus-p widget) t)))) (xlib:set-input-focus *display* :pointer-root :pointer-root) - (with-pointer-grabbed (window nil) - (map-or-unmap-vscreen #'xlib:unmap-window cur) - (map-or-unmap-vscreen #'xlib:map-window new))) + (xlib:with-server-grabbed (*display*) + (with-pointer-grabbed (window nil) + (map-or-unmap-vscreen #'xlib:unmap-window cur) + (map-or-unmap-vscreen #'xlib:map-window new)))) (setf (gnome:win-workspace window) new (netwm:net-current-desktop window) new) (when *change-desktop-message-active-p* From ihatchondo at common-lisp.net Mon Nov 24 16:57:47 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Mon, 24 Nov 2003 11:57:47 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/rectangles.lisp eclipse/wm.lisp eclipse/package.lisp eclipse/system.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv22947 Modified Files: wm.lisp package.lisp system.lisp Added Files: rectangles.lisp Log Message: Maximize fill implemented: - new file rectangles.lisp. - maximize-window modified to use the maximize-fill operaion. - new user configuration option: *maximize-fill* We now support the netwm-strut{-partial}, and don't overlap panels that should not be overlapped (gnome panels for exemple) package.lisp, system.lisp updated. Date: Mon Nov 24 11:57:46 2003 Author: ihatchondo Index: eclipse/wm.lisp diff -u eclipse/wm.lisp:1.23 eclipse/wm.lisp:1.24 --- eclipse/wm.lisp:1.23 Wed Nov 19 05:29:08 2003 +++ eclipse/wm.lisp Mon Nov 24 11:57:46 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: wm.lisp,v 1.23 2003/11/19 10:29:08 ihatchondo Exp $ +;;; $Id: wm.lisp,v 1.24 2003/11/24 16:57:46 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -53,34 +53,14 @@ (let ((widget (getf (decoration-children master) label))) (if (and widget window) (widget-window widget) widget))) -(defmethod decoration-min-width ((master decoration)) - (with-slots (hmargin) (decoration-frame-style master) - (+ hmargin (aref (slot-value master 'wm-size-hints) 0)))) -(defmethod decoration-min-height ((master decoration)) - (with-slots (vmargin) (decoration-frame-style master) - (+ vmargin (aref (slot-value master 'wm-size-hints) 1)))) -(defmethod decoration-max-width ((master decoration)) - (with-slots (hmargin) (decoration-frame-style master) - (+ hmargin (aref (slot-value master 'wm-size-hints) 2)))) -(defmethod decoration-max-height ((master decoration)) - (with-slots (vmargin) (decoration-frame-style master) - (+ vmargin (aref (slot-value master 'wm-size-hints) 3)))) -(defmethod decoration-base-width ((master decoration)) - (with-slots (hmargin) (decoration-frame-style master) - (+ hmargin (aref (slot-value master 'wm-size-hints) 6)))) -(defmethod decoration-base-height ((master decoration)) - (with-slots (vmargin) (decoration-frame-style master) - (+ vmargin (aref (slot-value master 'wm-size-hints) 7)))) -(defmethod decoration-inc-sizes ((master decoration)) - (with-slots (wm-size-hints) master - (values (aref wm-size-hints 4) (aref wm-size-hints 5)))) - (defmethod decoration-wm-hints ((master decoration)) - (with-slots (wm-size-hints) master - (values (decoration-min-width master) (decoration-min-height master) - (decoration-max-width master) (decoration-max-height master) - (aref wm-size-hints 4) (aref wm-size-hints 5) - (decoration-base-width master) (decoration-base-height master)))) + "return as a multiple value: minw minh maxw maxh incw inch basew baseh." + (with-slots (frame-style (wmsh wm-size-hints)) master + (with-slots ((hm hmargin) (vm vmargin)) frame-style + (values (+ hm (aref wmsh 0)) (+ vm (aref wmsh 1)) + (+ hm (aref wmsh 2)) (+ vm (aref wmsh 3)) + (aref wmsh 4) (aref wmsh 5) + (+ hm (aref wmsh 6)) (+ vm (aref wmsh 7)))))) (defmethod focused-p ((master decoration)) (focused-p (get-child master :application))) @@ -431,57 +411,80 @@ (when map (xlib:map-window window)) master)) -(defun maximize-window (application button-code) +(defun find-max-geometry (application direction fill-p &key x y w h) + (multiple-value-bind (ulx uly lrx lry) + (find-largest-empty-area + application + :area-include-me-p (or (/= 1 direction) fill-p) + :panels-only-p (not fill-p) + :direction (case direction (2 :vertical) (3 :horizontal) (t :both))) + (with-slots (window master) application + (with-slots ((hm hmargin) (vm vmargin)) + (if master (decoration-frame-style master) + (theme-default-style (lookup-theme "no-decoration"))) + (symbol-macrolet ((minw (aref wmsh 0)) (minh (aref wmsh 1)) + (maxw (aref wmsh 2)) (maxh (aref wmsh 3)) + (incw (aref wmsh 4)) (inch (aref wmsh 5)) + (basew (aref wmsh 6)) (baseh (aref wmsh 7))) + (let* ((wmsh (recompute-wm-normal-hints window hm vm)) + (ww (or w (check-size (- lrx ulx hm) basew incw minw maxw))) + (hh (or h (check-size (- lry uly vm) baseh inch minh maxh)))) + (when (> (+ ww hm) (- lrx ulx)) (decf ww incw)) + (when (> (+ hh vm) (- lry uly)) (decf hh inch)) + (make-geometry :w ww :h hh :x (or x ulx) :y (or y uly)))))))) + +(defun compute-max-geometry + (application x y w h direction fill-p vert-p horz-p) + (symbol-macrolet + ((ix (geometry-x initial-geometry)) (iy (geometry-y initial-geometry)) + (iw (geometry-w initial-geometry)) (ih (geometry-h initial-geometry))) + (with-slots (initial-geometry) application + (case direction + ;; Unmaximize or Maximize in both directions + (1 (if (or horz-p vert-p) + (copy-geometry initial-geometry) + (find-max-geometry application direction fill-p))) + ;; Unmaximize or Maximize Vertically + (2 (if vert-p + (make-geometry :x x :y iy :w w :h ih) + (find-max-geometry application direction fill-p :x x :w w))) + ;; Unmaximize or Maximize Horizontally + (3 (if horz-p + (make-geometry :x ix :y y :w iw :h h) + (find-max-geometry application direction fill-p :y y :h h))))))) + +(defun maximize-window (application code &key (fill-p *maximize-fill*)) (with-slots ((app-window window) initial-geometry full-geometry master) application (when (shaded-p master) (shade master)) - (let* ((new-sizes) + (let* ((new-g) (m-window (if master (widget-window master) app-window)) (prop (netwm:net-wm-state app-window)) (fullscreen-p (member :_net_wm_state_fullscreen prop)) - (vert-p (member :_net_wm_state_maximized_vert prop)) - (horz-p (member :_net_wm_state_maximized_horz prop)) - (wm-size-hints (if master - (slot-value master 'wm-size-hints) - (recompute-wm-normal-hints app-window 0 0)))) + (vert-p (car (member :_net_wm_state_maximized_vert prop))) + (horz-p (car (member :_net_wm_state_maximized_horz prop)))) (multiple-value-bind (x y) (window-position m-window) (multiple-value-bind (w h) (drawable-sizes app-window) (unless (or horz-p vert-p) (if fullscreen-p (setf initial-geometry (copy-geometry full-geometry)) (setf (geometry initial-geometry) (values x y w h)))) - (symbol-macrolet ((ix (geometry-x initial-geometry)) - (iy (geometry-y initial-geometry)) - (iw (geometry-w initial-geometry)) - (ih (geometry-h initial-geometry)) - (maxw (aref wm-size-hints 2)) - (maxh (aref wm-size-hints 3))) - (case button-code - ;; Unmaximize or Maximize in both directions - (1 (if (or horz-p vert-p) - (setf new-sizes (copy-geometry initial-geometry) - horz-p t vert-p t) - (setf new-sizes (make-geometry :w maxw :h maxh)))) - ;; Unmaximize or Maximize Vertically - (2 (if vert-p - (setf new-sizes (make-geometry :x x :y iy :w w :h ih)) - (setf new-sizes (make-geometry :x x :w w :h maxh)))) - ;; Unmaximize or Maximize Horizontally - (3 (if horz-p - (setf new-sizes (make-geometry :x ix :y y :w iw :h h)) - (setf new-sizes (make-geometry :y y :w maxw :h h)))))))) - (unless (= 3 button-code) + (setf new-g (compute-max-geometry + application x y w h code fill-p vert-p horz-p)))) + (when (and (= 1 code) (or horz-p vert-p)) + (setf (values horz-p vert-p) (values t t))) + (unless (= 3 code) (if vert-p (setf prop (delete :_net_wm_state_maximized_vert prop)) (pushnew :_net_wm_state_maximized_vert prop))) - (unless (= 2 button-code) + (unless (= 2 code) (if horz-p (setf prop (delete :_net_wm_state_maximized_horz prop)) (pushnew :_net_wm_state_maximized_horz prop))) (if fullscreen-p - (setf full-geometry new-sizes) - (setf (window-position m-window) (geometry-coordinates new-sizes) - (drawable-sizes app-window) (geometry-sizes new-sizes))) + (setf full-geometry new-g) + (setf (window-position m-window) (geometry-coordinates new-g) + (drawable-sizes app-window) (geometry-sizes new-g))) (setf (netwm:net-wm-state app-window) prop)))) ;;;; Focus management. According to ICCCM Index: eclipse/package.lisp diff -u eclipse/package.lisp:1.10 eclipse/package.lisp:1.11 --- eclipse/package.lisp:1.10 Thu Oct 9 07:40:38 2003 +++ eclipse/package.lisp Mon Nov 24 11:57:46 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: User -*- -;;; $Id: package.lisp,v 1.10 2003/10/09 11:40:38 ihatchondo Exp $ +;;; $Id: package.lisp,v 1.11 2003/11/24 16:57:46 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -235,15 +235,8 @@ "CLOSE-WIDGET" ;generic function "DECORATION-ACTIVE-P" ;generic function "DECORATION-APPLICATION-GRAVITY" ;generic function - "DECORATION-BASE-HEIGHT" ;generic function - "DECORATION-BASE-WIDTH" ;generic function "DECORATION-CHILDREN" ;generic function "DECORATION-FRAME-STYLE" ;generic function - "DECORATION-INC-SIZES" ;generic function - "DECORATION-MAX-HEIGHT" ;generic function - "DECORATION-MAX-WIDTH" ;generic function - "DECORATION-MIN-HEIGHT" ;generic function - "DECORATION-MIN-WIDTH" ;generic function "DECORATION-PRECEDENT-TIME" ;generic function "DECORATION-WM-HINTS" ;generic function "DECORATION-WM-SIZE-HINTS" ;generic function @@ -352,16 +345,21 @@ ;; user custom. "*CHANGE-DESKTOP-MESSAGE-ACTIVE-P*" ;variable "*CLOSE-DISPLAY-P*" ;variable + "*CYCLE-ICONS-P*" ;variable "*DOUBLE-CLICK-SPEED*" ;variable "*FOCUS-TYPE*" ;variable "*FOCUS-NEW-MAPPED-WINDOW*" ;variable "*FOCUS-WHEN-WINDOW-CYCLE*" ;variable "*ICON-BOX-SORT-FUNCTION*" ;variable "*ICON-HINTS*" ;variable + "*MAXIMIZE-FILL*" ;variable "*MENU-1-ITEMS*" ;variable "*MOVE-MODE*" ;variable "*RESIZE-MODE*" ;variable + "*SCREEN-EDGE-RESISTANT-P*" ;variable + "*STANDARD-WINDOW-EDGE-RESISTANT-P*" ;variable "*VERBOSE-MOVE*" ;variable "*VERBOSE-RESIZE*" ;variable + "*VERBOSE-WINDOW-CYCLING*" ;variable "*WARP-POINTER-WHEN-CYCLE*" ;variable )) Index: eclipse/system.lisp diff -u eclipse/system.lisp:1.7 eclipse/system.lisp:1.8 --- eclipse/system.lisp:1.7 Mon Nov 10 05:02:53 2003 +++ eclipse/system.lisp Mon Nov 24 11:57:46 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: User -*- -;;; $Id: system.lisp,v 1.7 2003/11/10 10:02:53 ihatchondo Exp $ +;;; $Id: system.lisp,v 1.8 2003/11/24 16:57:46 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -72,6 +72,7 @@ "gestures" "widgets" "virtual-screen" + "rectangles" "wm" "input" "move-resize" From ihatchondo at common-lisp.net Wed Nov 26 15:13:57 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Wed, 26 Nov 2003 10:13:57 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/lib/netwm-manager.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse/lib In directory common-lisp.net:/tmp/cvs-serv30586/lib Modified Files: netwm-manager.lisp Log Message: a first try to implement net-wm-icon. Date: Wed Nov 26 10:13:53 2003 Author: ihatchondo Index: eclipse/lib/netwm-manager.lisp diff -u eclipse/lib/netwm-manager.lisp:1.9 eclipse/lib/netwm-manager.lisp:1.10 --- eclipse/lib/netwm-manager.lisp:1.9 Thu Nov 20 19:04:08 2003 +++ eclipse/lib/netwm-manager.lisp Wed Nov 26 10:13:46 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*- -;;; $Id: netwm-manager.lisp,v 1.9 2003/11/21 00:04:08 ihatchondo Exp $ +;;; $Id: netwm-manager.lisp,v 1.10 2003/11/26 15:13:46 ihatchondo Exp $ ;;; ;;; This is the CLX support for the managing with gnome. ;;; @@ -415,10 +415,12 @@ ;; _NET_WM_ICON -;; FIXME: (defun net-wm-icon (window) - (declare (ignore window)) - (values)) + "Returnsa vector of possible icons for the client. This is an vector of + (unsigned-byte 32) ARGB with high byte being A, low byte being B. The + first two cardinals are width, height. Data is in rows, left to right + and top to bottom." + (get-property window :_NET_WM_ICON :result-type 'vector)) ;; _NET_WM_HANDLED_ICONS From ihatchondo at common-lisp.net Fri Nov 28 10:13:50 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Fri, 28 Nov 2003 05:13:50 -0500 Subject: [Eclipse-cvs] CVS update: eclipse/gestures.lisp eclipse/input.lisp eclipse/misc.lisp eclipse/package.lisp eclipse/widgets.lisp eclipse/wm.lisp Message-ID: Update of /project/eclipse/cvsroot/eclipse In directory common-lisp.net:/tmp/cvs-serv6546 Modified Files: gestures.lisp input.lisp misc.lisp package.lisp widgets.lisp wm.lisp Log Message: add support for icon as described in the exwm spec. - decode-netwm-icon-pixmap (misc.lisp) - small impacts in gestures.lisp & widgets.lisp. add a new callback on the application list root menu: when no window on a desktop then releasing the mouse button on such an entry will put you on that desktop. (wm.lisp) package.lisp updated. Date: Fri Nov 28 05:13:48 2003 Author: ihatchondo Index: eclipse/gestures.lisp diff -u eclipse/gestures.lisp:1.11 eclipse/gestures.lisp:1.12 --- eclipse/gestures.lisp:1.11 Wed Nov 19 05:29:08 2003 +++ eclipse/gestures.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: gestures.lisp,v 1.11 2003/11/19 10:29:08 ihatchondo Exp $ +;;; $Id: gestures.lisp,v 1.12 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -255,7 +255,7 @@ (default-modifiers-p t) (modifiers :any) fun) -" modifiers can be: + " modifiers can be: - composition of modifiers as '(:and :ALT-LEFT :CONTROL-RIGHT) - a simple modifier as :ALT-LEFT or 18 (a modifier mask) - a list of possible modifiers as '(:ALT-LEFT :CONTOL-RIGHT)" @@ -276,7 +276,7 @@ (default-modifiers-p t) (modifiers :any) fun) -" modifiers can be: + " modifiers can be: - composition of modifiers as '(:and :ALT-LEFT :CONTROL-RIGHT) - a simple modifier as :ALT-LEFT or 18 (a modifier mask) - a list of possible modifiers as '(:ALT-LEFT :CONTOL-RIGHT)" @@ -386,9 +386,10 @@ (when (eq direction :below) (incf depth-aux)) (rotatef (nth 0 *windows*) (nth depth-aux *windows*))))) (when (and *verbose-window-cycling* (car *windows*)) - (with-slots (window) (lookup-widget (car *windows*)) + (with-slots (window icon) (lookup-widget (car *windows*)) (setf (message-pixmap *current-widget-info*) - (clx-ext::wm-hints-icon-pixmap window)) + (or (icon-pixmap-to-free icon) + (clx-ext::wm-hints-icon-pixmap window))) (setf (button-item-to-draw *current-widget-info*) (wm-name window))) (with-slots (window) *current-widget-info* (xlib:map-window window) Index: eclipse/input.lisp diff -u eclipse/input.lisp:1.23 eclipse/input.lisp:1.24 --- eclipse/input.lisp:1.23 Mon Nov 24 08:44:50 2003 +++ eclipse/input.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: input.lisp,v 1.23 2003/11/24 13:44:50 ihatchondo Exp $ +;;; $Id: input.lisp,v 1.24 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -374,16 +374,16 @@ (let* ((cur-desk (window-desktop-num window)) (new-desk (aref data 0)) (master-window (and master (widget-window master))) - (unmap-p (/= new-desk +any-desktop+ (current-desk)))) + (unmap-p (/= new-desk +any-desktop+ (current-desk))) + (operation (if unmap-p #'xlib:unmap-window #'xlib:map-window))) (unless (= cur-desk new-desk) (when (shaded-p application) (shade application)) (setf (window-desktop-num window) new-desk) - (let ((operation (if unmap-p #'xlib:unmap-window #'xlib:map-window))) - (with-event-mask (*root-window*) - (funcall operation (or master-window window)) - (when master-window - (with-event-mask (master-window) - (funcall operation window))))) + (with-event-mask (*root-window*) + (funcall operation (or master-window window)) + (when master-window + (with-event-mask (master-window) + (funcall operation window)))) (when unmap-p (xlib:set-input-focus *display* :pointer-root :pointer-root))))) (:_NET_CLOSE_WINDOW (close-widget application)) @@ -488,4 +488,4 @@ ;;; Events for Message Box (defmethod event-process ((event visibility-notify) (box box-button)) - (setf (xlib:window-priority (widget-window box)) :above)) \ No newline at end of file + (setf (xlib:window-priority (widget-window box)) :above)) Index: eclipse/misc.lisp diff -u eclipse/misc.lisp:1.14 eclipse/misc.lisp:1.15 --- eclipse/misc.lisp:1.14 Wed Nov 19 05:29:08 2003 +++ eclipse/misc.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: misc.lisp,v 1.14 2003/11/19 10:29:08 ihatchondo Exp $ +;;; $Id: misc.lisp,v 1.15 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -29,7 +29,6 @@ "~/")) directory)) - ;;;; Helpers macros. (defmacro with-gensym (symbols &body body) @@ -115,6 +114,32 @@ (or (ignore-errors (netwm:net-wm-icon-name window)) (ignore-errors (xlib:wm-icon-name window)) "incognito")) + +(defun decode-netwm-icon-pixmap (window property-vector) + "Return a pixmap containing the first icon of the property or NIL." + ;;(declare (optimize (speed 3) (safety 1))) + (declare (type (or null (simple-vector *)) property-vector)) + (unless property-vector (return-from decode-netwm-icon-pixmap nil)) + (loop with depth of-type ppm::card-8 = (xlib:drawable-depth window) + with bits-per-pixel = (ppm::find-bits-per-pixel depth) + with type = `(unsigned-byte ,depth) + with width of-type ppm::card-16 = (aref property-vector 0) + with height of-type ppm::card-16 = (aref property-vector 1) + with size of-type ppm::card-32 = (* width height) + with data = (make-array (list height width) :element-type type) + with tmp = (make-array size :displaced-to data :element-type type) + for i of-type ppm::card-32 from 2 below (+ 2 size) + for argb of-type ppm::card-32 = (aref property-vector i) + for r of-type ppm::card-8 = (ldb (byte 8 16) argb) + for g of-type ppm::card-8 = (ldb (byte 8 8) argb) + for b of-type ppm::card-8 = (ldb (byte 8 0) argb) + do (setf (aref tmp (- i 2)) (ppm::get-color r g b)) + finally (return + (xlib:image-pixmap + window + (xlib:create-image + :width width :height height :depth depth + :bits-per-pixel bits-per-pixel :data data))))) (defun window-desktop-num (window) (or (netwm:net-wm-desktop window) (gnome:win-workspace window))) Index: eclipse/package.lisp diff -u eclipse/package.lisp:1.11 eclipse/package.lisp:1.12 --- eclipse/package.lisp:1.11 Mon Nov 24 11:57:46 2003 +++ eclipse/package.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: User -*- -;;; $Id: package.lisp,v 1.11 2003/11/24 16:57:46 ihatchondo Exp $ +;;; $Id: package.lisp,v 1.12 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; This file is part of Eclipse. ;;; Copyright (C) 2002 Iban HATCHONDO @@ -80,6 +80,7 @@ "CREATE-ICON" ;function "CREATE-MESSAGE-BOX" ;function "CURRENT-VSCREEN" ;function + "DECODE-NETWM-ICON-PIXMAP" ;function "DECORATION-P" ;function "DECORATION-THEME" ;setf function "DECORE-APPLICATION" ;function Index: eclipse/widgets.lisp diff -u eclipse/widgets.lisp:1.20 eclipse/widgets.lisp:1.21 --- eclipse/widgets.lisp:1.20 Mon Nov 24 08:12:02 2003 +++ eclipse/widgets.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: widgets.lisp,v 1.20 2003/11/24 13:12:02 ihatchondo Exp $ +;;; $Id: widgets.lisp,v 1.21 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -557,33 +557,37 @@ (defclass icon (push-button) ((desiconify-p :initform nil :accessor icon-desiconify-p) (creation-time :initform (get-universal-time) :accessor icon-creation-time) - (application :initarg :application :reader icon-application))) + (application :initarg :application :reader icon-application) + (pixmap-to-free :initform nil :reader icon-pixmap-to-free))) (defun icon-p (widget) (typep widget 'icon)) (defun create-icon (application master &optional (bg-color *black*)) (with-slots (window icon gcontext) application - (let ((background (clx-ext::wm-hints-icon-pixmap window)) - (width 45) (height 20)) + (let* ((bkgrd (decode-netwm-icon-pixmap window (netwm:net-wm-icon window))) + (width 45) (height 20) (pixmap-to-free bkgrd)) + (unless bkgrd + (setf bkgrd (ignore-errors (clx-ext::wm-hints-icon-pixmap window)))) (ignore-errors - (if (typep background 'xlib:pixmap) - (multiple-value-setq (width height) (drawable-sizes background)) - (setf background nil))) + (if (typep bkgrd 'xlib:pixmap) + (multiple-value-setq (width height) (drawable-sizes bkgrd)) + (setf bkgrd nil))) (ignore-errors - (when (and background (= 1 (xlib:drawable-depth background))) + (when (and bkgrd (= 1 (xlib:drawable-depth bkgrd))) (let ((pix (xlib:create-pixmap :drawable window :width width :height height :depth (xlib:drawable-depth window)))) - (xlib:copy-plane background gcontext 1 0 0 width height pix 0 0) - (setf background pix)))) + (xlib:copy-plane bkgrd gcontext 1 0 0 width height pix 0 0) + (setf bkgrd pix)))) (setf icon (create-button 'icon :parent *root-window* :master master :x 0 :y 0 :width width :height height - :item (unless background (wm-icon-name window)) - :background (or background bg-color)) - (slot-value icon 'application) application) + :item (unless bkgrd (wm-icon-name window)) + :background (or bkgrd bg-color))) + (setf (slot-value icon 'pixmap-to-free) pixmap-to-free) + (setf (slot-value icon 'application) application) icon))) (defun icon-sort-creation-order (icon1 icon2) @@ -651,6 +655,11 @@ (xlib:with-state (icon-window) (setf (window-position icon-window) (values basex basey))))) (setq prev-icon-window icon-window))))))) + +(defmethod remove-widget :after ((widget icon)) + (with-slots (pixmap-to-free) widget + (when pixmap-to-free + (xlib:free-pixmap pixmap-to-free)))) (defmethod repaint ((widget icon) theme-name focus) (declare (ignorable theme-name focus)) Index: eclipse/wm.lisp diff -u eclipse/wm.lisp:1.24 eclipse/wm.lisp:1.25 --- eclipse/wm.lisp:1.24 Mon Nov 24 11:57:46 2003 +++ eclipse/wm.lisp Fri Nov 28 05:13:47 2003 @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*- -;;; $Id: wm.lisp,v 1.24 2003/11/24 16:57:46 ihatchondo Exp $ +;;; $Id: wm.lisp,v 1.25 2003/11/28 10:13:47 ihatchondo Exp $ ;;; ;;; ECLIPSE. The Common Lisp Window Manager. ;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO @@ -592,11 +592,13 @@ (1 (change-vscreen root :n index)) (3 (uniconify (slot-value (lookup-widget window) 'icon)))) (put-on-top (lookup-widget window)))) - (make-desktop-entries (index) - (loop for w in (screen-content index :iconify-p t) + (make-desktop-entries (i) + (loop for w in (screen-content i :iconify-p t) for state = (= 1 (first (wm-state w))) - collect (cons (format nil "~:[[ ~A ]~;~A~]" state (wm-name w)) - (raise w index))))) + for name = (format nil "~:[[ ~A ]~;~A~]" state (wm-name w)) + collect (cons name (raise w i)) into entries + finally + (return (or entries (lambda () (change-vscreen root :n i))))))) (make-desktop-menu root #'make-desktop-entries :realize t))) (defun make-menu-button-menu (master) From ihatchondo at common-lisp.net Fri Nov 28 11:00:29 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Fri, 28 Nov 2003 06:00:29 -0500 Subject: [Eclipse-cvs] CVS update: CVSROOT/loginfo Message-ID: Update of /project/eclipse/cvsroot/CVSROOT In directory common-lisp.net:/tmp/cvs-serv29961 Modified Files: loginfo Log Message: a try to call my own script from this one. Date: Fri Nov 28 06:00:28 2003 Author: ihatchondo Index: CVSROOT/loginfo diff -u CVSROOT/loginfo:1.2 CVSROOT/loginfo:1.3 --- CVSROOT/loginfo:1.2 Wed Oct 1 09:20:58 2003 +++ CVSROOT/loginfo Fri Nov 28 06:00:27 2003 @@ -24,4 +24,8 @@ #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog -DEFAULT /custom/bin/cvslog.py eclipse-cvs at common-lisp.net %{sVv} + + +#DEFAULT /custom/bin/cvslog.py eclipse-cvs at common-lisp.net %{sVv} + +DEFAULT /home/hatchond/cvslog.py eclipse-cvs at common-lisp.net %{sVv} From ihatchondo at common-lisp.net Fri Nov 28 11:05:44 2003 From: ihatchondo at common-lisp.net (Iban Hatchondo) Date: Fri, 28 Nov 2003 06:05:44 -0500 Subject: [Eclipse-cvs] CVS update: CVSROOT/loginfo Message-ID: Update of /project/eclipse/cvsroot/CVSROOT In directory common-lisp.net:/tmp/cvs-serv32717 Modified Files: loginfo Log Message: test !!! Date: Fri Nov 28 06:05:44 2003 Author: ihatchondo