summaryrefslogtreecommitdiffstats
path: root/wm-spec
diff options
context:
space:
mode:
authorjools <jools>2000-08-23 17:07:14 +0000
committerjools <jools>2000-08-23 17:07:14 +0000
commit4be26015c190edd919a06d25a9ef54d89897cf57 (patch)
tree734d251a09ac92a014c5087d2f6bf2d50e34f573 /wm-spec
parentfbc02607dcf70c8fa29eb03c0f49b1623d086867 (diff)
downloadxdg-specs-4be26015c190edd919a06d25a9ef54d89897cf57.tar.xz
updated Window Movement section. mainly
Diffstat (limited to 'wm-spec')
-rw-r--r--wm-spec/wm-spec.sgml117
1 files changed, 108 insertions, 9 deletions
diff --git a/wm-spec/wm-spec.sgml b/wm-spec/wm-spec.sgml
index 172f14b..5faee31 100644
--- a/wm-spec/wm-spec.sgml
+++ b/wm-spec/wm-spec.sgml
@@ -10,7 +10,7 @@
<sect2>
<title>Version</title>
<para>
-This spec is version 1.0pre1.
+This spec is version 1.0pre2.
</para>
</sect2>
<sect2>
@@ -43,6 +43,17 @@ modifications.
</para>
</sect2>
<sect2>
+ <title>Changes since 1.0pre1</title>
+ <itemizedlist>
+ <listitem><para>
+Removed implementation note concerning Gnome's (potential) file manager behaviour.
+ </para></listitem>
+ <listitem><para>
+The Window Movement section of the implementation notes has been revised.
+ </para></listitem>
+ </itemizedlist>
+ </sect2>
+ <sect2>
<title>Changes since 1.9f</title>
<itemizedlist>
<listitem><para>
@@ -703,9 +714,6 @@ managing lots of small shaped windows. The file manager draws the background
on this window. There should be a root property with a window handle for use
in applications that want to draw the background (xearth).
</para>
- <para>
-Several GNOME file manager developers have accepted this model
- </para>
</sect2>
<sect2>
<title>Implementing enhanced support for application transient windows</title>
@@ -738,13 +746,104 @@ unlikely to break anything, it seems reasonable to document it as standard.
<sect2>
<title>Window Movement</title>
<para>
-According to the ICCCM, applications should not see unnecessary differences
-between running with or without a window manager. Therefore window movements
-for already mapped windows, such as ones requested by XMoveWindow(Display,
-Window, X, Y) have to move the window Window to the coordinates (X, Y) and not
-cause the window's window manager frame window to end up at (X, Y).
+Window manager implementors should refer to the ICCCM for definitive
+specifications of how to handle MapRequest and ConfigureRequest events.
+However, since these aspects of the ICCCM are easily misread, this
+document offers the following clarifications:
</para>
+ <itemizedlist>
+ <listitem><para>
+Window managers MUST honour the win_gravity field of WM_NORMAL_HINTS
+ for both MapRequest _and_ ConfigureRequest events [1]
+ </para></listitem>
+ <listitem><para>
+Applications are free to change their win_gravity setting at any time
+ </para>
+ <para>
+If application changes its gravity then Window manager should adjust the
+reference point, so that client window will not move as the result.
+For example if client's gravity was NorthWestGravity and reference point
+was
+at the top-left corner of the frame window, then after change of gravity to
+the SouthEast reference point should be adjusted to point to the
+lower-right
+corner of the frame.
+ </para></listitem>
+ <listitem><para>
+When generating synthetic ConfigureNotify events, the position given
+ MUST be the top-left corner of the client window in relation to the
+ origin of the root window (i.e., ignoring win_gravity) [2]
+ </para></listitem>
+ <listitem><para>
+XMoveWindow( w, x, y) behaviour depends on the window gravity:
+ </para>
+ <para>
+StaticGravity:
+ </para>
+ <para>
+ window's left top corner will be placed at (x,y)
+ </para>
+ <para>
+NorthWestGravity:
+ </para>
+ <para>
+ window frame's left top corner will be placed at (x,y)
+ </para>
+ <para>
+NorthEastGravity:
+ </para>
+ <para>
+ window frame's right top corner will be placed at (x,y)
+ </para>
+ <para>
+SouthWestGravity:
+ </para>
+ <para>
+ window frame's left bottom corner will be placed at (x,y)
+ </para>
+ <para>
+
+SouthEastGravity:
+ </para>
+ <para>
+ window frame's right bottom corner will be placed at (x,y)
+ </para>
+ <para>
+
+CenterGravity:
+ </para>
+ <para>
+ window frame's center will be placed at (x,y)
+ </para>
+ <para>
+
+(x,y) will become a new "reference point" for the client window.
+ </para></listitem>
+ <listitem><para>
+Implementation Note for Application developers:
+ </para>
+ <para>
+When client window is resized - its reference point does not move.
+So for example if window has SouthEastGravity and it is resized -
+the bottom-right corner of its frame will not move but instead
+top-left corner will be adjusted by the difference in size.
+ </para></listitem>
+ <listitem><para>
+Implementation Note for WM developers :
+ </para>
+ <para>
+when calculating reference point at the time of initial placement -
+initial window's width should be taken into consideration, as if it
+was the frame for this window.
+ </para></listitem>
+ </itemizedlist>
+ <para>
+[1] ICCCM Version 2.0, §4.1.2.3 and §4.1.5
+ </para>
+ <para>
+[2] ICCCM Version 2.0, §4.2.3
+ </para>
</sect2>
<sect2>
<title>Window-in-Window MDI</title>