Modules/WidgetsNew/private/FloatingWidget.cpp
2024-10-11 14:36:14 +03:00

32 lines
No EOL
723 B
C++

#include "FloatingWidget.hpp"
using namespace tp;
void FloatingWidget::process(const EventHandler& events) {
const auto relativePointer = events.getPointer();
bool inside = getRelativeArea().isInside(relativePointer);
if (inside && events.isPressed(InputID::MOUSE1)) {
mPointerStart = relativePointer;
mIsFloating = true;
}
if (mIsFloating && events.isReleased(InputID::MOUSE1)) {
mIsFloating = false;
}
mPointerCurrent = relativePointer;
setActive(mIsFloating || needUpdate());
}
void FloatingWidget::updateArea(RectF& area) const {
if (mIsFloating) {
area.pos += mPointerCurrent - mPointerStart;
}
}
void FloatingWidget::draw(Canvas& canvas) {
canvas.rect(getRelativeArea(), RGBA(0.5f), 10);
}