]> Dogcows Code - chaz/openbox/blobdiff - src/client.cc
if a dock has the 'below' state set, then it goes in the normal window layer
[chaz/openbox] / src / client.cc
index a2106d867749f901fa0d78d85b3cea03af65b64c..2bb157806bce3ac5d26980e48958d68ea245bfab 100644 (file)
@@ -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
This page took 0.023209 seconds and 4 git commands to generate.