diff options
author | crupest <crupest@outlook.com> | 2020-11-09 20:28:39 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-11-09 20:28:39 +0800 |
commit | 014aaf773fd95a7f0dd1a766023a21fb6b54a1a1 (patch) | |
tree | f690e33536fa17910d9921c97accb7f7c99df500 | |
parent | 7d380576ec4a86938d3d2021657bb8d6eba98c1a (diff) | |
download | cru-014aaf773fd95a7f0dd1a766023a21fb6b54a1a1.tar.gz cru-014aaf773fd95a7f0dd1a766023a21fb6b54a1a1.tar.bz2 cru-014aaf773fd95a7f0dd1a766023a21fb6b54a1a1.zip |
...
-rw-r--r-- | include/cru/ui/controls/RootControl.hpp | 7 | ||||
-rw-r--r-- | src/ui/controls/RootControl.cpp | 9 |
2 files changed, 16 insertions, 0 deletions
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<platform::gui::INativeWindow*> CreateNativeWindow( gsl::not_null<host::WindowHost*> 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; |