X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FWorkspace.cc;h=64710a59a999f86d14b089ef5600c22f2bbdf9da;hb=8941da8e41d15ae6729c04b2933d74869c25e857;hp=91bc141958865f3d706091bd1ee215c4db1840d1;hpb=12fcb33bfaa03b3c6245d15bfb1809f7facc857f;p=chaz%2Fopenbox diff --git a/src/Workspace.cc b/src/Workspace.cc index 91bc1419..64710a59 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -38,6 +38,8 @@ extern "C" { #endif // HAVE_STRING_H } +#include + #include #include @@ -222,7 +224,6 @@ void Workspace::lowerTransients(const BlackboxWindow * const win, wkspc->stackingList.push_back((*it)); } } - } @@ -488,11 +489,14 @@ bool Workspace::smartPlacement(Rect& win, const Rect& availableArea) { spaces.push_back(availableArea); //initially the entire screen is free //Find Free Spaces - BlackboxWindowList::iterator wit = windowList.begin(), - end = windowList.end(); + BlackboxWindowList::const_iterator wit = windowList.begin(), + end = windowList.end(); Rect tmp; for (; wit != end; ++wit) { const BlackboxWindow* const curr = *wit; + + if (curr->isShaded()) continue; + tmp.setRect(curr->frameRect().x(), curr->frameRect().y(), curr->frameRect().width() + screen->getBorderWidth(), curr->frameRect().height() + screen->getBorderWidth()); @@ -503,26 +507,26 @@ bool Workspace::smartPlacement(Rect& win, const Rect& availableArea) { if (screen->getPlacementPolicy() == BScreen::RowSmartPlacement) { if(screen->getRowPlacementDirection() == BScreen::LeftRight) { if(screen->getColPlacementDirection() == BScreen::TopBottom) - sort(spaces.begin(), spaces.end(), rowLRTB); + std::sort(spaces.begin(), spaces.end(), rowLRTB); else - sort(spaces.begin(), spaces.end(), rowLRBT); + std::sort(spaces.begin(), spaces.end(), rowLRBT); } else { if(screen->getColPlacementDirection() == BScreen::TopBottom) - sort(spaces.begin(), spaces.end(), rowRLTB); + std::sort(spaces.begin(), spaces.end(), rowRLTB); else - sort(spaces.begin(), spaces.end(), rowRLBT); + std::sort(spaces.begin(), spaces.end(), rowRLBT); } } else { if(screen->getColPlacementDirection() == BScreen::TopBottom) { if(screen->getRowPlacementDirection() == BScreen::LeftRight) - sort(spaces.begin(), spaces.end(), colLRTB); + std::sort(spaces.begin(), spaces.end(), colLRTB); else - sort(spaces.begin(), spaces.end(), colRLTB); + std::sort(spaces.begin(), spaces.end(), colRLTB); } else { if(screen->getRowPlacementDirection() == BScreen::LeftRight) - sort(spaces.begin(), spaces.end(), colLRBT); + std::sort(spaces.begin(), spaces.end(), colLRBT); else - sort(spaces.begin(), spaces.end(), colRLBT); + std::sort(spaces.begin(), spaces.end(), colRLBT); } }