aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/render_object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/render_object.cpp')
-rw-r--r--src/ui/render/render_object.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/ui/render/render_object.cpp b/src/ui/render/render_object.cpp
index 54c2d1b4..5cce6d0d 100644
--- a/src/ui/render/render_object.cpp
+++ b/src/ui/render/render_object.cpp
@@ -35,6 +35,27 @@ void RenderObject::RemoveChild(const int position) {
OnRemoveChild(removed_child, position);
}
+Point RenderObject::GetTotalOffset() const {
+ Point result{};
+ const RenderObject* render_object = this;
+
+ while (render_object != nullptr) {
+ const auto o = render_object->GetOffset();
+ result.x += o.x;
+ result.y += o.y;
+ render_object = render_object->GetParent();
+ }
+
+ return result;
+}
+
+Point RenderObject::FromRootToContent(const Point& point) const {
+ const auto offset = GetTotalOffset();
+ const auto rect = GetContentRect();
+ return Point{point.x - (offset.x + rect.left),
+ point.y - (offset.y + rect.top)};
+}
+
void RenderObject::Measure(const Size& available_size) {
OnMeasureCore(available_size);
}