XWorkstation.st
changeset 188 873ddc9399e3
parent 186 7fea4d93b32c
child 190 4c49bdd5b80f
--- a/XWorkstation.st	Thu Sep 14 12:01:30 1995 +0200
+++ b/XWorkstation.st	Fri Sep 15 02:00:56 1995 +0200
@@ -36,7 +36,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.59 1995-09-14 00:51:01 claus Exp $
+$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.60 1995-09-15 00:00:56 claus Exp $
 '!
 
 !XWorkstation class methodsFor:'documentation'!
@@ -57,7 +57,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.59 1995-09-14 00:51:01 claus Exp $
+$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.60 1995-09-15 00:00:56 claus Exp $
 "
 !
 
@@ -1295,6 +1295,32 @@
      v noClipByChildren.
      v fillRectangleX:10 y:10 width:100 height:100.  
     "
+!
+
+virtualExtent
+    "return the virtual extent of the display (in pixels).
+     On most systems, this is the same as the physical width;
+     except, if a window manager with a virtual desktop like olvwm
+     (simulating a bigger screen) is running."
+
+%{
+    if ((_INST(rootId) != _INST(virtualRootId)) 
+     && __isSmallInteger(_INST(virtualRootId))) {
+	Window vRootWin;
+	Window root;
+	int x, y;
+	unsigned int width, height;
+	unsigned int dummy;
+	extern OBJ __MKPOINT_INT();
+
+	vRootWin = _WindowVal(_INST(virtualRootId));
+	if (XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
+					  &dummy, &dummy)) {
+	    RETURN ( __MKPOINT_INT(width, height) );
+	}
+    }
+%}.
+    ^ width @ height
 ! !
 
 !XWorkstation methodsFor:'bitmap/window creation'!