From 54ab2343c338f55735c37ed6751040791e1df1e2 Mon Sep 17 00:00:00 2001 From: tsepez Date: Thu, 26 May 2016 17:35:54 -0700 Subject: Add opaque "layout item" to widgets for caller's use. This avoids another use of CFX_PrivateData. Note that in the old code, we'd be calling through a m_pImpl onto the same underlying object as we passed as the "key" argument when setting the value, which explains why the get calls, happening one object lower, pass the same argument as which they are being inovked against. Review-Url: https://codereview.chromium.org/2010923002 --- xfa/fxfa/app/xfa_ffbarcode.cpp | 2 +- xfa/fxfa/app/xfa_ffcheckbutton.cpp | 7 ++----- xfa/fxfa/app/xfa_ffchoicelist.cpp | 4 ++-- xfa/fxfa/app/xfa_ffimageedit.cpp | 2 +- xfa/fxfa/app/xfa_ffpushbutton.cpp | 2 +- xfa/fxfa/app/xfa_fftextedit.cpp | 8 ++++---- xfa/fxfa/app/xfa_fwladapter.cpp | 10 ++++++---- xfa/fxfa/app/xfa_fwltheme.cpp | 11 +++++------ 8 files changed, 22 insertions(+), 24 deletions(-) (limited to 'xfa/fxfa/app') diff --git a/xfa/fxfa/app/xfa_ffbarcode.cpp b/xfa/fxfa/app/xfa_ffbarcode.cpp index a659e13c55..508356ccf2 100644 --- a/xfa/fxfa/app/xfa_ffbarcode.cpp +++ b/xfa/fxfa/app/xfa_ffbarcode.cpp @@ -126,8 +126,8 @@ FX_BOOL CXFA_FFBarcode::LoadWidget() { pFWLBarcode->Initialize(); } m_pNormalWidget = pFWLBarcode; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); diff --git a/xfa/fxfa/app/xfa_ffcheckbutton.cpp b/xfa/fxfa/app/xfa_ffcheckbutton.cpp index 65b4247934..80a4e92bda 100644 --- a/xfa/fxfa/app/xfa_ffcheckbutton.cpp +++ b/xfa/fxfa/app/xfa_ffcheckbutton.cpp @@ -28,20 +28,17 @@ FX_BOOL CXFA_FFCheckButton::LoadWidget() { CFWL_CheckBox* pCheckBox = CFWL_CheckBox::Create(); pCheckBox->Initialize(); m_pNormalWidget = pCheckBox; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); if (m_pDataAcc->IsRadioButton()) { pCheckBox->ModifyStylesEx(FWL_STYLEEXT_CKB_RadioButton, 0xFFFFFFFF); } - m_pNormalWidget = (CFWL_Widget*)pCheckBox; - m_pNormalWidget->SetPrivateData(m_pNormalWidget->GetWidget(), this, NULL); m_pNormalWidget->LockUpdate(); UpdateWidgetProperty(); - XFA_CHECKSTATE eState = m_pDataAcc->GetCheckState(); - SetFWLCheckState(eState); + SetFWLCheckState(m_pDataAcc->GetCheckState()); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); } diff --git a/xfa/fxfa/app/xfa_ffchoicelist.cpp b/xfa/fxfa/app/xfa_ffchoicelist.cpp index 4676bc9374..3f8ea29a49 100644 --- a/xfa/fxfa/app/xfa_ffchoicelist.cpp +++ b/xfa/fxfa/app/xfa_ffchoicelist.cpp @@ -34,8 +34,8 @@ FX_BOOL CXFA_FFListBox::LoadWidget() { pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll | FWL_WGTSTYLE_NoBackground, 0xFFFFFFFF); m_pNormalWidget = (CFWL_Widget*)pListBox; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); @@ -232,8 +232,8 @@ FX_BOOL CXFA_FFComboBox::LoadWidget() { CFWL_ComboBox* pComboBox = CFWL_ComboBox::Create(); pComboBox->Initialize(); m_pNormalWidget = (CFWL_Widget*)pComboBox; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); diff --git a/xfa/fxfa/app/xfa_ffimageedit.cpp b/xfa/fxfa/app/xfa_ffimageedit.cpp index 2250eef2e4..bda281f744 100644 --- a/xfa/fxfa/app/xfa_ffimageedit.cpp +++ b/xfa/fxfa/app/xfa_ffimageedit.cpp @@ -28,8 +28,8 @@ FX_BOOL CXFA_FFImageEdit::LoadWidget() { pPictureBox->Initialize(); } m_pNormalWidget = (CFWL_Widget*)pPictureBox; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = pPictureBox->SetDelegate(this); diff --git a/xfa/fxfa/app/xfa_ffpushbutton.cpp b/xfa/fxfa/app/xfa_ffpushbutton.cpp index c210814a42..6c161b064b 100644 --- a/xfa/fxfa/app/xfa_ffpushbutton.cpp +++ b/xfa/fxfa/app/xfa_ffpushbutton.cpp @@ -59,8 +59,8 @@ FX_BOOL CXFA_FFPushButton::LoadWidget() { } m_pOldDelegate = pPushButton->SetDelegate(this); m_pNormalWidget = (CFWL_Widget*)pPushButton; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pNormalWidget->LockUpdate(); diff --git a/xfa/fxfa/app/xfa_fftextedit.cpp b/xfa/fxfa/app/xfa_fftextedit.cpp index 89c9d356bd..ad1a508a16 100644 --- a/xfa/fxfa/app/xfa_fftextedit.cpp +++ b/xfa/fxfa/app/xfa_fftextedit.cpp @@ -38,8 +38,8 @@ FX_BOOL CXFA_FFTextEdit::LoadWidget() { CFWL_Edit* pFWLEdit = CFWL_Edit::Create(); pFWLEdit->Initialize(); m_pNormalWidget = pFWLEdit; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); @@ -450,7 +450,7 @@ FX_BOOL CXFA_FFNumericEdit::LoadWidget() { pWidget->Initialize(); m_pNormalWidget = (CFWL_Widget*)pWidget; IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pIWidget, this, NULL); + m_pNormalWidget->SetLayoutItem(this); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); @@ -523,8 +523,8 @@ FX_BOOL CXFA_FFPasswordEdit::LoadWidget() { CFWL_Edit* pWidget = CFWL_Edit::Create(); pWidget->Initialize(); m_pNormalWidget = (CFWL_Widget*)pWidget; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pIWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); @@ -589,8 +589,8 @@ FX_BOOL CXFA_FFDateTimeEdit::LoadWidget() { CFWL_DateTimePicker* pWidget = CFWL_DateTimePicker::Create(); pWidget->Initialize(); m_pNormalWidget = (CFWL_Widget*)pWidget; + m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); - m_pNormalWidget->SetPrivateData(pIWidget, this, NULL); CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); m_pOldDelegate = m_pNormalWidget->SetDelegate(this); diff --git a/xfa/fxfa/app/xfa_fwladapter.cpp b/xfa/fxfa/app/xfa_fwladapter.cpp index 4a0828b5ef..ea63d84dfb 100644 --- a/xfa/fxfa/app/xfa_fwladapter.cpp +++ b/xfa/fxfa/app/xfa_fwladapter.cpp @@ -18,11 +18,12 @@ FWL_Error CXFA_FWLAdapterWidgetMgr::RepaintWidget(IFWL_Widget* pWidget, if (!pWidget) return FWL_Error::Indefinite; - CXFA_FFField* pField = (CXFA_FFField*)pWidget->GetPrivateData(pWidget); - if (!pField) + CXFA_FFWidget* pFFWidget = + static_cast(pWidget->GetLayoutItem()); + if (!pFFWidget) return FWL_Error::Indefinite; - pField->AddInvalidateRect(nullptr); + pFFWidget->AddInvalidateRect(nullptr); return FWL_Error::Succeeded; } @@ -31,7 +32,8 @@ FX_BOOL CXFA_FWLAdapterWidgetMgr::GetPopupPos(IFWL_Widget* pWidget, FX_FLOAT fMaxHeight, const CFX_RectF& rtAnchor, CFX_RectF& rtPopup) { - CXFA_FFWidget* pFFWidget = (CXFA_FFWidget*)(pWidget->GetPrivateData(pWidget)); + CXFA_FFWidget* pFFWidget = + static_cast(pWidget->GetLayoutItem()); CFX_Matrix mt; pFFWidget->GetRotateMatrix(mt); CFX_RectF rtRotateAnchor(rtAnchor); diff --git a/xfa/fxfa/app/xfa_fwltheme.cpp b/xfa/fxfa/app/xfa_fwltheme.cpp index df09fb504a..14649f1b80 100644 --- a/xfa/fxfa/app/xfa_fwltheme.cpp +++ b/xfa/fxfa/app/xfa_fwltheme.cpp @@ -35,14 +35,13 @@ const FX_WCHAR* const g_FWLTheme_CalFonts[] = { CXFA_FFWidget* XFA_ThemeGetOuterWidget(IFWL_Widget* pWidget) { IFWL_Widget* pOuter = pWidget; - while (pOuter->GetOuter()) { + while (pOuter && pOuter->GetOuter()) pOuter = pOuter->GetOuter(); - } - if (pOuter) { - return (CXFA_FFWidget*)pOuter->GetPrivateData(pOuter); - } - return NULL; + + return pOuter ? static_cast(pOuter->GetLayoutItem()) + : nullptr; } + CXFA_FWLTheme::CXFA_FWLTheme(CXFA_FFApp* pApp) : m_pApp(pApp) { m_dwCapacity = 0; m_fCapacity = 0; -- cgit v1.2.3