small patch, for UTILITY/SPLASH types, and FULLSCREEN state



Hi,

The following patch makes these changes:

 - clarifies that type TOOLBAR and type MENU refer to tearoff 
   toolbars/menus
 - adds type UTILITY for what MacOS calls utility windows, most 
   of the GIMP's dialogs fall in this category, for example
 - adds type SPLASH for splash screens
 - adds state FULLSCREEN for presentation apps

As an experiment, for now Metacity is fully "semantic" and totally
ignores application configure requests for NORMAL windows, enforcing
semantic types pretty strongly - the above changes address the
problems I've noticed so far when doing this.

UTILITY windows should not be treated as dialogs (e.g. not centered on
their parent), but should probably not have a maximize control, for
example.

SPLASH windows should not be placed by the WM, they should be
centered; but apps shouldn't use override redirect because they can't
get the stacking order right.

FULLSCREEN is needed to avoid applying the window manager's usual
constraints on window position.

Also, I think we need to clarify whether the application or the window
manager draws the drag handles and decorations on types TOOLBAR and
MENU.

Havoc



Index: wm-spec.sgml
===================================================================
RCS file: /home/freedesktop/wm-spec/wm-spec.sgml,v
retrieving revision 1.14
diff -u -p -u -r1.14 wm-spec.sgml
--- wm-spec.sgml	2001/08/28 13:00:30	1.14
+++ wm-spec.sgml	2001/10/11 22:07:19
@@ -15,8 +15,8 @@
 	<sect2>
 		<title>Version</title>
 		<para>
-This is version 1.1 of the Extended Window Manager Hints (EWMH) spec,
-updated 10 March 2001.
+This is DRAFT version 1.2 of the Extended Window Manager Hints (EWMH) spec,
+updated October 11 2001.
 		</para>
 	</sect2>
 	<sect2>
@@ -616,6 +616,8 @@ _NET_WM_WINDOW_TYPE_DESKTOP, ATOM
 _NET_WM_WINDOW_TYPE_DOCK, ATOM
 _NET_WM_WINDOW_TYPE_TOOLBAR, ATOM
 _NET_WM_WINDOW_TYPE_MENU, ATOM
+_NET_WM_WINDOW_TYPE_UTILITY, ATOM
+_NET_WM_WINDOW_TYPE_SPLASH, ATOM
 _NET_WM_WINDOW_TYPE_DIALOG, ATOM
 _NET_WM_WINDOW_TYPE_NORMAL, ATOM
 ]]></programlisting>	
@@ -631,9 +633,23 @@ window manager would keep such windows o
 	</para>
 	<para>
 _NET_WM_WINDOW_TYPE_TOOLBAR and _NET_WM_WINDOW_TYPE_MENU indicate toolbar and
-pinnable menu windows, respectively. 
+pinnable menu windows, respectively (i.e. toolbars and menus "torn off" from 
+the main application). Windows of this type may set the WM_TRANSIENT_FOR 
+hint indicating the main application window.
 	</para>
 	<para>
+_NET_WM_WINDOW_TYPE_UTILITY indicates a small persistent utility window, such as
+a palette or toolbox. It is distinct from type TOOLBAR because it does not
+correspond to a toolbar torn off from the main application. It's distinct from
+type DIALOG because it isn't a transient dialog, the user will probably keep it
+open while they're working. Windows of this type may set the WM_TRANSIENT_FOR
+hint indicating the main application window.
+	</para>
+	<para>
+_NET_WM_WINDOW_TYPE_SPLASH indicates that the window is a splash screen
+displayed as an application is starting up.
+	</para>
+	<para>
 _NET_WM_WINDOW_TYPE_DIALOG indicates that this is a dialog window.  If
 _NET_WM_WINDOW_TYPE is not set, then windows with WM_TRANSIENT_FOR set MUST
 be taken as this type.  
@@ -669,6 +685,7 @@ _NET_WM_STATE_MAXIMIZED_HORZ, ATOM
 _NET_WM_STATE_SHADED, ATOM
 _NET_WM_STATE_SKIP_TASKBAR, ATOM
 _NET_WM_STATE_SKIP_PAGER, ATOM
+_NET_WM_STATE_FULLSCREEN, ATOM
 ]]></programlisting>
       <para>
 An implementation MAY add new atoms to this list. Implementations
@@ -694,12 +711,17 @@ _NET_WM_STATE_MAXIMIZED_{VERT,HORZ} indi
 _NET_WM_STATE_SHADED indicates that the window is shaded.
 	</para>
 	<para>
-_NET_WM_SKIP_TASKBAR indicates that the window should not be included on a
+_NET_WM_STATE_SKIP_TASKBAR indicates that the window should not be included on a
 taskbar.
 	</para>
 	<para>
-_NET_WM_SKIP_PAGER indicates that the window should not be included on a
+_NET_WM_STATE_SKIP_PAGER indicates that the window should not be included on a
 pager.
+	</para>
+	<para>
+_NET_WM_STATE_FULLSCREEN indicates that the window should fill the entire screen
+and have no window decorations. For example, a presentation program would use
+this hint.
 	</para>
 	<para>
 To change the state of a mapped window, a Client MUST send a _NET_WM_STATE




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]