X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fclient.cc;h=2bb157806bce3ac5d26980e48958d68ea245bfab;hb=aef2ab758da67369e365c8d59c6242fa58b9e5b2;hp=a2106d867749f901fa0d78d85b3cea03af65b64c;hpb=7bae794382c7a64a6427b16d1339b98120a5166f;p=chaz%2Fopenbox diff --git a/src/client.cc b/src/client.cc index a2106d86..2bb15780 100644 --- a/src/client.cc +++ b/src/client.cc @@ -315,9 +315,12 @@ void OBClient::getShaped() 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; @@ -966,6 +969,24 @@ void OBClient::changeState() } + +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