diff options
Diffstat (limited to 'src/ui/render/border_render_object.cpp')
-rw-r--r-- | src/ui/render/border_render_object.cpp | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/ui/render/border_render_object.cpp b/src/ui/render/border_render_object.cpp index 6af76b32..2ca55f4d 100644 --- a/src/ui/render/border_render_object.cpp +++ b/src/ui/render/border_render_object.cpp @@ -21,10 +21,10 @@ void BorderRenderObject::Draw(platform::graph::Painter* painter) { painter->FillGeometry(border_inner_geometry_.get(), background_brush_.get()); if (is_border_enabled_) { - if (border_style_.brush == nullptr) { + if (border_brush_ == nullptr) { log::Warn(L"Border is enabled but brush is null"); } else { - painter->FillGeometry(geometry_.get(), border_style_.brush.get()); + painter->FillGeometry(geometry_.get(), border_brush_.get()); } } if (const auto child = GetChild()) { @@ -64,11 +64,6 @@ RenderObject* BorderRenderObject::HitTest(const Point& point) { } } -void BorderRenderObject::OnSizeChanged(const Size& old_size, - const Size& new_size) { - RecreateGeometry(); -} - void BorderRenderObject::OnMeasureCore(const Size& available_size) { const auto margin = GetMargin(); const auto padding = GetPadding(); @@ -78,9 +73,9 @@ void BorderRenderObject::OnMeasureCore(const Size& available_size) { if (is_border_enabled_) { margin_border_padding_size.width += - border_style_.thickness.GetHorizontalTotal(); + border_thickness_.GetHorizontalTotal(); margin_border_padding_size.height += - border_style_.thickness.GetVerticalTotal(); + border_thickness_.GetVerticalTotal(); } auto coerced_margin_border_padding_size = margin_border_padding_size; @@ -115,9 +110,9 @@ void BorderRenderObject::OnLayoutCore(const Rect& rect) { if (is_border_enabled_) { margin_border_padding_size.width += - border_style_.thickness.GetHorizontalTotal(); + border_thickness_.GetHorizontalTotal(); margin_border_padding_size.height += - border_style_.thickness.GetVerticalTotal(); + border_thickness_.GetVerticalTotal(); } const auto content_available_size = @@ -138,9 +133,9 @@ void BorderRenderObject::OnLayoutCore(const Rect& rect) { } OnLayoutContent(Rect{ - margin.left + (is_border_enabled_ ? border_style_.thickness.left : 0) + + margin.left + (is_border_enabled_ ? border_thickness_.left : 0) + padding.left, - margin.top + (is_border_enabled_ ? border_style_.thickness.top : 0) + + margin.top + (is_border_enabled_ ? border_thickness_.top : 0) + padding.top, coerced_content_available_size.width, coerced_content_available_size.height}); @@ -163,6 +158,10 @@ void BorderRenderObject::OnLayoutContent(const Rect& content_rect) { } } +void BorderRenderObject::OnAfterLayout() { + RecreateGeometry(); +} + void BorderRenderObject::RecreateGeometry() { geometry_.reset(); border_outer_geometry_.reset(); @@ -197,20 +196,20 @@ void BorderRenderObject::RecreateGeometry() { const auto graph_factory = platform::graph::GraphFactory::GetInstance(); std::unique_ptr<platform::graph::GeometryBuilder> builder{ graph_factory->CreateGeometryBuilder()}; - f(builder.get(), outer_rect, border_style_.corner_radius); + f(builder.get(), outer_rect, border_radius_); border_outer_geometry_.reset(builder->Build()); builder.reset(); - const Rect inner_rect = outer_rect.Shrink(border_style_.thickness); + const Rect inner_rect = outer_rect.Shrink(border_thickness_); builder.reset(graph_factory->CreateGeometryBuilder()); - f(builder.get(), inner_rect, border_style_.corner_radius); + f(builder.get(), inner_rect, border_radius_); border_inner_geometry_.reset(builder->Build()); builder.reset(); builder.reset(graph_factory->CreateGeometryBuilder()); - f(builder.get(), outer_rect, border_style_.corner_radius); - f(builder.get(), inner_rect, border_style_.corner_radius); + f(builder.get(), outer_rect, border_radius_); + f(builder.get(), inner_rect, border_radius_); geometry_.reset(builder->Build()); builder.reset(); } |