aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/RenderObject.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-03-02 22:07:33 +0800
committercrupest <crupest@outlook.com>2022-03-02 22:07:33 +0800
commit57353bd3acd97957cb5f970016fec52977cc6e95 (patch)
tree6e47a50f33466f7bcdce7c7aa9bf15b82fe4a58a /src/ui/render/RenderObject.cpp
parent7adfe813c23d20abe936aa0624fd68e0112717b3 (diff)
downloadcru-57353bd3acd97957cb5f970016fec52977cc6e95.tar.gz
cru-57353bd3acd97957cb5f970016fec52977cc6e95.tar.bz2
cru-57353bd3acd97957cb5f970016fec52977cc6e95.zip
...
Diffstat (limited to 'src/ui/render/RenderObject.cpp')
-rw-r--r--src/ui/render/RenderObject.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/ui/render/RenderObject.cpp b/src/ui/render/RenderObject.cpp
index b6de5782..a2ecab8b 100644
--- a/src/ui/render/RenderObject.cpp
+++ b/src/ui/render/RenderObject.cpp
@@ -1,6 +1,7 @@
#include "cru/ui/render/RenderObject.h"
#include "cru/common/log/Logger.h"
+#include "cru/platform/GraphicsBase.h"
#include "cru/ui/DebugFlags.h"
#include "cru/ui/controls/Control.h"
#include "cru/ui/host/WindowHost.h"
@@ -109,13 +110,15 @@ void RenderObject::Layout(const Point& offset) {
OnLayoutCore();
}
-Thickness RenderObject::GetOuterSpaceThickness() const {
+Thickness RenderObject::GetTotalSpaceThickness() const {
return margin_ + padding_;
}
+Thickness RenderObject::GetInnerSpaceThickness() const { return padding_; }
+
Size RenderObject::OnMeasureCore(const MeasureRequirement& requirement,
const MeasureSize& preferred_size) {
- const Thickness outer_space = GetOuterSpaceThickness();
+ const Thickness outer_space = GetTotalSpaceThickness();
const Size space_size{outer_space.GetHorizontalTotal(),
outer_space.GetVerticalTotal()};
@@ -124,8 +127,10 @@ Size RenderObject::OnMeasureCore(const MeasureRequirement& requirement,
content_requirement.max = content_requirement.max.Minus(space_size);
content_requirement.min = content_requirement.min.Minus(space_size);
+ auto inner_space = GetInnerSpaceThickness();
MeasureSize content_preferred_size =
- content_requirement.Coerce(preferred_size.Minus(space_size));
+ content_requirement.Coerce(preferred_size.Minus(
+ {inner_space.GetHorizontalTotal(), inner_space.GetVerticalTotal()}));
const auto content_size =
OnMeasureContent(content_requirement, content_preferred_size);
@@ -135,7 +140,7 @@ Size RenderObject::OnMeasureCore(const MeasureRequirement& requirement,
void RenderObject::OnLayoutCore() {
Size total_size = GetDesiredSize();
- const Thickness outer_space = GetOuterSpaceThickness();
+ const Thickness outer_space = GetTotalSpaceThickness();
const Size space_size{outer_space.GetHorizontalTotal(),
outer_space.GetVerticalTotal()};