| Index: xfa/fwl/core/fwl_widgetmgrimp.h
|
| diff --git a/xfa/fwl/core/fwl_widgetmgrimp.h b/xfa/fwl/core/fwl_widgetmgrimp.h
|
| index fe17613364399651a77453624210b9a4da800833..6e4fffeca15962e14c26298b227cacf1ce7232bc 100644
|
| --- a/xfa/fwl/core/fwl_widgetmgrimp.h
|
| +++ b/xfa/fwl/core/fwl_widgetmgrimp.h
|
| @@ -7,6 +7,9 @@
|
| #ifndef XFA_FWL_CORE_FWL_WIDGETMGRIMP_H_
|
| #define XFA_FWL_CORE_FWL_WIDGETMGRIMP_H_
|
|
|
| +#include <map>
|
| +#include <memory>
|
| +
|
| #include "core/fxcrt/include/fx_system.h"
|
| #include "xfa/fwl/core/fwl_error.h"
|
| #include "xfa/fwl/core/ifwl_widgetmgr.h"
|
| @@ -25,14 +28,14 @@ class IFWL_Widget;
|
|
|
| class CFWL_WidgetMgrItem {
|
| public:
|
| - CFWL_WidgetMgrItem()
|
| - : pParent(NULL),
|
| - pOwner(NULL),
|
| - pChild(NULL),
|
| - pPrevious(NULL),
|
| - pNext(NULL),
|
| - pWidget(NULL),
|
| - pOffscreen(NULL),
|
| + CFWL_WidgetMgrItem() : CFWL_WidgetMgrItem(nullptr) {}
|
| + explicit CFWL_WidgetMgrItem(IFWL_Widget* widget)
|
| + : pParent(nullptr),
|
| + pOwner(nullptr),
|
| + pChild(nullptr),
|
| + pPrevious(nullptr),
|
| + pNext(nullptr),
|
| + pWidget(widget),
|
| iRedrawCounter(0)
|
| #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
|
| ,
|
| @@ -40,19 +43,15 @@ class CFWL_WidgetMgrItem {
|
| #endif
|
| {
|
| }
|
| - ~CFWL_WidgetMgrItem() {
|
| - if (pOffscreen) {
|
| - delete pOffscreen;
|
| - pOffscreen = NULL;
|
| - }
|
| - }
|
| + ~CFWL_WidgetMgrItem() {}
|
| +
|
| CFWL_WidgetMgrItem* pParent;
|
| CFWL_WidgetMgrItem* pOwner;
|
| CFWL_WidgetMgrItem* pChild;
|
| CFWL_WidgetMgrItem* pPrevious;
|
| CFWL_WidgetMgrItem* pNext;
|
| - IFWL_Widget* pWidget;
|
| - CFX_Graphics* pOffscreen;
|
| + IFWL_Widget* const pWidget;
|
| + std::unique_ptr<CFX_Graphics> pOffscreen;
|
| int32_t iRedrawCounter;
|
| #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
|
| FX_BOOL bOutsideChanged;
|
| @@ -96,8 +95,8 @@ class CFWL_WidgetMgr : public IFWL_WidgetMgr {
|
| void AddRedrawCounts(IFWL_Widget* pWidget);
|
| void ResetRedrawCounts(IFWL_Widget* pWidget);
|
| CXFA_FWLAdapterWidgetMgr* GetAdapterWidgetMgr() const { return m_pAdapter; }
|
| - CFWL_WidgetMgrDelegate* GetDelegate() const { return m_pDelegate; }
|
| - CFWL_WidgetMgrItem* GetWidgetMgrItem(IFWL_Widget* pWidget);
|
| + CFWL_WidgetMgrDelegate* GetDelegate() const { return m_pDelegate.get(); }
|
| + CFWL_WidgetMgrItem* GetWidgetMgrItem(IFWL_Widget* pWidget) const;
|
| bool IsThreadEnabled();
|
| bool IsFormDisabled();
|
| FX_BOOL GetAdapterPopupPos(IFWL_Widget* pWidget,
|
| @@ -112,14 +111,15 @@ class CFWL_WidgetMgr : public IFWL_WidgetMgr {
|
| CFWL_WidgetMgrItem* pItem,
|
| IFWL_Widget** pWidget = NULL);
|
| FX_BOOL IsAbleNative(IFWL_Widget* pWidget);
|
| - CFX_MapPtrToPtr m_mapWidgetItem;
|
| - CXFA_FWLAdapterWidgetMgr* m_pAdapter;
|
| - CFWL_WidgetMgrDelegate* m_pDelegate;
|
| - friend class CFWL_WidgetMgrDelegate;
|
| +
|
| uint32_t m_dwCapability;
|
| + std::unique_ptr<CFWL_WidgetMgrDelegate> m_pDelegate;
|
| + std::map<IFWL_Widget*, std::unique_ptr<CFWL_WidgetMgrItem>> m_mapWidgetItem;
|
| + CXFA_FWLAdapterWidgetMgr* const m_pAdapter;
|
| #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
|
| CFX_RectF m_rtScreen;
|
| #endif
|
| + friend class CFWL_WidgetMgrDelegate;
|
| };
|
|
|
| class CFWL_WidgetMgrDelegate {
|
|
|