Use a single widget for resize, always show handle

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-01-26 18:50:31 +00:00
parent ec15f95f32
commit 5282da24e9
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
6 changed files with 77 additions and 58 deletions

View file

@ -59,6 +59,8 @@ namespace app {
struct ResizeHandle : widget::OpaqueWidget {
math::Vec size;
void draw(const DrawArgs& args) override {
nvgStrokeColor(args.vg, nvgRGBf(1, 1, 1));
nvgStrokeWidth(args.vg, 1);
@ -95,6 +97,27 @@ struct ResizeHandle : widget::OpaqueWidget {
nvgLineTo(args.vg, 0, box.size.y + 11);
nvgStroke(args.vg);
}
void onHover(const HoverEvent& e) override {
e.consume(this);
}
void onEnter(const EnterEvent& e) override {
glfwSetCursor(nullptr, (GLFWcursor*)0x1);
}
void onLeave(const LeaveEvent& e) override {
glfwSetCursor(nullptr, nullptr);
}
void onDragStart(const DragStartEvent&) override {
size = APP->window->getSize();
}
void onDragMove(const DragMoveEvent& e) override {
size = size.plus(e.mouseDelta);
APP->window->setSize(size.round());
}
};
@ -151,11 +174,6 @@ Scene::Scene() {
}
void hideResizeHandle(Scene* scene) {
scene->internal->resizeHandle->hide();
}
Scene::~Scene() {
delete internal;
}