void OBClient::calcLayer() {
if (_iconic) _layer = OBScreen::Layer_Icon;
- else if (_type == Type_Desktop) _layer = OBScreen::Layer_Desktop;
- else if (_type == Type_Dock) _layer = OBScreen::Layer_Top;
else if (_fullscreen) _layer = OBScreen::Layer_Fullscreen;
+ else if (_type == Type_Desktop) _layer = OBScreen::Layer_Desktop;
+ else if (_type == Type_Dock) {
+ if (!_below) _layer = OBScreen::Layer_Top;
+ else _layer = OBScreen::Layer_Normal;
+ }
else if (_above) _layer = OBScreen::Layer_Above;
else if (_below) _layer = OBScreen::Layer_Below;
else _layer = OBScreen::Layer_Normal;
}
+
+void OBClient::setStackLayer(int l)
+{
+ if (l == 0)
+ _above = _below = false; // normal
+ else if (l > 0) {
+ _above = true;
+ _below = false; // above
+ } else {
+ _above = false;
+ _below = true; // below
+ }
+ changeState();
+ calcLayer();
+ Openbox::instance->screen(_screen)->restack(true, this); // raise
+}
+
+
void OBClient::shade(bool shade)
{
if (shade == _shaded) return; // already done