CXFA_FFWidget* XFA_ThemeGetOuterWidget(IFWL_Widget* pWidget) { IFWL_Widget* pOuter = pWidget; while (pOuter && pOuter->GetOuter()) pOuter = pOuter->GetOuter(); return pOuter ? static_cast<CXFA_FFWidget*>(pOuter->GetLayoutItem()) : nullptr; }
FWL_Error CFWL_WidgetMgr::RepaintWidget(IFWL_Widget* pWidget, const CFX_RectF* pRect) { if (!m_pAdapter) return FWL_Error::Indefinite; IFWL_Widget* pNative = pWidget; CFX_RectF rect(*pRect); if (IsFormDisabled()) { IFWL_Widget* pOuter = pWidget->GetOuter(); while (pOuter) { CFX_RectF rtTemp; pNative->GetWidgetRect(rtTemp); rect.left += rtTemp.left; rect.top += rtTemp.top; pNative = pOuter; pOuter = pOuter->GetOuter(); } } else if (!IsAbleNative(pWidget)) { pNative = GetSystemFormWidget(pWidget); if (!pNative) return FWL_Error::Indefinite; pWidget->TransformTo(pNative, rect.left, rect.top); } AddRedrawCounts(pNative); return m_pAdapter->RepaintWidget(pNative, &rect); }
IFWL_Widget* IFWL_Widget::GetRootOuter() { IFWL_Widget* pRet = m_pOuter; if (!pRet) return nullptr; while (IFWL_Widget* pOuter = pRet->GetOuter()) pRet = pOuter; return pRet; }