diff options
author | crupest <crupest@outlook.com> | 2019-12-13 01:02:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-12-13 01:02:47 +0800 |
commit | 9110574bb51e9e2959842a7641f598d34c3cd847 (patch) | |
tree | 96ee1f5b3c40095e4e923fc763de0663ee6a01aa /src/ui/render/window_render_object.cpp | |
parent | f2aa96fba0b72eeeadf5160ea5df2c8143ec8aa0 (diff) | |
download | cru-9110574bb51e9e2959842a7641f598d34c3cd847.tar.gz cru-9110574bb51e9e2959842a7641f598d34c3cd847.tar.bz2 cru-9110574bb51e9e2959842a7641f598d34c3cd847.zip |
...
Diffstat (limited to 'src/ui/render/window_render_object.cpp')
-rw-r--r-- | src/ui/render/window_render_object.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/ui/render/window_render_object.cpp b/src/ui/render/window_render_object.cpp index 64bec1e7..8e48b7c9 100644 --- a/src/ui/render/window_render_object.cpp +++ b/src/ui/render/window_render_object.cpp @@ -1,9 +1,10 @@ #include "cru/ui/render/window_render_object.hpp" +#include "../helper.hpp" #include "cru/common/logger.hpp" -#include "cru/platform/graph/util/painter_util.hpp" -#include "cru/platform/native/native_window.hpp" +#include "cru/platform/graph/util/painter.hpp" #include "cru/platform/native/ui_application.hpp" +#include "cru/platform/native/window.hpp" #include "cru/ui/window.hpp" #include <cassert> @@ -20,7 +21,7 @@ class WindowRenderHost : public IRenderHost, void InvalidateLayout() override; void InvalidatePaint() override { - render_object_->GetWindow()->GetNativeWindow()->Repaint(); + render_object_->GetWindow()->GetNativeWindow()->RequestRepaint(); } IEvent<AfterLayoutEventArgs>* AfterLayoutEvent() override { @@ -37,17 +38,16 @@ class WindowRenderHost : public IRenderHost, void WindowRenderHost::InvalidateLayout() { if (!need_layout_) { - log::Debug(L"A relayout is required."); - platform::native::UiApplication::GetInstance()->InvokeLater( - [resolver = this->CreateResolver()] { - if (const auto host = resolver.Resolve()) { - host->render_object_->Relayout(); - host->need_layout_ = false; - host->after_layout_event_.Raise(AfterLayoutEventArgs{}); - log::Debug(L"A relayout finished."); - host->InvalidatePaint(); - } - }); + log::Debug("A relayout is required."); + GetUiApplication()->InvokeLater([resolver = this->CreateResolver()] { + if (const auto host = resolver.Resolve()) { + host->render_object_->Relayout(); + host->need_layout_ = false; + host->after_layout_event_.Raise(AfterLayoutEventArgs{}); + log::Debug("A relayout finished."); + host->InvalidatePaint(); + } + }); need_layout_ = true; } } @@ -66,13 +66,13 @@ void WindowRenderObject::Relayout() { Layout(Rect{Point{}, client_size}); } -void WindowRenderObject::Draw(platform::graph::Painter* painter) { +void WindowRenderObject::Draw(platform::graph::IPainter* painter) { painter->Clear(colors::white); if (const auto child = GetChild()) { auto offset = child->GetOffset(); platform::graph::util::WithTransform( painter, platform::Matrix::Translation(offset.x, offset.y), - [child](platform::graph::Painter* p) { child->Draw(p); }); + [child](platform::graph::IPainter* p) { child->Draw(p); }); } } |