aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kanakarakis <ivan.kanak@gmail.com>2012-08-06 22:30:24 +0300
committerIvan Kanakarakis <ivan.kanak@gmail.com>2012-08-06 22:38:29 +0300
commit6c3866500b64be55c90c1b6811b5e2a0faea1211 (patch)
treeb523a0e5e5287b4a7972295a6e8b80b3ee85c615
parent3dbc49322f852d30cda5a72b7d31b8f8e84f6abb (diff)
do not tile on configure request
-rw-r--r--monsterwm.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/monsterwm.c b/monsterwm.c
index 4673e84..8995aff 100644
--- a/monsterwm.c
+++ b/monsterwm.c
@@ -348,27 +348,30 @@ void clientmessage(XEvent *e) {
* a configure request attempts to reconfigure those properties for a window.
*
* we don't really care about those values, because a tiling wm will impose
- * by its own, the position, size and stacking order of windows.
- * however the requested values must be set initially, or
- * the window will misbehave (see gedit, geany, gvim etc).
+ * its own values for those properties.
+ * however the requested values must be set initially for some windows,
+ * otherwise the window will misbehave or even crash (see gedit, geany, gvim).
*
- * this is actually not respecting the prefered size of the windows,
* some windows depend on the number of columns and rows to set their
- * size, and not on pixels (terminals, consoles, some editors).
+ * size, and not on pixels (terminals, consoles, some editors etc).
* normally those clients when tiled and respecting the prefered size
* will create gaps around them (window_hints).
- * when the configure request is sent and processed,
- * clients are tiled to match the wm's prefered size.
+ * however, clients are tiled to match the wm's prefered size,
+ * not respecting those prefered values.
*
- * set the appropriate values as requested,
- * then tile the desktop that contain that window.
+ * some windows implement window manager functions themselves.
+ * that is windows explicitly steal focus, or manage subwindows,
+ * or move windows around w/o the window manager's help, etc..
+ * to disallow this behavior, one should 'tile()' the desktop
+ * from which the configure request came from.
+ * however we skip this, and let such apps (ie Chromium) do their thing.
+ * to reset the window just retile the desktop.
*/
void configurerequest(XEvent *e) {
XConfigureRequestEvent *ev = &e->xconfigurerequest;
XWindowChanges wc = { ev->x, ev->y, ev->width, ev->height, ev->border_width, ev->above, ev->detail };
XConfigureWindow(dis, ev->window, ev->value_mask, &wc);
XSync(dis, False);
- tile(&desktops[currdeskidx]);
}
/**