diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-12-14 21:00:19 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-12-14 21:00:19 +0800 |
| commit | bc3fa9650699046f3a87a620282ee43f26b2fa75 (patch) | |
| tree | afc96df316a2507e0e8881d58cb87674760e2933 | |
| parent | 3b6a59e7f163b2d2f8a07ae187b392f71b074cc4 (diff) | |
| download | cru-bc3fa9650699046f3a87a620282ee43f26b2fa75.tar.gz cru-bc3fa9650699046f3a87a620282ee43f26b2fa75.tar.bz2 cru-bc3fa9650699046f3a87a620282ee43f26b2fa75.zip | |
Fix render rect of border render object.
| -rw-r--r-- | include/cru/ui/render/BorderRenderObject.h | 2 | ||||
| -rw-r--r-- | src/ui/render/BorderRenderObject.cpp | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/cru/ui/render/BorderRenderObject.h b/include/cru/ui/render/BorderRenderObject.h index c011cda0..0ceb7091 100644 --- a/include/cru/ui/render/BorderRenderObject.h +++ b/include/cru/ui/render/BorderRenderObject.h @@ -46,8 +46,10 @@ class CRU_UI_API BorderRenderObject : public SingleChildRenderObject { Thickness GetTotalSpaceThickness() override; Thickness GetInnerSpaceThickness() override; + Rect GetBorderRect(); Rect GetPaddingRect() override; Rect GetContentRect() override; + Rect GetRenderRect() override; protected: Size OnMeasureContent(const MeasureRequirement& requirement) override; diff --git a/src/ui/render/BorderRenderObject.cpp b/src/ui/render/BorderRenderObject.cpp index 144ad787..42cd9576 100644 --- a/src/ui/render/BorderRenderObject.cpp +++ b/src/ui/render/BorderRenderObject.cpp @@ -133,6 +133,17 @@ Thickness BorderRenderObject::GetInnerSpaceThickness() { : RenderObject::GetInnerSpaceThickness(); } +Rect BorderRenderObject::GetBorderRect() { + const auto size = GetSize(); + Rect rect{Point{}, size}; + rect = rect.Shrink(GetMargin()); + rect.left = std::min(rect.left, size.width); + rect.top = std::min(rect.top, size.height); + rect.width = std::max(rect.width, 0.0f); + rect.height = std::max(rect.height, 0.0f); + return rect; +} + Rect BorderRenderObject::GetPaddingRect() { const auto size = GetSize(); Rect rect{Point{}, size}; @@ -158,6 +169,8 @@ Rect BorderRenderObject::GetContentRect() { return rect; } +Rect BorderRenderObject::GetRenderRect() { return GetBorderRect(); } + void BorderRenderObject::RecreateGeometry() { geometry_.reset(); border_outer_geometry_.reset(); |
