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@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)))