diff options
Diffstat (limited to 'src/ui/window.cpp')
-rw-r--r-- | src/ui/window.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ui/window.cpp b/src/ui/window.cpp index dfc6db43..6f1c4071 100644 --- a/src/ui/window.cpp +++ b/src/ui/window.cpp @@ -116,7 +116,7 @@ namespace cru::ui const auto cursor = control->GetCursor(); if (cursor != nullptr) return cursor; - control = control->GetParent(); + control = control->GetInternalParent(); } return cursors::arrow; } @@ -132,8 +132,11 @@ namespace cru::ui return new Window(tag_popup_constructor{}, parent, caption); } - Window::Window(tag_overlapped_constructor) : Control(WindowConstructorTag{}, this) + + Window::Window(tag_overlapped_constructor) { + BeforeCreateHwnd(); + const auto window_manager = WindowManager::GetInstance(); hwnd_ = CreateWindowEx(0, @@ -149,11 +152,13 @@ namespace cru::ui AfterCreateHwnd(window_manager); } - Window::Window(tag_popup_constructor, Window* parent, const bool caption) : Control(WindowConstructorTag{}, this) + Window::Window(tag_popup_constructor, Window* parent, const bool caption) { if (parent != nullptr && !parent->IsWindowValid()) throw std::runtime_error("Parent window is not valid."); + BeforeCreateHwnd(); + parent_window_ = parent; const auto window_manager = WindowManager::GetInstance(); @@ -172,6 +177,11 @@ namespace cru::ui AfterCreateHwnd(window_manager); } + void Window::BeforeCreateHwnd() + { + window_ = this; + } + void Window::AfterCreateHwnd(WindowManager* window_manager) { window_manager->RegisterWindow(hwnd_, this); |