aboutsummaryrefslogtreecommitdiff
path: root/src/ui/window.cpp
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2018-12-06 21:32:58 +0800
committerGitHub <noreply@github.com>2018-12-06 21:32:58 +0800
commitb028e74a48de181ca078ad3bf4ababf4fa146cd3 (patch)
tree5b15e3f97c67e81ad99fb531f30681300a79b5a9 /src/ui/window.cpp
parentf0e2b2d3763dd100a5e9d6cda566724d2b7da965 (diff)
parentde5d84f64ba7673a5155aab67244fedc04753b94 (diff)
downloadcru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.tar.gz
cru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.tar.bz2
cru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.zip
Merge pull request #36 from crupest/tree
Enhance tree.
Diffstat (limited to 'src/ui/window.cpp')
-rw-r--r--src/ui/window.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/ui/window.cpp b/src/ui/window.cpp
index dfc6db43..86fa4436 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);
@@ -459,7 +469,7 @@ namespace cru::ui
return PiToDip(point);
}
- Point Window::GetPositionRelative()
+ Point Window::GetOffset()
{
return Point();
}