aboutsummaryrefslogtreecommitdiff
path: root/src/ui/host/WindowHost.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/host/WindowHost.cpp')
-rw-r--r--src/ui/host/WindowHost.cpp35
1 files changed, 5 insertions, 30 deletions
diff --git a/src/ui/host/WindowHost.cpp b/src/ui/host/WindowHost.cpp
index d26b43ab..3f3976b4 100644
--- a/src/ui/host/WindowHost.cpp
+++ b/src/ui/host/WindowHost.cpp
@@ -104,7 +104,8 @@ inline void BindNativeEvent(
}
} // namespace
-WindowHost::WindowHost(controls::Control* root_control)
+WindowHost::WindowHost(controls::Control* root_control,
+ CreateWindowParams params)
: root_control_(root_control), focus_control_(root_control) {
root_control_->TraverseDescendants([this](controls::Control* control) {
control->window_host_ = this;
@@ -115,14 +116,14 @@ WindowHost::WindowHost(controls::Control* root_control)
root_render_object_->SetWindowHostRecursive(this);
this->layout_paint_cycler_ = std::make_unique<LayoutPaintCycler>(this);
+
+ CreateNativeWindow(params);
}
WindowHost::~WindowHost() {}
gsl::not_null<platform::gui::INativeWindow*> WindowHost::CreateNativeWindow(
CreateWindowParams create_window_params) {
- if (native_window_ != nullptr) return native_window_;
-
const auto ui_application = IUiApplication::GetInstance();
auto native_window = ui_application->CreateWindow(create_window_params.parent,
@@ -153,10 +154,6 @@ gsl::not_null<platform::gui::INativeWindow*> WindowHost::CreateNativeWindow(
BindNativeEvent(this, native_window, native_window->KeyUpEvent(),
&WindowHost::OnNativeKeyUp, event_revoker_guards_);
- if (saved_rect_) {
- native_window->SetWindowRect(saved_rect_.value());
- }
-
native_window_change_event_.Raise(native_window);
return native_window_;
@@ -194,8 +191,7 @@ void WindowHost::RelayoutWithSize(const Size& available_size,
render::MeasureSize::NotSpecified());
if (set_window_size_to_fit_content) {
- auto rect = GetWindowRect();
- SetWindowRect({rect.GetLeftTop(), root_render_object_->GetSize()});
+ native_window_->SetClientSize(root_render_object_->GetSize());
}
root_render_object_->Layout(Point{});
@@ -277,29 +273,8 @@ void WindowHost::RunAfterLayoutStable(std::function<void()> action) {
}
}
-Rect WindowHost::GetWindowRect() {
- if (native_window_) return native_window_->GetWindowRect();
- return saved_rect_.value_or(Rect{});
-}
-
-void WindowHost::SetSavedWindowRect(std::optional<Rect> rect) {
- saved_rect_ = std::move(rect);
-}
-
-void WindowHost::SetWindowRect(const Rect& rect) {
- SetSavedWindowRect(rect);
- if (native_window_) native_window_->SetWindowRect(rect);
-}
-
void WindowHost::OnNativeDestroy(INativeWindow* window, std::nullptr_t) {
CRU_UNUSED(window)
-
- saved_rect_ = this->native_window_->GetWindowRect();
-
- this->native_window_ = nullptr;
- event_revoker_guards_.clear();
-
- native_window_change_event_.Raise(nullptr);
}
void WindowHost::OnNativePaint(INativeWindow* window, std::nullptr_t) {