void OBClient::setState(StateAction action, long data1, long data2)
{
const otk::OBProperty *property = Openbox::instance->property();
+ bool restack = false, shadestate = _shaded;
if (!(action == State_Add || action == State_Remove ||
action == State_Toggle))
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_shaded)) {
if (_shaded) continue;
- _shaded = true;
- // XXX: hide the client window
+ // shade when we're all thru here
+ shadestate = true;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_skip_taskbar)) {
_skip_taskbar = true;
property->atom(otk::OBProperty::net_wm_state_fullscreen)) {
if (_fullscreen) continue;
_fullscreen = true;
- // XXX: raise the window n shit
+ restack = false;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_above)) {
if (_above) continue;
_above = true;
- // XXX: raise the window n shit
+ restack = true;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_below)) {
if (_below) continue;
_below = true;
- // XXX: lower the window n shit
+ restack = true;
}
} else { // action == State_Remove
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_shaded)) {
if (!_shaded) continue;
- _shaded = false;
- // XXX: show the client window
+ // unshade when we're all thru here
+ shadestate = false;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_skip_taskbar)) {
_skip_taskbar = false;
property->atom(otk::OBProperty::net_wm_state_fullscreen)) {
if (!_fullscreen) continue;
_fullscreen = false;
- // XXX: lower the window to its proper layer
+ restack = true;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_above)) {
if (!_above) continue;
_above = false;
- // XXX: lower the window to its proper layer
+ restack = true;
} else if (state ==
property->atom(otk::OBProperty::net_wm_state_below)) {
if (!_below) continue;
_below = false;
- // XXX: raise the window to its proper layer
+ restack = true;
}
}
}
- calcLayer();
- Openbox::instance->screen(_screen)->restack(true, this); // raise
+ if (shadestate != _shaded)
+ shade(shadestate);
+ if (restack) {
+ calcLayer();
+ Openbox::instance->screen(_screen)->restack(true, this); // raise
+ }
}
{
// XXX: only if not overridden or something!!! MORE LOGIC HERE!!
_decorations = _client->decorations();
- _decorations = 0xffffffff;
// true/false for whether to show each element of the titlebar
bool tit_i = false, tit_m = false, tit_s = false, tit_c = false;