diff options
-rw-r--r-- | fpdfsdk/formfiller/cffl_checkbox.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/formfiller/cffl_combobox.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/formfiller/cffl_listbox.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/formfiller/cffl_pushbutton.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/formfiller/cffl_radiobutton.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/formfiller/cffl_textfield.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_appstream.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_combo_box.cpp | 9 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_edit_ctrl.cpp | 3 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_scroll_bar.cpp | 12 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_wnd.cpp | 10 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_wnd.h | 12 |
12 files changed, 45 insertions, 29 deletions
diff --git a/fpdfsdk/formfiller/cffl_checkbox.cpp b/fpdfsdk/formfiller/cffl_checkbox.cpp index 3dbac1aa84..d9add785aa 100644 --- a/fpdfsdk/formfiller/cffl_checkbox.cpp +++ b/fpdfsdk/formfiller/cffl_checkbox.cpp @@ -25,7 +25,9 @@ std::unique_ptr<CPWL_Wnd> CFFL_CheckBox::NewPWLWindow( const CPWL_Wnd::CreateParams& cp, std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_CheckBox>(std::move(pAttachedData)); - pWnd->Create(cp); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); + pWnd->Realize(cp); pWnd->SetCheck(m_pWidget->IsChecked()); return std::move(pWnd); } diff --git a/fpdfsdk/formfiller/cffl_combobox.cpp b/fpdfsdk/formfiller/cffl_combobox.cpp index b068171250..7d2124c306 100644 --- a/fpdfsdk/formfiller/cffl_combobox.cpp +++ b/fpdfsdk/formfiller/cffl_combobox.cpp @@ -48,8 +48,10 @@ std::unique_ptr<CPWL_Wnd> CFFL_ComboBox::NewPWLWindow( const CPWL_Wnd::CreateParams& cp, std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_ComboBox>(std::move(pAttachedData)); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); pWnd->AttachFFLData(this); - pWnd->Create(cp); + pWnd->Realize(cp); CFFL_InteractiveFormFiller* pFormFiller = m_pFormFillEnv->GetInteractiveFormFiller(); diff --git a/fpdfsdk/formfiller/cffl_listbox.cpp b/fpdfsdk/formfiller/cffl_listbox.cpp index 4eb3a7105b..335073293f 100644 --- a/fpdfsdk/formfiller/cffl_listbox.cpp +++ b/fpdfsdk/formfiller/cffl_listbox.cpp @@ -43,8 +43,10 @@ std::unique_ptr<CPWL_Wnd> CFFL_ListBox::NewPWLWindow( const CPWL_Wnd::CreateParams& cp, std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_ListBox>(std::move(pAttachedData)); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); pWnd->AttachFFLData(this); - pWnd->Create(cp); + pWnd->Realize(cp); pWnd->SetFillerNotify(m_pFormFillEnv->GetInteractiveFormFiller()); for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++) diff --git a/fpdfsdk/formfiller/cffl_pushbutton.cpp b/fpdfsdk/formfiller/cffl_pushbutton.cpp index 04db191572..4c9a1ed4cb 100644 --- a/fpdfsdk/formfiller/cffl_pushbutton.cpp +++ b/fpdfsdk/formfiller/cffl_pushbutton.cpp @@ -21,6 +21,8 @@ std::unique_ptr<CPWL_Wnd> CFFL_PushButton::NewPWLWindow( const CPWL_Wnd::CreateParams& cp, std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_PushButton>(std::move(pAttachedData)); - pWnd->Create(cp); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); + pWnd->Realize(cp); return std::move(pWnd); } diff --git a/fpdfsdk/formfiller/cffl_radiobutton.cpp b/fpdfsdk/formfiller/cffl_radiobutton.cpp index c8103d4a62..f987d7613c 100644 --- a/fpdfsdk/formfiller/cffl_radiobutton.cpp +++ b/fpdfsdk/formfiller/cffl_radiobutton.cpp @@ -24,7 +24,9 @@ std::unique_ptr<CPWL_Wnd> CFFL_RadioButton::NewPWLWindow( const CPWL_Wnd::CreateParams& cp, std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_RadioButton>(std::move(pAttachedData)); - pWnd->Create(cp); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); + pWnd->Realize(cp); pWnd->SetCheck(m_pWidget->IsChecked()); return std::move(pWnd); } diff --git a/fpdfsdk/formfiller/cffl_textfield.cpp b/fpdfsdk/formfiller/cffl_textfield.cpp index a54939666f..fbbc63763b 100644 --- a/fpdfsdk/formfiller/cffl_textfield.cpp +++ b/fpdfsdk/formfiller/cffl_textfield.cpp @@ -74,7 +74,9 @@ std::unique_ptr<CPWL_Wnd> CFFL_TextField::NewPWLWindow( std::unique_ptr<CPWL_Wnd::PrivateData> pAttachedData) { auto pWnd = pdfium::MakeUnique<CPWL_Edit>(std::move(pAttachedData)); pWnd->AttachFFLData(this); - pWnd->Create(cp); + if (cp.pParentWnd) + cp.pParentWnd->AddChild(pWnd.get()); + pWnd->Realize(cp); pWnd->SetFillerNotify(m_pFormFillEnv->GetInteractiveFormFiller()); int32_t nMaxLen = m_pWidget->GetMaxLen(); diff --git a/fpdfsdk/pwl/cpwl_appstream.cpp b/fpdfsdk/pwl/cpwl_appstream.cpp index ebd47befc0..02541aa3b6 100644 --- a/fpdfsdk/pwl/cpwl_appstream.cpp +++ b/fpdfsdk/pwl/cpwl_appstream.cpp @@ -684,9 +684,9 @@ ByteString GenerateIconAppStream(CPDF_IconFit& fit, return ByteString(); CPWL_Icon icon(nullptr); - CPWL_Wnd::CreateParams cp; + CPWL_Wnd::CreateParams cp; // No parent. cp.dwFlags = PWS_VISIBLE; - icon.Create(cp); + icon.Realize(cp); icon.SetIconFit(&fit); icon.SetPDFStream(pIconStream); if (!icon.Move(rcIcon, false, false)) diff --git a/fpdfsdk/pwl/cpwl_combo_box.cpp b/fpdfsdk/pwl/cpwl_combo_box.cpp index bb5890b519..db1def0758 100644 --- a/fpdfsdk/pwl/cpwl_combo_box.cpp +++ b/fpdfsdk/pwl/cpwl_combo_box.cpp @@ -274,6 +274,7 @@ void CPWL_ComboBox::CreateEdit(const CreateParams& cp) { m_pEdit = new CPWL_Edit(CloneAttachedData()); m_pEdit->AttachFFLData(m_pFormFiller.Get()); + AddChild(m_pEdit.Get()); CreateParams ecp = cp; ecp.pParentWnd = this; @@ -289,7 +290,7 @@ void CPWL_ComboBox::CreateEdit(const CreateParams& cp) { ecp.rcRectWnd = CFX_FloatRect(); ecp.dwBorderWidth = 0; ecp.nBorderStyle = BorderStyle::SOLID; - m_pEdit->Create(ecp); + m_pEdit->Realize(ecp); } void CPWL_ComboBox::CreateButton(const CreateParams& cp) { @@ -297,6 +298,7 @@ void CPWL_ComboBox::CreateButton(const CreateParams& cp) { return; m_pButton = new CPWL_CBButton(CloneAttachedData()); + AddChild(m_pButton.Get()); CreateParams bcp = cp; bcp.pParentWnd = this; @@ -307,7 +309,7 @@ void CPWL_ComboBox::CreateButton(const CreateParams& cp) { bcp.dwBorderWidth = 2; bcp.nBorderStyle = BorderStyle::BEVELED; bcp.eCursorType = FXCT_ARROW; - m_pButton->Create(bcp); + m_pButton->Realize(bcp); } void CPWL_ComboBox::CreateListBox(const CreateParams& cp) { @@ -316,6 +318,7 @@ void CPWL_ComboBox::CreateListBox(const CreateParams& cp) { m_pList = new CPWL_CBListBox(CloneAttachedData()); m_pList->AttachFFLData(m_pFormFiller.Get()); + AddChild(m_pList.Get()); CreateParams lcp = cp; lcp.pParentWnd = this; @@ -335,7 +338,7 @@ void CPWL_ComboBox::CreateListBox(const CreateParams& cp) { if (cp.sBackgroundColor.nColorType == CFX_Color::kTransparent) lcp.sBackgroundColor = PWL_DEFAULT_WHITECOLOR; - m_pList->Create(lcp); + m_pList->Realize(lcp); } bool CPWL_ComboBox::RePosChildWnd() { diff --git a/fpdfsdk/pwl/cpwl_edit_ctrl.cpp b/fpdfsdk/pwl/cpwl_edit_ctrl.cpp index d27c6cd604..ea48c45376 100644 --- a/fpdfsdk/pwl/cpwl_edit_ctrl.cpp +++ b/fpdfsdk/pwl/cpwl_edit_ctrl.cpp @@ -90,6 +90,7 @@ void CPWL_EditCtrl::CreateEditCaret(const CreateParams& cp) { m_pEditCaret = new CPWL_Caret(CloneAttachedData()); m_pEditCaret->SetInvalidRect(GetClientRect()); + AddChild(m_pEditCaret); CreateParams ecp = cp; ecp.pParentWnd = this; @@ -97,7 +98,7 @@ void CPWL_EditCtrl::CreateEditCaret(const CreateParams& cp) { ecp.dwBorderWidth = 0; ecp.nBorderStyle = BorderStyle::SOLID; ecp.rcRectWnd = CFX_FloatRect(); - m_pEditCaret->Create(ecp); + m_pEditCaret->Realize(ecp); } void CPWL_EditCtrl::SetFontSize(float fFontSize) { diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.cpp b/fpdfsdk/pwl/cpwl_scroll_bar.cpp index 4051d7be51..3e52e0d81b 100644 --- a/fpdfsdk/pwl/cpwl_scroll_bar.cpp +++ b/fpdfsdk/pwl/cpwl_scroll_bar.cpp @@ -543,19 +543,23 @@ void CPWL_ScrollBar::CreateButtons(const CreateParams& cp) { if (!m_pMinButton) { m_pMinButton = new CPWL_SBButton(CloneAttachedData(), m_sbType, PSBT_MIN); - m_pMinButton->Create(scp); + AddChild(m_pMinButton.Get()); + m_pMinButton->Realize(scp); } if (!m_pMaxButton) { m_pMaxButton = new CPWL_SBButton(CloneAttachedData(), m_sbType, PSBT_MAX); - m_pMaxButton->Create(scp); + AddChild(m_pMaxButton.Get()); + m_pMaxButton->Realize(scp); } if (!m_pPosButton) { m_pPosButton = new CPWL_SBButton(CloneAttachedData(), m_sbType, PSBT_POS); ObservedPtr thisObserved(this); - if (m_pPosButton->SetVisible(false) && thisObserved) - m_pPosButton->Create(scp); + if (m_pPosButton->SetVisible(false) && thisObserved) { + AddChild(m_pPosButton.Get()); + m_pPosButton->Realize(scp); + } } } diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp index 6767164073..d5d2102997 100644 --- a/fpdfsdk/pwl/cpwl_wnd.cpp +++ b/fpdfsdk/pwl/cpwl_wnd.cpp @@ -118,9 +118,8 @@ CPWL_Wnd::~CPWL_Wnd() { ASSERT(!m_bCreated); } -void CPWL_Wnd::Create(const CreateParams& cp) { - if (IsValid()) - return; +void CPWL_Wnd::Realize(const CreateParams& cp) { + ASSERT(!m_bCreated); m_CreationParams = cp; OnCreate(&m_CreationParams); @@ -132,8 +131,6 @@ void CPWL_Wnd::Create(const CreateParams& cp) { m_rcClip.Normalize(); } CreateMsgControl(); - if (m_CreationParams.pParentWnd) - m_CreationParams.pParentWnd->AddChild(this); CreateParams ccp = m_CreationParams; ccp.dwFlags &= 0xFFFF0000L; // remove sub styles @@ -501,7 +498,8 @@ void CPWL_Wnd::CreateVScrollBar(const CreateParams& cp) { scp.nTransparency = PWL_SCROLLBAR_TRANSPARENCY; m_pVScrollBar = new CPWL_ScrollBar(CloneAttachedData(), SBT_VSCROLL); - m_pVScrollBar->Create(scp); + AddChild(m_pVScrollBar.Get()); + m_pVScrollBar->Realize(scp); } void CPWL_Wnd::SetCapture() { diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h index 921693f148..8d7eebc5e9 100644 --- a/fpdfsdk/pwl/cpwl_wnd.h +++ b/fpdfsdk/pwl/cpwl_wnd.h @@ -177,15 +177,16 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { virtual CFX_FloatRect GetFocusRect() const; virtual CFX_FloatRect GetClientRect() const; - void InvalidateFocusHandler(FocusHandlerIface* handler); - void InvalidateProvider(ProviderIface* provider); - void Create(const CreateParams& cp); + void AddChild(CPWL_Wnd* pWnd); + void RemoveChild(CPWL_Wnd* pWnd); + void Realize(const CreateParams& cp); void Destroy(); bool Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh); + void InvalidateFocusHandler(FocusHandlerIface* handler); + void InvalidateProvider(ProviderIface* provider); void SetCapture(); void ReleaseCapture(); - void DrawAppearance(CFX_RenderDevice* pDevice, const CFX_Matrix& mtUser2Device); @@ -296,9 +297,6 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { CFX_FloatRect PWLtoWnd(const CFX_FloatRect& rect) const; - void AddChild(CPWL_Wnd* pWnd); - void RemoveChild(CPWL_Wnd* pWnd); - void CreateScrollBar(const CreateParams& cp); void CreateVScrollBar(const CreateParams& cp); |