From ce56ab59a6d68c220fcc47c6977c618eaa43de7a Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 5 Jul 2020 18:13:10 +0800 Subject: ... --- src/ui/controls/TextBox.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/ui/controls/TextBox.cpp') diff --git a/src/ui/controls/TextBox.cpp b/src/ui/controls/TextBox.cpp index 64fd4c60..b25e3bcb 100644 --- a/src/ui/controls/TextBox.cpp +++ b/src/ui/controls/TextBox.cpp @@ -1,19 +1,23 @@ #include "cru/ui/controls/TextBox.hpp" +#include "TextControlService.hpp" +#include "cru/ui/UiManager.hpp" #include "cru/ui/render/BorderRenderObject.hpp" #include "cru/ui/render/CanvasRenderObject.hpp" +#include "cru/ui/render/ScrollRenderObject.hpp" #include "cru/ui/render/StackLayoutRenderObject.hpp" #include "cru/ui/render/TextRenderObject.hpp" -#include "cru/ui/UiManager.hpp" -#include "TextControlService.hpp" namespace cru::ui::controls { using render::BorderRenderObject; using render::CanvasRenderObject; +using render::ScrollRenderObject; using render::StackLayoutRenderObject; using render::TextRenderObject; -TextBox::TextBox() : border_render_object_(new BorderRenderObject()) { +TextBox::TextBox() + : border_render_object_(new BorderRenderObject()), + scroll_render_object_(new ScrollRenderObject()) { const auto theme_resources = UiManager::GetInstance()->GetThemeResources(); border_style_ = theme_resources->text_box_border_style; @@ -22,9 +26,11 @@ TextBox::TextBox() : border_render_object_(new BorderRenderObject()) { theme_resources->text_brush, theme_resources->default_font, theme_resources->text_selection_brush, theme_resources->caret_brush); - border_render_object_->AddChild(text_render_object_.get(), 0); + border_render_object_->AddChild(scroll_render_object_.get(), 0); + scroll_render_object_->AddChild(text_render_object_.get(), 0); border_render_object_->SetAttachedControl(this); + scroll_render_object_->SetAttachedControl(this); text_render_object_->SetAttachedControl(this); service_ = std::make_unique>(this); @@ -48,10 +54,14 @@ render::RenderObject* TextBox::GetRenderObject() const { return border_render_object_.get(); } -render::TextRenderObject* TextBox::GetTextRenderObject() { +gsl::not_null TextBox::GetTextRenderObject() { return text_render_object_.get(); } +render::ScrollRenderObject* TextBox::GetScrollRenderObject() { + return scroll_render_object_.get(); +} + const TextBoxBorderStyle& TextBox::GetBorderStyle() { return border_style_; } void TextBox::SetBorderStyle(TextBoxBorderStyle border_style) { -- cgit v1.2.3