diff options
Diffstat (limited to 'fpdfsdk/pwl/cpwl_wnd.h')
-rw-r--r-- | fpdfsdk/pwl/cpwl_wnd.h | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h index 93938db648..921693f148 100644 --- a/fpdfsdk/pwl/cpwl_wnd.h +++ b/fpdfsdk/pwl/cpwl_wnd.h @@ -7,6 +7,7 @@ #ifndef FPDFSDK_PWL_CPWL_WND_H_ #define FPDFSDK_PWL_CPWL_WND_H_ +#include <memory> #include <vector> #include "core/fpdfdoc/cpdf_formcontrol.h" @@ -86,8 +87,9 @@ struct CPWL_Dash { class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { public: class PrivateData { - protected: - ~PrivateData() {} + public: + virtual ~PrivateData() = default; + virtual std::unique_ptr<PrivateData> Clone() const = 0; }; class ProviderIface : public Observable<ProviderIface> { @@ -95,7 +97,7 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { virtual ~ProviderIface() = default; // get a matrix which map user space to CWnd client space - virtual CFX_Matrix GetWindowMatrix(PrivateData* pAttached) = 0; + virtual CFX_Matrix GetWindowMatrix(const PrivateData* pAttached) = 0; }; class FocusHandlerIface { @@ -125,14 +127,13 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { int32_t nTransparency; // optional float fFontSize; // optional CPWL_Dash sDash; // optional - UnownedPtr<PrivateData> pAttachedData; // optional UnownedPtr<CPWL_Wnd> pParentWnd; // ignore CPWL_MsgControl* pMsgControl; // ignore int32_t eCursorType; // ignore CFX_Matrix mtChild; // ignore }; - CPWL_Wnd(); + explicit CPWL_Wnd(std::unique_ptr<PrivateData> pAttachedData); ~CPWL_Wnd() override; // Returns |true| iff this instance is still allocated. @@ -216,9 +217,8 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { CPWL_Wnd* GetParentWindow() const { return m_CreationParams.pParentWnd.Get(); } - PrivateData* GetAttachedData() const { - return m_CreationParams.pAttachedData.Get(); - } + const PrivateData* GetAttachedData() const { return m_pAttachedData.get(); } + std::unique_ptr<PrivateData> CloneAttachedData() const; bool WndHitTest(const CFX_PointF& point) const; bool ClientHitTest(const CFX_PointF& point) const; @@ -309,14 +309,15 @@ class CPWL_Wnd : public CPWL_TimerHandler, public Observable<CPWL_Wnd> { CPWL_MsgControl* GetMsgControl() const; CreateParams m_CreationParams; + std::unique_ptr<PrivateData> m_pAttachedData; std::vector<CPWL_Wnd*> m_Children; UnownedPtr<CPWL_ScrollBar> m_pVScrollBar; CFX_FloatRect m_rcWindow; CFX_FloatRect m_rcClip; - bool m_bCreated; - bool m_bVisible; - bool m_bNotifying; - bool m_bEnabled; + bool m_bCreated = false; + bool m_bVisible = false; + bool m_bNotifying = false; + bool m_bEnabled = true; }; #endif // FPDFSDK_PWL_CPWL_WND_H_ |