]> Dogcows Code - chaz/openbox/blobdiff - src/Workspace.cc
Draw close button with line_width of 2.
[chaz/openbox] / src / Workspace.cc
index f4fab1cdf6b58b290208dbb5f189808c0785f29c..4a76bc8ad41677b9d7372bdc1d330ca4c0fef5ac 100644 (file)
@@ -237,9 +237,10 @@ void Workspace::showAll(void) {
   const BlackboxWindowList::iterator end = stackingList.end();
   for (; it != end; ++it) {
     BlackboxWindow *bw = *it;
-    // not normal windows cant focus from mouse enters anyways, so we dont
-    // need to unmap/remap them on workspace changes
-    if (! bw->isStuck() || bw->isNormal())
+    // sticky windows arent unmapped on a workspace change so we don't have ot
+    // map them, but sometimes on a restart, another app can unmap our sticky
+    // windows, so we map on startup always
+    if (! bw->isStuck() || screen->getBlackbox()->isStartup())
       bw->show();
   }
 }
@@ -254,9 +255,9 @@ void Workspace::hideAll(void) {
   const BlackboxWindowList::iterator end = lst.end();
   for (; it != end; ++it) {
     BlackboxWindow *bw = *it;
-    // not normal windows cant focus from mouse enters anyways, so we dont
-    // need to unmap/remap them on workspace changes
-    if (! bw->isStuck() || bw->isNormal())
+    // don't hide sticky windows, or they'll end up flickering on a workspace
+    // change
+    if (! bw->isStuck())
       bw->withdraw();
   }
 }
@@ -462,7 +463,9 @@ void Workspace::appendStackOrder(BlackboxWindowList &stack_order) const {
   BlackboxWindowList::const_reverse_iterator it = stackingList.rbegin();
   const BlackboxWindowList::const_reverse_iterator end = stackingList.rend();
   for (; it != end; ++it)
-    if ((*it)->isNormal())
+    // don't add desktop wnidows, or sticky windows more than once
+    if (! ( (*it)->isDesktop() ||
+            ((*it)->isStuck() && id != screen->getCurrentWorkspaceID())))
       stack_order.push_back(*it);
 }
 
This page took 0.022956 seconds and 4 git commands to generate.