[Eclipse-cvs] CVS update: eclipse/input.lisp eclipse/virtual-screen.lisp eclipse/widgets.lisp

Iban Hatchondo ihatchondo at common-lisp.net
Mon Nov 24 13:12:02 UTC 2003


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





More information about the Eclipse-cvs mailing list