diff options
author | crupest <crupest@outlook.com> | 2020-06-28 00:03:11 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-28 00:03:11 +0800 |
commit | 06d1d0442276a05b6caad6e3468f4afb1e8ee5df (patch) | |
tree | ebd46f0fb7343dc57bf947b7b5fffc139c3ddeac /include/cru/ui/Window.hpp | |
parent | e11be6caa9ef9b2b198ca61846e32f469627556e (diff) | |
download | cru-06d1d0442276a05b6caad6e3468f4afb1e8ee5df.tar.gz cru-06d1d0442276a05b6caad6e3468f4afb1e8ee5df.tar.bz2 cru-06d1d0442276a05b6caad6e3468f4afb1e8ee5df.zip |
...
Diffstat (limited to 'include/cru/ui/Window.hpp')
-rw-r--r-- | include/cru/ui/Window.hpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/cru/ui/Window.hpp b/include/cru/ui/Window.hpp new file mode 100644 index 00000000..eb2ecfbb --- /dev/null +++ b/include/cru/ui/Window.hpp @@ -0,0 +1,40 @@ +#pragma once +#include "ContentControl.hpp" + +namespace cru::ui { +class Window final : public ContentControl { + friend UiHost; + + public: + static constexpr std::string_view control_type = "Window"; + + public: + static Window* CreateOverlapped(); + + private: + struct tag_overlapped_constructor {}; + + explicit Window(tag_overlapped_constructor); + + public: + Window(const Window& other) = delete; + Window(Window&& other) = delete; + Window& operator=(const Window& other) = delete; + Window& operator=(Window&& other) = delete; + ~Window() override; + + public: + std::string_view GetControlType() const final; + + render::RenderObject* GetRenderObject() const override; + + protected: + void OnChildChanged(Control* old_child, Control* new_child) override; + + private: + std::unique_ptr<UiHost> managed_ui_host_; + + // UiHost is responsible to take care of lifetime of this. + render::WindowRenderObject* render_object_; +}; +} // namespace cru::ui |