]> Dogcows Code - chaz/openbox/blobdiff - src/Workspace.cc
add default workspace change bindings
[chaz/openbox] / src / Workspace.cc
index ac8b9edbfeed442eb9de64e5de77fab688a3e656..a7887945470223faa69d5b12ce458816fd2f4332 100644 (file)
@@ -615,8 +615,12 @@ bool Workspace::smartPlacement(Rect& win) {
   for (; wit != end; ++wit) {
     const BlackboxWindow* const curr = *wit;
 
-    if (curr->isShaded() && screen->getPlaceIgnoreShaded()) continue;
-    if (curr->isMaximizedFull() && screen->getPlaceIgnoreMaximized()) continue;
+    // watch for shaded windows and full-maxed windows
+    if (curr->isShaded()) {
+      if (screen->getPlaceIgnoreShaded()) continue;
+    } else if (curr->isMaximizedFull()) {
+      if (screen->getPlaceIgnoreMaximized()) continue;
+    }
 
     tmp.setRect(curr->frameRect().x(), curr->frameRect().y(),
                 curr->frameRect().width() + screen->getBorderWidth(),
@@ -681,7 +685,7 @@ bool Workspace::smartPlacement(Rect& win) {
 }
 
 
-bool Workspace::underMousePlacement(Rect &win) const {
+bool Workspace::underMousePlacement(Rect &win) {
   int x, y, rx, ry;
   Window c, r;
   unsigned int m;
@@ -781,8 +785,10 @@ void Workspace::placeWindow(BlackboxWindow *win) {
     cascadePlacement(new_win, (win->getTitleHeight() +
                                screen->getBorderWidth() * 2));
 
-  // make sure the placement was valid
-  assert(screen->availableArea().contains(new_win));
+  if (new_win.right() > screen->availableArea().right())
+    new_win.setX(screen->availableArea().left());
+  if (new_win.bottom() > screen->availableArea().bottom())
+    new_win.setY(screen->availableArea().top());
 
   win->configure(new_win.x(), new_win.y(), new_win.width(), new_win.height());
 }
This page took 0.023525 seconds and 4 git commands to generate.