From fcd02097100db4d20d467987105da58b2c617e9a Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Tue, 25 Jun 2024 08:48:16 +0300 Subject: [PATCH] widgets cleanups --- Widgets/private/CollapsableMenu.cpp | 9 ++++++++- Widgets/private/ScrollableWidget.cpp | 14 +++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Widgets/private/CollapsableMenu.cpp b/Widgets/private/CollapsableMenu.cpp index d872770..f2a8947 100644 --- a/Widgets/private/CollapsableMenu.cpp +++ b/Widgets/private/CollapsableMenu.cpp @@ -21,7 +21,13 @@ void CollapsableMenu::eventDraw(Canvas& canvas) { canvas.rect(this->mArea.shrink(mBorderSize), mMenuColor, rounding); } -void CollapsableMenu::addWidgetToMenu(Widget* widget) { mBody.addWidget(widget); } +void CollapsableMenu::addWidgetToMenu(Widget* widget) { + mBody.addWidget(widget); + + EventHandler ev; + mBody.procWrapper(ev, this->mArea); + updateGeometry(); +} void CollapsableMenu::setLabel(const std::string& string) { mHeader.mLabel = string; } @@ -40,6 +46,7 @@ void CollapsableMenu::updateGeometry() { mHeader.setArea(getHeaderRect()); mBody.mEnable = !mCollapsed; + if (mCollapsed) { this->mArea.size.y = headerHeight; } else { diff --git a/Widgets/private/ScrollableWidget.cpp b/Widgets/private/ScrollableWidget.cpp index 7fc945e..8578473 100644 --- a/Widgets/private/ScrollableWidget.cpp +++ b/Widgets/private/ScrollableWidget.cpp @@ -96,6 +96,11 @@ ScrollableWindow::~ScrollableWindow() = default; void ScrollableWindow::eventProcess(const Events& events) { List& content = mContentWidget.mChildWidgets; + // to account all changed geometry of child widgets + for (auto widget : content) { + widget->procWrapper(events, this->mArea); + } + updateContents(content); updateContentSize(content); @@ -119,7 +124,14 @@ void ScrollableWindow::eventProcess(const Events& events) { } } -void ScrollableWindow::addWidget(Widget* widget) { mContentWidget.mChildWidgets.pushBack(widget); } +void ScrollableWindow::addWidget(Widget* widget) { + mContentWidget.mChildWidgets.pushBack(widget); + + List& content = mContentWidget.mChildWidgets; + updateContents(content); + updateContentSize(content); +} + void ScrollableWindow::clearContent() { mContentWidget.mChildWidgets.removeAll(); } List& ScrollableWindow::getContent() { return mContentWidget.mChildWidgets; }