From 1a53ed0791d9793ed8030d3a44e833e5e7c4542b Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 20 Nov 2021 21:25:29 +0800 Subject: ... --- src/ui/host/WindowHost.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/ui/host') diff --git a/src/ui/host/WindowHost.cpp b/src/ui/host/WindowHost.cpp index f60e2809..d26b43ab 100644 --- a/src/ui/host/WindowHost.cpp +++ b/src/ui/host/WindowHost.cpp @@ -180,18 +180,24 @@ void WindowHost::SetLayoutPreferToFillWindow(bool value) { void WindowHost::Relayout() { const auto available_size = - native_window_ ? native_window_->GetClientSize() - : Size{100, 100}; // a reasonable assumed size - Relayout(available_size); + native_window_ ? native_window_->GetClientSize() : Size::Infinate(); + RelayoutWithSize(available_size); } -void WindowHost::Relayout(const Size& available_size) { +void WindowHost::RelayoutWithSize(const Size& available_size, + bool set_window_size_to_fit_content) { root_render_object_->Measure( render::MeasureRequirement{available_size, IsLayoutPreferToFillWindow() ? render::MeasureSize(available_size) : render::MeasureSize::NotSpecified()}, render::MeasureSize::NotSpecified()); + + if (set_window_size_to_fit_content) { + auto rect = GetWindowRect(); + SetWindowRect({rect.GetLeftTop(), root_render_object_->GetSize()}); + } + root_render_object_->Layout(Point{}); for (auto& action : after_layout_stable_action_) action(); after_layout_event_.Raise(AfterLayoutEventArgs{}); -- cgit v1.2.3