Move some CPDFXFA_Widget specific methods out of CPDFSDK_Annot
Also rename methods returning CXFA_FFWidgets to contain the
string "FF" in the name.
Change-Id: I1641e65a2f233928ce1e42dbef9fdf176ea73fd9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59715
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_annot.cpp b/fpdfsdk/cpdfsdk_annot.cpp
index 32fdb6b..d6712d0 100644
--- a/fpdfsdk/cpdfsdk_annot.cpp
+++ b/fpdfsdk/cpdfsdk_annot.cpp
@@ -19,15 +19,9 @@
return nullptr;
}
-#ifdef PDF_ENABLE_XFA
-bool CPDFSDK_Annot::IsXFAField() const {
- return false;
-}
-
-CXFA_FFWidget* CPDFSDK_Annot::GetXFAWidget() const {
+CPDFXFA_Widget* CPDFSDK_Annot::AsXFAWidget() {
return nullptr;
}
-#endif // PDF_ENABLE_XFA
IPDF_Page* CPDFSDK_Annot::GetXFAPage() {
#ifdef PDF_ENABLE_XFA
diff --git a/fpdfsdk/cpdfsdk_annot.h b/fpdfsdk/cpdfsdk_annot.h
index 536b6fe..e722de1 100644
--- a/fpdfsdk/cpdfsdk_annot.h
+++ b/fpdfsdk/cpdfsdk_annot.h
@@ -19,23 +19,16 @@
class CPDF_RenderOptions;
class CPDFSDK_BAAnnot;
class CPDFSDK_PageView;
+class CPDFXFA_Widget;
class IPDF_Page;
-#ifdef PDF_ENABLE_XFA
-class CXFA_FFWidget;
-#endif // PDF_ENABLE_XFA
-
class CPDFSDK_Annot : public Observable {
public:
explicit CPDFSDK_Annot(CPDFSDK_PageView* pPageView);
virtual ~CPDFSDK_Annot();
virtual CPDFSDK_BAAnnot* AsBAAnnot();
-
-#ifdef PDF_ENABLE_XFA
- virtual bool IsXFAField() const;
- virtual CXFA_FFWidget* GetXFAWidget() const;
-#endif // PDF_ENABLE_XFA
+ virtual CPDFXFA_Widget* AsXFAWidget();
virtual int GetLayoutOrder() const;
virtual CPDF_Annot* GetPDFAnnot() const;
@@ -59,4 +52,8 @@
return pAnnot ? pAnnot->AsBAAnnot() : nullptr;
}
+inline CPDFXFA_Widget* ToXFAWidget(CPDFSDK_Annot* pAnnot) {
+ return pAnnot ? pAnnot->AsXFAWidget() : nullptr;
+}
+
#endif // FPDFSDK_CPDFSDK_ANNOT_H_
diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.cpp b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
index 20744cc..b077532 100644
--- a/fpdfsdk/cpdfsdk_annothandlermgr.cpp
+++ b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
@@ -25,6 +25,7 @@
#ifdef PDF_ENABLE_XFA
#include "fpdfsdk/fpdfxfa/cpdfxfa_page.h"
+#include "fpdfsdk/fpdfxfa/cpdfxfa_widget.h"
#include "fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h"
#endif // PDF_ENABLE_XFA
@@ -286,8 +287,10 @@
bool CPDFSDK_AnnotHandlerMgr::Annot_OnChangeFocus(
ObservedPtr<CPDFSDK_Annot>* pSetAnnot,
ObservedPtr<CPDFSDK_Annot>* pKillAnnot) {
- bool bXFA = (*pSetAnnot && (*pSetAnnot)->GetXFAWidget()) ||
- (*pKillAnnot && (*pKillAnnot)->GetXFAWidget());
+ CPDFXFA_Widget* pSetXFAWidget = ToXFAWidget(pSetAnnot->Get());
+ CPDFXFA_Widget* pKillXFAWidget = ToXFAWidget(pKillAnnot->Get());
+ bool bXFA = (pSetXFAWidget && pSetXFAWidget->GetXFAFFWidget()) ||
+ (pKillXFAWidget && pKillXFAWidget->GetXFAFFWidget());
return !bXFA || static_cast<CPDFXFA_WidgetHandler*>(m_pXFAWidgetHandler.get())
->OnXFAChangedFocus(pKillAnnot, pSetAnnot);
diff --git a/fpdfsdk/cpdfsdk_baannothandler.cpp b/fpdfsdk/cpdfsdk_baannothandler.cpp
index 39b6f31..6aa6de7 100644
--- a/fpdfsdk/cpdfsdk_baannothandler.cpp
+++ b/fpdfsdk/cpdfsdk_baannothandler.cpp
@@ -62,10 +62,9 @@
CFX_RenderDevice* pDevice,
const CFX_Matrix& mtUser2Device,
bool bDrawAnnots) {
-#ifdef PDF_ENABLE_XFA
- if (pAnnot->IsXFAField())
+ if (pAnnot->AsXFAWidget())
return;
-#endif // PDF_ENABLE_XFA
+
if (bDrawAnnots && pAnnot->GetAnnotSubtype() == CPDF_Annot::Subtype::POPUP) {
pAnnot->AsBAAnnot()->DrawAppearance(pDevice, mtUser2Device,
CPDF_Annot::Normal, nullptr);
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index e52a72b..7b878f7 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -25,6 +25,7 @@
#ifdef PDF_ENABLE_XFA
#include "fpdfsdk/fpdfxfa/cpdfxfa_page.h"
+#include "fpdfsdk/fpdfxfa/cpdfxfa_widget.h"
#include "xfa/fxfa/cxfa_ffdocview.h"
#include "xfa/fxfa/cxfa_ffpageview.h"
#endif // PDF_ENABLE_XFA
@@ -193,7 +194,7 @@
return nullptr;
for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray) {
- if (pAnnot->GetXFAWidget() == hWidget)
+ if (ToXFAWidget(pAnnot)->GetXFAFFWidget() == hWidget)
return pAnnot;
}
return nullptr;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
index 3f26e66..79b3e87 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
@@ -13,6 +13,7 @@
#include "core/fpdfapi/render/cpdf_pagerendercache.h"
#include "fpdfsdk/cpdfsdk_pageview.h"
#include "fpdfsdk/fpdfxfa/cpdfxfa_context.h"
+#include "fpdfsdk/fpdfxfa/cpdfxfa_widget.h"
#include "third_party/base/ptr_util.h"
#include "xfa/fxfa/cxfa_ffdocview.h"
#include "xfa/fxfa/cxfa_ffpageview.h"
@@ -175,6 +176,10 @@
CPDFSDK_Annot* CPDFXFA_Page::GetNextXFAAnnot(CPDFSDK_Annot* pSDKAnnot,
bool bNext) {
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pSDKAnnot);
+ if (!pXFAWidget)
+ return nullptr;
+
ObservedPtr<CPDFSDK_Annot> pObservedAnnot(pSDKAnnot);
CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView();
std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator(
@@ -187,8 +192,9 @@
if (!pObservedAnnot || !pWidgetIterator)
return nullptr;
- if (pWidgetIterator->GetCurrentWidget() != pSDKAnnot->GetXFAWidget())
- pWidgetIterator->SetCurrentWidget(pSDKAnnot->GetXFAWidget());
+ if (pWidgetIterator->GetCurrentWidget() != pXFAWidget->GetXFAFFWidget())
+ pWidgetIterator->SetCurrentWidget(pXFAWidget->GetXFAFFWidget());
+
CXFA_FFWidget* hNextFocus =
bNext ? pWidgetIterator->MoveToNext() : pWidgetIterator->MoveToPrevious();
if (!hNextFocus && pSDKAnnot)
@@ -242,13 +248,14 @@
CXFA_RenderContext renderContext(xfaView, rectClip, mtUser2Device);
renderContext.DoRender(&gs);
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return;
CXFA_FFDocView* docView = xfaView->GetDocView();
if (!docView)
return;
- docView->GetWidgetHandler()->RenderWidget(pAnnot->GetXFAWidget(), &gs,
+ docView->GetWidgetHandler()->RenderWidget(pXFAWidget->GetXFAFFWidget(), &gs,
mtUser2Device, false);
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
index 3505a3e..f4c9934 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widget.cpp
@@ -9,21 +9,17 @@
#include "fpdfsdk/ipdfsdk_annothandler.h"
#include "xfa/fxfa/cxfa_ffwidget.h"
-CPDFXFA_Widget::CPDFXFA_Widget(CXFA_FFWidget* pAnnot,
+CPDFXFA_Widget::CPDFXFA_Widget(CXFA_FFWidget* pXFAFFWidget,
CPDFSDK_PageView* pPageView,
CPDFSDK_InteractiveForm* pInteractiveForm)
: CPDFSDK_Annot(pPageView),
m_pInteractiveForm(pInteractiveForm),
- m_pXFAWidget(pAnnot) {}
+ m_pXFAFFWidget(pXFAFFWidget) {}
CPDFXFA_Widget::~CPDFXFA_Widget() = default;
-bool CPDFXFA_Widget::IsXFAField() const {
- return true;
-}
-
-CXFA_FFWidget* CPDFXFA_Widget::GetXFAWidget() const {
- return m_pXFAWidget.Get();
+CPDFXFA_Widget* CPDFXFA_Widget::AsXFAWidget() {
+ return this;
}
CPDF_Annot::Subtype CPDFXFA_Widget::GetAnnotSubtype() const {
@@ -31,5 +27,5 @@
}
CFX_FloatRect CPDFXFA_Widget::GetRect() const {
- return GetXFAWidget()->GetLayoutItem()->GetRect(false).ToFloatRect();
+ return GetXFAFFWidget()->GetLayoutItem()->GetRect(false).ToFloatRect();
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widget.h b/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
index ba3b23d..76d9878 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widget.h
@@ -12,37 +12,31 @@
#include "core/fxcrt/observed_ptr.h"
#include "core/fxcrt/unowned_ptr.h"
#include "fpdfsdk/cpdfsdk_annot.h"
+#include "xfa/fxfa/cxfa_ffwidget.h"
class CPDFSDK_InteractiveForm;
class CPDFSDK_PageView;
-class CXFA_FFWidget;
class CPDFXFA_Widget final : public CPDFSDK_Annot {
public:
- CPDFXFA_Widget(CXFA_FFWidget* pAnnot,
+ CPDFXFA_Widget(CXFA_FFWidget* pXFAFFWidget,
CPDFSDK_PageView* pPageView,
CPDFSDK_InteractiveForm* pInteractiveForm);
~CPDFXFA_Widget() override;
// CPDFSDK_Annot:
- bool IsXFAField() const override;
- CXFA_FFWidget* GetXFAWidget() const override;
+ CPDFXFA_Widget* AsXFAWidget() override;
CPDF_Annot::Subtype GetAnnotSubtype() const override;
CFX_FloatRect GetRect() const override;
+ CXFA_FFWidget* GetXFAFFWidget() const { return m_pXFAFFWidget.Get(); }
CPDFSDK_InteractiveForm* GetInteractiveForm() const {
return m_pInteractiveForm.Get();
}
private:
UnownedPtr<CPDFSDK_InteractiveForm> const m_pInteractiveForm;
- ObservedPtr<CXFA_FFWidget> const m_pXFAWidget;
+ ObservedPtr<CXFA_FFWidget> const m_pXFAFFWidget;
};
-inline CPDFXFA_Widget* ToXFAWidget(CPDFSDK_Annot* pAnnot) {
- return pAnnot && pAnnot->GetAnnotSubtype() == CPDF_Annot::Subtype::XFAWIDGET
- ? static_cast<CPDFXFA_Widget*>(pAnnot)
- : nullptr;
-}
-
#endif // FPDFSDK_FPDFXFA_CPDFXFA_WIDGET_H_
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
index 7b7c53b..b2bc251 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.cpp
@@ -210,7 +210,8 @@
}
bool CPDFXFA_WidgetHandler::CanAnswer(CPDFSDK_Annot* pAnnot) {
- return !!pAnnot->GetXFAWidget();
+ CPDFXFA_Widget* pWidget = ToXFAWidget(pAnnot);
+ return pWidget && pWidget->GetXFAFFWidget();
}
CPDFSDK_Annot* CPDFXFA_WidgetHandler::NewAnnot(CPDF_Annot* pAnnot,
@@ -229,17 +230,17 @@
CFX_RenderDevice* pDevice,
const CFX_Matrix& mtUser2Device,
bool bDrawAnnots) {
- ASSERT(pPageView);
- ASSERT(pAnnot);
-
- CXFA_Graphics gs(pDevice);
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ ASSERT(pXFAWidget);
bool bIsHighlight = false;
if (pPageView->GetFormFillEnv()->GetFocusAnnot() != pAnnot)
bIsHighlight = true;
- GetXFAWidgetHandler(pAnnot)->RenderWidget(pAnnot->GetXFAWidget(), &gs,
- mtUser2Device, bIsHighlight);
+ CXFA_Graphics gs(pDevice);
+ GetXFAFFWidgetHandler(pXFAWidget)
+ ->RenderWidget(pXFAWidget->GetXFAFFWidget(), &gs, mtUser2Device,
+ bIsHighlight);
// to do highlight and shadow
}
@@ -252,10 +253,11 @@
CFX_FloatRect CPDFXFA_WidgetHandler::GetViewBBox(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot) {
- CXFA_Node* node = pAnnot->GetXFAWidget()->GetNode();
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ CXFA_Node* node = pXFAWidget->GetXFAFFWidget()->GetNode();
ASSERT(node->IsWidgetReady());
- CFX_RectF rcBBox = pAnnot->GetXFAWidget()->GetBBox(
+ CFX_RectF rcBBox = pXFAWidget->GetXFAFFWidget()->GetBBox(
node->GetFFWidgetType() == XFA_FFWidgetType::kSignature
? CXFA_FFWidget::kDrawFocus
: CXFA_FFWidget::kDoNotDrawFocus);
@@ -266,62 +268,77 @@
}
WideString CPDFXFA_WidgetHandler::GetText(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return WideString();
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->GetText(pAnnot->GetXFAWidget());
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->GetText(pXFAWidget->GetXFAFFWidget());
}
WideString CPDFXFA_WidgetHandler::GetSelectedText(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return WideString();
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->GetSelectedText(pAnnot->GetXFAWidget());
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->GetSelectedText(pXFAWidget->GetXFAFFWidget());
}
void CPDFXFA_WidgetHandler::ReplaceSelection(CPDFSDK_Annot* pAnnot,
const WideString& text) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->PasteText(pAnnot->GetXFAWidget(), text);
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->PasteText(pXFAWidget->GetXFAFFWidget(), text);
}
bool CPDFXFA_WidgetHandler::CanUndo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->CanUndo(pAnnot->GetXFAWidget());
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->CanUndo(pXFAWidget->GetXFAFFWidget());
}
bool CPDFXFA_WidgetHandler::CanRedo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->CanRedo(pAnnot->GetXFAWidget());
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->CanRedo(pXFAWidget->GetXFAFFWidget());
}
bool CPDFXFA_WidgetHandler::Undo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->Undo(pAnnot->GetXFAWidget());
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->Undo(pXFAWidget->GetXFAFFWidget());
}
bool CPDFXFA_WidgetHandler::Redo(CPDFSDK_Annot* pAnnot) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->Redo(pAnnot->GetXFAWidget());
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->Redo(pXFAWidget->GetXFAFFWidget());
}
bool CPDFXFA_WidgetHandler::HitTest(CPDFSDK_PageView* pPageView,
CPDFSDK_Annot* pAnnot,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot)
+ if (!pPageView)
+ return false;
+
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
CPDFSDK_FormFillEnvironment* pFormFillEnv = pPageView->GetFormFillEnv();
@@ -342,38 +359,51 @@
return false;
FWL_WidgetHit dwHitTest =
- pWidgetHandler->OnHitTest(pAnnot->GetXFAWidget(), point);
+ pWidgetHandler->OnHitTest(pXFAWidget->GetXFAFFWidget(), point);
return dwHitTest != FWL_WidgetHit::Unknown;
}
void CPDFXFA_WidgetHandler::OnMouseEnter(CPDFSDK_PageView* pPageView,
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlag) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- pWidgetHandler->OnMouseEnter((*pAnnot)->GetXFAWidget());
+
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ pWidgetHandler->OnMouseEnter(pXFAWidget->GetXFAFFWidget());
}
void CPDFXFA_WidgetHandler::OnMouseExit(CPDFSDK_PageView* pPageView,
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlag) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- pWidgetHandler->OnMouseExit((*pAnnot)->GetXFAWidget());
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ pWidgetHandler->OnMouseExit(pXFAWidget->GetXFAFFWidget());
}
bool CPDFXFA_WidgetHandler::OnLButtonDown(CPDFSDK_PageView* pPageView,
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnLButtonDown((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnLButtonDown(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -381,11 +411,15 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnLButtonUp((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnLButtonUp(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -393,11 +427,15 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnLButtonDblClk((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnLButtonDblClk(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -405,11 +443,15 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnMouseMove((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnMouseMove(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -418,11 +460,15 @@
uint32_t nFlags,
short zDelta,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnMouseWheel((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnMouseWheel(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), zDelta, point);
}
@@ -430,11 +476,15 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnRButtonDown((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnRButtonDown(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -442,11 +492,15 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnRButtonUp((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnRButtonUp(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
@@ -454,44 +508,51 @@
ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlags,
const CFX_PointF& point) {
- if (!pPageView || !pAnnot->HasObservable())
+ if (!pPageView)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
- return pWidgetHandler->OnRButtonDblClk((*pAnnot)->GetXFAWidget(),
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return false;
+
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnRButtonDblClk(pXFAWidget->GetXFAFFWidget(),
GetFWLFlags(nFlags), point);
}
bool CPDFXFA_WidgetHandler::OnChar(CPDFSDK_Annot* pAnnot,
uint32_t nChar,
uint32_t nFlags) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->OnChar(pAnnot->GetXFAWidget(), nChar,
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnChar(pXFAWidget->GetXFAFFWidget(), nChar,
GetFWLFlags(nFlags));
}
bool CPDFXFA_WidgetHandler::OnKeyDown(CPDFSDK_Annot* pAnnot,
int nKeyCode,
int nFlag) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->OnKeyDown(pAnnot->GetXFAWidget(), nKeyCode,
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnKeyDown(pXFAWidget->GetXFAFFWidget(), nKeyCode,
GetFWLFlags(nFlag));
}
bool CPDFXFA_WidgetHandler::OnKeyUp(CPDFSDK_Annot* pAnnot,
int nKeyCode,
int nFlag) {
- if (!pAnnot)
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot);
+ if (!pXFAWidget)
return false;
- CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
- return pWidgetHandler->OnKeyUp(pAnnot->GetXFAWidget(), nKeyCode,
+ CXFA_FFWidgetHandler* pWidgetHandler = GetXFAFFWidgetHandler(pXFAWidget);
+ return pWidgetHandler->OnKeyUp(pXFAWidget->GetXFAFFWidget(), nKeyCode,
GetFWLFlags(nFlag));
}
@@ -502,7 +563,11 @@
bool CPDFXFA_WidgetHandler::OnKillFocus(ObservedPtr<CPDFSDK_Annot>* pAnnot,
uint32_t nFlag) {
- CXFA_FFWidget* hWidget = *pAnnot ? (*pAnnot)->GetXFAWidget() : nullptr;
+ CPDFXFA_Widget* pXFAWidget = ToXFAWidget(pAnnot->Get());
+ if (!pXFAWidget)
+ return true;
+
+ CXFA_FFWidget* hWidget = pXFAWidget->GetXFAFFWidget();
if (!hWidget)
return true;
@@ -519,14 +584,18 @@
ObservedPtr<CPDFSDK_Annot>* pNewAnnot) {
CXFA_FFWidgetHandler* pWidgetHandler = nullptr;
if (pOldAnnot->HasObservable())
- pWidgetHandler = GetXFAWidgetHandler(pOldAnnot->Get());
+ pWidgetHandler = GetXFAFFWidgetHandler(pOldAnnot->Get());
else if (pNewAnnot->HasObservable())
- pWidgetHandler = GetXFAWidgetHandler(pNewAnnot->Get());
+ pWidgetHandler = GetXFAFFWidgetHandler(pNewAnnot->Get());
if (!pWidgetHandler)
return true;
- CXFA_FFWidget* hWidget = *pNewAnnot ? (*pNewAnnot)->GetXFAWidget() : nullptr;
+ CPDFXFA_Widget* pNewXFAWidget = ToXFAWidget(pNewAnnot->Get());
+ if (!pNewXFAWidget)
+ return true;
+
+ CXFA_FFWidget* hWidget = pNewXFAWidget->GetXFAFFWidget();
if (!hWidget)
return true;
@@ -557,7 +626,7 @@
return false;
}
-CXFA_FFWidgetHandler* CPDFXFA_WidgetHandler::GetXFAWidgetHandler(
+CXFA_FFWidgetHandler* CPDFXFA_WidgetHandler::GetXFAFFWidgetHandler(
CPDFSDK_Annot* pAnnot) {
if (!pAnnot)
return nullptr;
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
index 9bb5891..9926052 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_widgethandler.h
@@ -105,7 +105,7 @@
ObservedPtr<CPDFSDK_Annot>* pNewAnnot);
private:
- CXFA_FFWidgetHandler* GetXFAWidgetHandler(CPDFSDK_Annot* pAnnot);
+ CXFA_FFWidgetHandler* GetXFAFFWidgetHandler(CPDFSDK_Annot* pAnnot);
uint32_t GetFWLFlags(uint32_t dwFlag);
UnownedPtr<CPDFSDK_FormFillEnvironment> m_pFormFillEnv;