]> 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 381305f75cf4962de8198f1f322cc491a6a04a0b..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;
@@ -979,6 +982,8 @@ void OBClient::setStackLayer(int l)
     _below = true;  // below
   }
   changeState();
+  calcLayer();
+  Openbox::instance->screen(_screen)->restack(true, this); // raise
 }
 
 
This page took 0.020096 seconds and 4 git commands to generate.