diff --git a/dpf b/dpf index ed6705a..7357d71 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit ed6705a161e13565391e020389b6c1b7bd5ab742 +Subproject commit 7357d71fa9ce01eab8707e775f862be7e3be0676 diff --git a/src/ResizeHandle.hpp b/src/ResizeHandle.hpp index 2e2ece0..f144bb8 100644 --- a/src/ResizeHandle.hpp +++ b/src/ResizeHandle.hpp @@ -29,7 +29,8 @@ public: explicit ResizeHandle(Window& window) : TopLevelWidget(window), handleSize(16), - resizing(false) + hasCursor(false), + isResizing(false) { resetArea(); } @@ -38,7 +39,7 @@ public: explicit ResizeHandle(TopLevelWidget* const tlw) : TopLevelWidget(tlw->getWindow()), handleSize(16), - resizing(false) + isResizing(false) { resetArea(); } @@ -64,15 +65,16 @@ protected: if (ev.press && area.contains(ev.pos)) { - resizing = true; + isResizing = true; resizingSize = Size(getWidth(), getHeight()); lastResizePoint = ev.pos; return true; } - if (resizing && ! ev.press) + if (isResizing && ! ev.press) { - resizing = false; + isResizing = false; + recheckCursor(ev.pos); return true; } @@ -81,8 +83,11 @@ protected: bool onMotion(const MotionEvent& ev) override { - if (! resizing) + if (! isResizing) + { + recheckCursor(ev.pos); return false; + } const Size offset(ev.pos.getX() - lastResizePoint.getX(), ev.pos.getY() - lastResizePoint.getY()); @@ -119,10 +124,21 @@ private: uint handleSize; // event handling state - bool resizing; + bool hasCursor, isResizing; Point lastResizePoint; Size resizingSize; + void recheckCursor(const Point& pos) + { + const bool shouldSetCursor = area.contains(pos); + + if (shouldSetCursor == hasCursor) + return; + + hasCursor = shouldSetCursor; + setCursor(shouldSetCursor ? kMouseCursorDiagonal : kMouseCursorArrow); + } + void resetArea() { const double scaleFactor = getScaleFactor();