From 89d5a6d87c433a1179881f65dd5c7e0b6c0d5e58 Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Fri, 11 Oct 2024 15:17:01 +0300 Subject: [PATCH] Sizing fixes --- WidgetsNew/examples/Example.cpp | 22 ++++++++++++++-------- WidgetsNew/private/RootWidget.cpp | 1 + WidgetsNew/private/Widget.cpp | 6 ++++-- WidgetsNew/public/FloatingWidget.hpp | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/WidgetsNew/examples/Example.cpp b/WidgetsNew/examples/Example.cpp index 4f806d6..effd8de 100644 --- a/WidgetsNew/examples/Example.cpp +++ b/WidgetsNew/examples/Example.cpp @@ -27,22 +27,26 @@ public: void setup1() { mRootWidget.setRootWidget(&mDockLayout); - mDockLayout.addChild(&mFloatingMenu); mDockLayout.addChild(&mFloatingMenu2); + mDockLayout.addChild(&mFloatingMenu); - mDockLayout.setCenterWidget(&mButton4); - mDockLayout.dockWidget(&mButton3, DockLayoutWidget::RIGHT); + mDockLayout.setCenterWidget(&mButton5); + mDockLayout.dockWidget(&mButton6, DockLayoutWidget::RIGHT); mFloatingMenu.addToMenu(&mButton); mFloatingMenu2.addToMenu(&mButton2); + //mFloatingMenu2.addToMenu(&mFloatingMenu); + mFloatingMenu2.addToMenu(&mButton3); + mFloatingMenu2.addToMenu(&mButton4); mButton.setAction([this]() { mButton2.setColor(RGBA::random()); }); mButton2.setAction([this]() { mButton.setColor(RGBA::random()); }); - mButton3.setAction([this]() { mDockLayout.dockWidget(&mFloatingMenu, DockLayoutWidget::Side::LEFT); }); - mButton3.setText("dock"); + mButton5.setAction([this]() { mDockLayout.dockWidget(&mFloatingMenu, DockLayoutWidget::Side::LEFT); }); + mButton6.setAction([this]() { mDockLayout.undockWidget(DockLayoutWidget::Side::LEFT); }); - mButton4.setAction([this]() { mDockLayout.undockWidget(DockLayoutWidget::Side::LEFT); }); + mButton5.setText("dock"); + mButton6.setText("undock"); // mLayoutWidget.addChild(&mButton2); @@ -53,8 +57,8 @@ public: // mAnimationTestWidget.addChild(&mWidgetFloating); // mAnimationTestWidget.addChild(&mLayoutWidget); - RootWidget::setWidgetArea(mFloatingMenu2, { 300, 100, 150, 200 }); - RootWidget::setWidgetArea(mFloatingMenu, { 100, 100, 150, 200 }); + RootWidget::setWidgetArea(mFloatingMenu2, { 300, 100, 150, 500 }); + RootWidget::setWidgetArea(mFloatingMenu, { 100, 100, 150, 300 }); // mWidgetFloating.addChild(&mLayoutWidget); @@ -120,6 +124,8 @@ private: ButtonWidget mButton2; ButtonWidget mButton3; ButtonWidget mButton4; + ButtonWidget mButton5; + ButtonWidget mButton6; FloatingWidget mFloatingWidget; FloatingMenu mFloatingMenu; diff --git a/WidgetsNew/private/RootWidget.cpp b/WidgetsNew/private/RootWidget.cpp index a9c4a2a..c948b86 100644 --- a/WidgetsNew/private/RootWidget.cpp +++ b/WidgetsNew/private/RootWidget.cpp @@ -16,6 +16,7 @@ void RootWidget::processFrame(EventHandler* events, const RectF& screenArea) { if (mDebug) { mScreenArea.size -= { 400, 0 }; + events->setEnableKeyEvents(true); if (events->isPressed(InputID::K)) mDebugStopProcessing = !mDebugStopProcessing; if (mDebugStopProcessing) return; } diff --git a/WidgetsNew/private/Widget.cpp b/WidgetsNew/private/Widget.cpp index 9540e40..b63d353 100644 --- a/WidgetsNew/private/Widget.cpp +++ b/WidgetsNew/private/Widget.cpp @@ -209,6 +209,10 @@ void Widget::adjustLayout(bool vertical) { Vec2F availableSize = getRelativeAreaT().size; for (auto child : mChildren) { + if (child->mSizePolicy[!vertical] != SizePolicy::Minimal) { + child->pickRect(); + } + if (child->mSizePolicy[vertical] == SizePolicy::Expanding) { contributors.emplace_back( child, true ); @@ -217,8 +221,6 @@ void Widget::adjustLayout(bool vertical) { child->setAreaCache(area); child->clampRect(); - } else { - // child->triggerWidgetUpdate("expand child in layout"); } contentSize += child->getAreaCache().size; } diff --git a/WidgetsNew/public/FloatingWidget.hpp b/WidgetsNew/public/FloatingWidget.hpp index 8f9bcb9..3de7abc 100644 --- a/WidgetsNew/public/FloatingWidget.hpp +++ b/WidgetsNew/public/FloatingWidget.hpp @@ -9,7 +9,7 @@ namespace tp { FloatingWidget() { setDebug("float", { 0.0, 0.9, 0.1, 1 }); - // mSizePolicy = { SizePolicy::Contract, SizePolicy::Contract }; + mSizePolicy = { SizePolicy::Fixed, SizePolicy::Fixed }; mLayoutPolicy = LayoutPolicy::Horizontally; }