aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/ui/host/WindowHost.hpp12
-rw-r--r--src/ui/host/WindowHost.cpp12
2 files changed, 16 insertions, 8 deletions
diff --git a/include/cru/ui/host/WindowHost.hpp b/include/cru/ui/host/WindowHost.hpp
index 56f37382..6d338df1 100644
--- a/include/cru/ui/host/WindowHost.hpp
+++ b/include/cru/ui/host/WindowHost.hpp
@@ -14,12 +14,22 @@ class LayoutPaintCycler;
struct AfterLayoutEventArgs {};
+struct CreateWindowParams {
+ CreateWindowParams(platform::gui::INativeWindow* parent = nullptr,
+ platform::gui::CreateWindowFlag flag = {})
+ : parent(parent), flag(flag) {}
+
+ platform::gui::INativeWindow* parent;
+ platform::gui::CreateWindowFlag flag;
+};
+
// The bridge between control tree and native window.
class WindowHost : public Object {
CRU_DEFINE_CLASS_LOG_TAG(u"cru::ui::host::WindowHost")
public:
- WindowHost(controls::Control* root_control);
+ WindowHost(controls::Control* root_control,
+ CreateWindowParams create_window_params = {});
CRU_DELETE_COPY(WindowHost)
CRU_DELETE_MOVE(WindowHost)
diff --git a/src/ui/host/WindowHost.cpp b/src/ui/host/WindowHost.cpp
index 1702c4ed..95de51c2 100644
--- a/src/ui/host/WindowHost.cpp
+++ b/src/ui/host/WindowHost.cpp
@@ -103,10 +103,12 @@ inline void BindNativeEvent(
}
} // namespace
-WindowHost::WindowHost(controls::Control* root_control)
+WindowHost::WindowHost(controls::Control* root_control,
+ CreateWindowParams create_window_params)
: root_control_(root_control), focus_control_(root_control) {
const auto ui_application = IUiApplication::GetInstance();
- auto native_window = ui_application->CreateWindow(nullptr);
+ auto native_window = ui_application->CreateWindow(create_window_params.parent,
+ create_window_params.flag);
native_window_ = native_window;
root_control_->TraverseDescendants([this](controls::Control* control) {
@@ -141,11 +143,7 @@ WindowHost::WindowHost(controls::Control* root_control)
&WindowHost::OnNativeKeyUp, event_revoker_guards_);
}
-WindowHost::~WindowHost() {
- if (native_window_) {
- native_window_->Close();
- }
-}
+WindowHost::~WindowHost() {}
void WindowHost::InvalidatePaint() { layout_paint_cycler_->InvalidatePaint(); }