Modules/WidgetsNew/public/FloatingWidget.hpp
IlyaShurupov 4b6e7da994 Refactor
2024-11-24 22:41:14 +03:00

61 lines
No EOL
1.1 KiB
C++

#pragma once
#include "SimpleWidgets.hpp"
#include "LayoutWidget.hpp"
namespace tp {
class FloatingWidget : public Widget {
public:
FloatingWidget() {
setDebug("float", { 0.0, 0.9, 0.1, 0.7 });
}
void process(const EventHandler& events) override;
void adjustRect() override;
void draw(Canvas& canvas) override;
RectF resizeHandleRect();
bool propagateEventsToChildren() const override;
private:
bool mIsFloating = false;
bool mIsResizing = false;
halnf mHandleSize = 10;
halnf mHandlePadding = 2;
Vec2F mPointerStart;
Vec2F mPointerCurrent;
};
class FloatingMenu : public FloatingWidget {
public:
FloatingMenu() {
setDebug("float menu", { 0.0, 0.9, 0.1, 0.7 });
addChild(&mMenuLayout);
mMenuLayout.addChild(&mHeader);
mMenuLayout.addChild(&mBodyLayout);
addToMenu(&mTestButton);
mHeader.setText("Menu");
}
public:
void addToMenu(Widget* widget) {
mBodyLayout.addChild(widget);
}
private:
VerticalLayout mMenuLayout;
VerticalLayout mBodyLayout;
LabelWidget mHeader;
ButtonWidget mTestButton;
};
}