diff options
Diffstat (limited to 'src/gui/widgets/window.cpp')
-rw-r--r-- | src/gui/widgets/window.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index e09986d2..25ca7684 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -371,6 +371,8 @@ void Window::mousePressed(gcn::MouseEvent &event) // Handle window resizing mouseResize = getResizeHandles(event); + if (mouseResize) + mMoved = false; } } @@ -405,12 +407,15 @@ void Window::mouseMoved(gcn::MouseEvent &event) switch (resizeHandles) { case BOTTOM | RIGHT: + case TOP | LEFT: gui->setCursorType(Cursor::RESIZE_DOWN_RIGHT); break; case BOTTOM | LEFT: + case TOP | RIGHT: gui->setCursorType(Cursor::RESIZE_DOWN_LEFT); break; case BOTTOM: + case TOP: gui->setCursorType(Cursor::RESIZE_DOWN); break; case RIGHT: @@ -676,14 +681,17 @@ void Window::adjustPositionAfterResize(int oldScreenWidth, int oldScreenHeight) int Window::getResizeHandles(gcn::MouseEvent &event) { int resizeHandles = 0; - const int y = event.getY(); - if (mGrip && y > (int) mTitleBarHeight) + if (mGrip) { const int x = event.getX(); + const int y = event.getY(); + const int p = getPadding(); + + const bool inPadding = (x < p || x > getWidth() - p) || + (y < p || y > getHeight() - p); - if (!getChildrenArea().isPointInRect(x, y) && - event.getSource() == this) + if (inPadding && event.getSource() == this) { resizeHandles |= (x > getWidth() - resizeBorderWidth) ? RIGHT : (x < resizeBorderWidth) ? LEFT : 0; |