From 45838c68973bcdf0d6b0b49c2ce3500469a9db28 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Thu, 4 Dec 2025 20:01:30 -0600 Subject: [PATCH] feat(ui): handle HitRectInsets in CSimpleFrame::LoadXML --- src/ui/CSimpleFrame.cpp | 18 +++++++++++++++++- src/ui/CSimpleFrame.hpp | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ui/CSimpleFrame.cpp b/src/ui/CSimpleFrame.cpp index 3ab508b..21058ee 100644 --- a/src/ui/CSimpleFrame.cpp +++ b/src/ui/CSimpleFrame.cpp @@ -265,7 +265,11 @@ void CSimpleFrame::LoadXML(XMLNode* node, CStatus* status) { } if (!SStrCmpI(child->GetName(), "HitRectInsets", 0x7FFFFFFFu)) { - // TODO + float left, right, top, bottom; + + if (LoadXML_Insets(child, left, right, top, bottom, status)) { + this->SetHitRectInsets(left, right, top, bottom); + } } if (!SStrCmpI(child->GetName(), "Layers", 0x7FFFFFFFu)) { @@ -1419,6 +1423,18 @@ void CSimpleFrame::SetHitRect() { this->m_hitRect.maxY = this->m_rect.maxY - this->m_hitOffset.maxY * this->m_layoutScale; } +void CSimpleFrame::SetHitRectInsets(float left, float right, float top, float bottom) { + this->m_hitOffset.minX = left; + this->m_hitOffset.maxX = right; + this->m_hitOffset.maxY = top; + this->m_hitOffset.minY = bottom; + + this->m_hitRect.minX = this->m_rect.minX + (left * this->m_layoutScale); + this->m_hitRect.maxX = this->m_rect.maxX - (right * this->m_layoutScale); + this->m_hitRect.maxY = this->m_rect.maxY - (top * this->m_layoutScale); + this->m_hitRect.minY = this->m_rect.minY + (bottom * this->m_layoutScale); +} + void CSimpleFrame::SetParent(CSimpleFrame* parent) { if (this->m_parent == parent) { return; diff --git a/src/ui/CSimpleFrame.hpp b/src/ui/CSimpleFrame.hpp index aac8d68..25ffe48 100644 --- a/src/ui/CSimpleFrame.hpp +++ b/src/ui/CSimpleFrame.hpp @@ -159,6 +159,7 @@ class CSimpleFrame : public CScriptRegion { bool SetFrameScale(float scale, bool force); void SetFrameStrata(FRAME_STRATA strata); void SetHitRect(); + void SetHitRectInsets(float left, float right, float top, float bottom); void SetParent(CSimpleFrame* parent); void Show(); int32_t TestHitRect(const C2Vector& pt);