From 12fcb33bfaa03b3c6245d15bfb1809f7facc857f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 28 May 2002 12:39:23 +0000 Subject: re-added UnderMouse Placement added NLS support in the new configure system. --- src/Workspace.cc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/Workspace.cc') diff --git a/src/Workspace.cc b/src/Workspace.cc index 0bc906cb..91bc1419 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -556,6 +556,31 @@ bool Workspace::smartPlacement(Rect& win, const Rect& availableArea) { } +bool Workspace::underMousePlacement(Rect &win, const Rect &availableArea) { + int x, y, rx, ry; + Window c, r; + unsigned int m; + XQueryPointer(screen->getBlackbox()->getXDisplay(), screen->getRootWindow(), + &r, &c, &rx, &ry, &x, &y, &m); + x = rx - win.width() / 2; + y = ry - win.height() / 2; + + if (x < availableArea.x()) + x = availableArea.x(); + if (y < availableArea.y()) + y = availableArea.y(); + if (x + win.width() > availableArea.x() + availableArea.width()) + x = availableArea.x() + availableArea.width() - win.width(); + if (y + win.height() > availableArea.y() + availableArea.height()) + y = availableArea.y() + availableArea.height() - win.height(); + + win.setX(x); + win.setY(y); + + return True; +} + + bool Workspace::cascadePlacement(Rect &win, const Rect &availableArea) { if ((cascade_x > static_cast(availableArea.width() / 2)) || (cascade_y > static_cast(availableArea.height() / 2))) @@ -583,6 +608,8 @@ void Workspace::placeWindow(BlackboxWindow *win) { case BScreen::ColSmartPlacement: placed = smartPlacement(new_win, availableArea); break; + case BScreen::UnderMousePlacement: + placed = underMousePlacement(new_win, availableArea); default: break; // handled below } // switch -- cgit v1.2.3