summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/window.cpp16
-rw-r--r--src/gui/widgets/window.h4
2 files changed, 15 insertions, 5 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;
diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h
index ef529a9f..975de335 100644
--- a/src/gui/widgets/window.h
+++ b/src/gui/widgets/window.h
@@ -349,6 +349,9 @@ class Window : public gcn::Window, gcn::WidgetListener
*/
static int getGuiAlpha();
+ protected:
+ static int mouseResize; /**< Active resize handles */
+
private:
enum ResizeHandles
{
@@ -394,7 +397,6 @@ class Window : public gcn::Window, gcn::WidgetListener
int mDefaultWidth; /**< Default window width */
int mDefaultHeight; /**< Default window height */
- static int mouseResize; /**< Active resize handles */
static int instances; /**< Number of Window instances */
Skin *mSkin; /**< Skin in use by this window */