From 4a1de7211af344f6acc784f4fe346ef8c8da7bd1 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 4 Jan 2018 13:40:07 -0500 Subject: Change CXFA_WidgetAcc::GetNextWidget to not require the FFDocView This CL changes GetNextWidget to assume that a valid parameter is passed to the method. For callers which passed nullptr, we change to get a vaild initial widget from the doc view directly. Change-Id: I50c06082831645f62339ade59d5026f546e07840 Reviewed-on: https://pdfium-review.googlesource.com/22254 Reviewed-by: Ryan Harrison Commit-Queue: dsinclair --- xfa/fxfa/cxfa_ffdocview.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'xfa/fxfa/cxfa_ffdocview.cpp') diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp index cb4c72d0b3..5856809167 100644 --- a/xfa/fxfa/cxfa_ffdocview.cpp +++ b/xfa/fxfa/cxfa_ffdocview.cpp @@ -309,6 +309,10 @@ int32_t CXFA_FFDocView::ProcessWidgetEvent(CXFA_EventParam* pParam, return XFA_EVENTERROR_Success; } +CXFA_FFWidget* CXFA_FFDocView::GetWidgetForNode(CXFA_Node* node) { + return static_cast(GetXFALayout()->GetLayoutItem(node)); +} + CXFA_FFWidgetHandler* CXFA_FFDocView::GetWidgetHandler() { if (!m_pWidgetHandler) m_pWidgetHandler = pdfium::MakeUnique(this); @@ -376,8 +380,9 @@ bool CXFA_FFDocView::SetFocus(CXFA_FFWidget* hWidget) { } void CXFA_FFDocView::SetFocusWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) { - CXFA_FFWidget* pNewFocus = - pWidgetAcc ? pWidgetAcc->GetNextWidget(nullptr) : nullptr; + CXFA_FFWidget* pNewFocus = nullptr; + if (pWidgetAcc) + pNewFocus = GetWidgetForNode(pWidgetAcc->GetNode()); if (!SetFocus(pNewFocus)) return; @@ -487,7 +492,9 @@ CXFA_FFWidget* CXFA_FFDocView::GetWidgetByName(const WideString& wsName, CXFA_FFWidget* pRefWidget) { CXFA_WidgetAcc* pRefAcc = pRefWidget ? pRefWidget->GetDataAcc() : nullptr; CXFA_WidgetAcc* pAcc = GetWidgetAccByName(wsName, pRefAcc); - return pAcc ? pAcc->GetNextWidget(nullptr) : nullptr; + if (!pAcc) + return nullptr; + return GetWidgetForNode(pAcc->GetNode()); } CXFA_WidgetAcc* CXFA_FFDocView::GetWidgetAccByName( -- cgit v1.2.3