diff options
| author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-08-06 22:30:24 +0300 |
|---|---|---|
| committer | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-08-06 22:38:29 +0300 |
| commit | 6c3866500b64be55c90c1b6811b5e2a0faea1211 (patch) | |
| tree | b523a0e5e5287b4a7972295a6e8b80b3ee85c615 /monsterwm.c | |
| parent | 3dbc49322f852d30cda5a72b7d31b8f8e84f6abb (diff) | |
do not tile on configure request
Diffstat (limited to 'monsterwm.c')
| -rw-r--r-- | monsterwm.c | 23 |
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]); } /** |
