From 01b0378ed32eb2011863393892717483004cc375 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 5 Dec 2018 15:51:05 +0800 Subject: Avoid search for ancestor in measure. --- src/ui/control.hpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/ui/control.hpp') diff --git a/src/ui/control.hpp b/src/ui/control.hpp index f3751ddf..b2dad9fd 100644 --- a/src/ui/control.hpp +++ b/src/ui/control.hpp @@ -22,6 +22,13 @@ namespace cru::ui class Window; + struct AdditionalMeasureInfo + { + bool horizontal_stretchable = true; + bool vertical_stretchable = true; + }; + + //the position cache struct ControlPositionCache { @@ -194,7 +201,7 @@ namespace cru::ui void InvalidateLayout(); - void Measure(const Size& available_size); + void Measure(const Size& available_size, const AdditionalMeasureInfo& additional_info); void Layout(const Rect& rect); @@ -314,11 +321,11 @@ namespace cru::ui //*************** region: layout *************** private: - Size OnMeasureCore(const Size& available_size); + Size OnMeasureCore(const Size& available_size, const AdditionalMeasureInfo& additional_info); void OnLayoutCore(const Rect& rect); protected: - virtual Size OnMeasureContent(const Size& available_size); + virtual Size OnMeasureContent(const Size& available_size, const AdditionalMeasureInfo& additional_info); virtual void OnLayoutContent(const Rect& rect); // Called by Layout after set position and size. -- cgit v1.2.3