From 014aaf773fd95a7f0dd1a766023a21fb6b54a1a1 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 9 Nov 2020 20:28:39 +0800 Subject: ... --- include/cru/ui/controls/RootControl.hpp | 7 +++++++ src/ui/controls/RootControl.cpp | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/include/cru/ui/controls/RootControl.hpp b/include/cru/ui/controls/RootControl.hpp index ff1b545a..d41f02d8 100644 --- a/include/cru/ui/controls/RootControl.hpp +++ b/include/cru/ui/controls/RootControl.hpp @@ -18,10 +18,17 @@ class RootControl : public LayoutControl { public: render::RenderObject* GetRenderObject() const override; + void EnsureWindowCreated(); + // If create is false and native window is not create, it will not be created // and shown. void Show(bool create = true); + // If native window does not exist, nothing will be done. It will not save it + // and use it when creating window. So call this after ensuring window + // created. + void SetRect(const Rect& rect); + protected: virtual gsl::not_null CreateNativeWindow( gsl::not_null host, diff --git a/src/ui/controls/RootControl.cpp b/src/ui/controls/RootControl.cpp index 61d272f8..c6d9a577 100644 --- a/src/ui/controls/RootControl.cpp +++ b/src/ui/controls/RootControl.cpp @@ -24,6 +24,15 @@ render::RenderObject* RootControl::GetRenderObject() const { return render_object_.get(); } +void RootControl::EnsureWindowCreated() { this->GetNativeWindow(true); } + +void RootControl::SetRect(const Rect& rect) { + auto native_window = GetNativeWindow(false); + if (!native_window) return; + + native_window->SetWindowRect(rect); +} + void RootControl::Show(bool create) { platform::gui::INativeWindow* native_window = GetNativeWindow(create); if (!native_window) return; -- cgit v1.2.3