diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-02-05 06:44:39 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-02-05 06:44:39 +0000 |
| commit | 635af8c38bdb1ca47ae0b8274167d4e86100a40e (patch) | |
| tree | 3301bb93dfbfcfd65bbd7d2dc76093c764a39210 /src/client.cc | |
| parent | bc099a5fdbc16d55f95f585f0509316aedbf9cf3 (diff) | |
make sure windows aren't doing things they aren't allowed when their allowed actions changes.
remaximize windows when their decorations are changed
Diffstat (limited to 'src/client.cc')
| -rw-r--r-- | src/client.cc | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/client.cc b/src/client.cc index d42a962a..83fd1107 100644 --- a/src/client.cc +++ b/src/client.cc @@ -264,11 +264,8 @@ void Client::setupDecorAndFunctions() _decorations &= ~Decor_Border; if (! (_mwmhints.decorations & MwmDecor_Handle)) _decorations &= ~Decor_Handle; - if (! (_mwmhints.decorations & MwmDecor_Title)) { + if (! (_mwmhints.decorations & MwmDecor_Title)) _decorations &= ~Decor_Titlebar; - // if we don't have a titlebar, then we cannot shade! - _functions &= ~Func_Shade; - } if (! (_mwmhints.decorations & MwmDecor_Iconify)) _decorations &= ~Decor_Iconify; if (! (_mwmhints.decorations & MwmDecor_Maximize)) @@ -313,16 +310,17 @@ void Client::setupDecorAndFunctions() if (_disabled_decorations & Decor_Close) _decorations &= ~Decor_Close; - // You can't shade without a titlebar + // if we don't have a titlebar, then we cannot shade! if (!(_decorations & Decor_Titlebar)) _functions &= ~Func_Shade; - + changeAllowedActions(); if (frame) { frame->adjustSize(); // change the decors on the frame frame->adjustPosition(); // with more/less decorations, we may need to be // moved + remaximize(); // with new decor, the window's maximized size may change } } @@ -1344,6 +1342,21 @@ void Client::changeAllowedActions(void) otk::Property::set(_window, otk::Property::atoms.net_wm_allowed_actions, otk::Property::atoms.atom, actions, num); + + // make sure the window isn't breaking any rules now + + if (!(_functions & Func_Shade) && _shaded) + if (frame) shade(false); + else _shaded = false; + if (!(_functions & Func_Iconify) && _iconic) + if (frame) setDesktop(openbox->screen(_screen)->desktop()); + else _iconic = false; + if (!(_functions & Func_Fullscreen) && _fullscreen) + if (frame) fullscreen(false); + else _fullscreen = false; + if (!(_functions & Func_Maximize) && (_max_horz || _max_vert)) + if (frame) maximize(false, 0); + else _max_vert = _max_horz = false; } |
