aboutsummaryrefslogtreecommitdiff
path: root/src/ui/window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/window.cpp')
-rw-r--r--src/ui/window.cpp16
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);