Set up resize cursor under resize handle (X11 only for now)
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
b29c5ee81d
commit
e226cbe101
2 changed files with 24 additions and 8 deletions
2
dpf
2
dpf
|
@ -1 +1 @@
|
||||||
Subproject commit ed6705a161e13565391e020389b6c1b7bd5ab742
|
Subproject commit 7357d71fa9ce01eab8707e775f862be7e3be0676
|
|
@ -29,7 +29,8 @@ public:
|
||||||
explicit ResizeHandle(Window& window)
|
explicit ResizeHandle(Window& window)
|
||||||
: TopLevelWidget(window),
|
: TopLevelWidget(window),
|
||||||
handleSize(16),
|
handleSize(16),
|
||||||
resizing(false)
|
hasCursor(false),
|
||||||
|
isResizing(false)
|
||||||
{
|
{
|
||||||
resetArea();
|
resetArea();
|
||||||
}
|
}
|
||||||
|
@ -38,7 +39,7 @@ public:
|
||||||
explicit ResizeHandle(TopLevelWidget* const tlw)
|
explicit ResizeHandle(TopLevelWidget* const tlw)
|
||||||
: TopLevelWidget(tlw->getWindow()),
|
: TopLevelWidget(tlw->getWindow()),
|
||||||
handleSize(16),
|
handleSize(16),
|
||||||
resizing(false)
|
isResizing(false)
|
||||||
{
|
{
|
||||||
resetArea();
|
resetArea();
|
||||||
}
|
}
|
||||||
|
@ -64,15 +65,16 @@ protected:
|
||||||
|
|
||||||
if (ev.press && area.contains(ev.pos))
|
if (ev.press && area.contains(ev.pos))
|
||||||
{
|
{
|
||||||
resizing = true;
|
isResizing = true;
|
||||||
resizingSize = Size<double>(getWidth(), getHeight());
|
resizingSize = Size<double>(getWidth(), getHeight());
|
||||||
lastResizePoint = ev.pos;
|
lastResizePoint = ev.pos;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resizing && ! ev.press)
|
if (isResizing && ! ev.press)
|
||||||
{
|
{
|
||||||
resizing = false;
|
isResizing = false;
|
||||||
|
recheckCursor(ev.pos);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +83,11 @@ protected:
|
||||||
|
|
||||||
bool onMotion(const MotionEvent& ev) override
|
bool onMotion(const MotionEvent& ev) override
|
||||||
{
|
{
|
||||||
if (! resizing)
|
if (! isResizing)
|
||||||
|
{
|
||||||
|
recheckCursor(ev.pos);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const Size<double> offset(ev.pos.getX() - lastResizePoint.getX(),
|
const Size<double> offset(ev.pos.getX() - lastResizePoint.getX(),
|
||||||
ev.pos.getY() - lastResizePoint.getY());
|
ev.pos.getY() - lastResizePoint.getY());
|
||||||
|
@ -119,10 +124,21 @@ private:
|
||||||
uint handleSize;
|
uint handleSize;
|
||||||
|
|
||||||
// event handling state
|
// event handling state
|
||||||
bool resizing;
|
bool hasCursor, isResizing;
|
||||||
Point<double> lastResizePoint;
|
Point<double> lastResizePoint;
|
||||||
Size<double> resizingSize;
|
Size<double> resizingSize;
|
||||||
|
|
||||||
|
void recheckCursor(const Point<double>& pos)
|
||||||
|
{
|
||||||
|
const bool shouldSetCursor = area.contains(pos);
|
||||||
|
|
||||||
|
if (shouldSetCursor == hasCursor)
|
||||||
|
return;
|
||||||
|
|
||||||
|
hasCursor = shouldSetCursor;
|
||||||
|
setCursor(shouldSetCursor ? kMouseCursorDiagonal : kMouseCursorArrow);
|
||||||
|
}
|
||||||
|
|
||||||
void resetArea()
|
void resetArea()
|
||||||
{
|
{
|
||||||
const double scaleFactor = getScaleFactor();
|
const double scaleFactor = getScaleFactor();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue