Refactor of layout manager to add support for all menus (dirty unstable)
This commit is contained in:
parent
23fe07d3d3
commit
c57041a48e
21 changed files with 274 additions and 167 deletions
|
|
@ -47,30 +47,3 @@ FloatingLayout* FloatingWidget::layout() { return dynamic_cast<FloatingLayout*>(
|
|||
const FloatingLayout* FloatingWidget::layout() const {
|
||||
return dynamic_cast<const FloatingLayout*>(Widget::getLayout());
|
||||
}
|
||||
|
||||
FloatingMenu::FloatingMenu() : FloatingWidget() {
|
||||
setDebug("float menu", { 0.0, 0.9, 0.1, 0.7 });
|
||||
|
||||
// addChild(&mMenuLayout);
|
||||
|
||||
addChild(&mHeader);
|
||||
addChild(&mBodyLayout);
|
||||
|
||||
mHeader.setText("Menu");
|
||||
|
||||
mHeader.setSizePolicy(SizePolicy::Expanding, SizePolicy::Minimal);
|
||||
mBodyLayout.setSizePolicy(SizePolicy::Expanding, SizePolicy::Expanding);
|
||||
|
||||
mBodyLayout.setLayout(new ScrollableLayout(&mBodyLayout));
|
||||
mBodyLayout.addChild(&mScrollBar);
|
||||
mBodyLayout.addChild(&mContentWidget);
|
||||
|
||||
mContentWidget.setSizePolicy(SizePolicy::Minimal, SizePolicy::Minimal);
|
||||
|
||||
// getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
||||
// mBodyLayout.getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
||||
}
|
||||
|
||||
void FloatingMenu::setText(const std::string& text) {
|
||||
mHeader.setText(text);
|
||||
}
|
||||
|
|
|
|||
58
Widgets/private/widgets/MenuWidgets.cpp
Normal file
58
Widgets/private/widgets/MenuWidgets.cpp
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#include "MenuWidgets.hpp"
|
||||
|
||||
#include "ScrollableLayout.hpp"
|
||||
|
||||
using namespace tp;
|
||||
|
||||
CollapsingMenuWidget::CollapsingMenuWidget() {
|
||||
setDebug("Collapsing Menu", {1});
|
||||
|
||||
setSizePolicy(SizePolicy::Expanding, SizePolicy::Minimal);
|
||||
|
||||
addChild(&mHeader);
|
||||
addChild(&mContent);
|
||||
}
|
||||
|
||||
void CollapsingMenuWidget::process(const EventHandler& events) {
|
||||
mHover = mHeader.getArea().isInside(events.getPointer());
|
||||
|
||||
if (events.isPressed(InputID::MOUSE1) && mHover) setCollapsed(!mContent.getEnabled());
|
||||
}
|
||||
|
||||
void CollapsingMenuWidget::setCollapsed(bool collapsed) {
|
||||
mContent.setEnabled(collapsed);
|
||||
}
|
||||
|
||||
void CollapsingMenuWidget::draw(Canvas& canvas) {
|
||||
canvas.rect(getArea().relative(), colorBG, rounding);
|
||||
if (mHover) {
|
||||
canvas.rect(mHeader.getArea(), colorHover, rounding);
|
||||
}
|
||||
}
|
||||
|
||||
FloatingScrollableMenu::FloatingScrollableMenu() : FloatingWidget() {
|
||||
setDebug("float menu", { 0.0, 0.9, 0.1, 0.7 });
|
||||
|
||||
// addChild(&mMenuLayout);
|
||||
|
||||
addChild(&mHeader);
|
||||
addChild(&mBodyLayout);
|
||||
|
||||
mHeader.setText("Menu");
|
||||
|
||||
mHeader.setSizePolicy(SizePolicy::Expanding, SizePolicy::Minimal);
|
||||
mBodyLayout.setSizePolicy(SizePolicy::Expanding, SizePolicy::Expanding);
|
||||
|
||||
mBodyLayout.setLayout(new ScrollableLayout(&mBodyLayout));
|
||||
mBodyLayout.addChild(&mScrollBar);
|
||||
mBodyLayout.addChild(&mContentWidget);
|
||||
|
||||
mContentWidget.setSizePolicy(SizePolicy::Minimal, SizePolicy::Minimal);
|
||||
|
||||
// getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
||||
// mBodyLayout.getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
||||
}
|
||||
|
||||
void FloatingScrollableMenu::setText(const std::string& text) {
|
||||
mHeader.setText(text);
|
||||
}
|
||||
|
|
@ -107,7 +107,7 @@ void SliderWidget::process(const EventHandler& events) {
|
|||
}
|
||||
|
||||
void SliderWidget::draw(Canvas& canvas) {
|
||||
canvas.rect(getArea().relative(), mColorBG, mRounding);
|
||||
canvas.rect(getRelativeArea(), mColorBG, mRounding);
|
||||
|
||||
switch (mState) {
|
||||
case IDLE: canvas.rect(getHandleArea(), mColorIdle, mRounding); break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue