Index: xfa/fwl/core/cfwl_widgetmgr.cpp |
diff --git a/xfa/fwl/core/cfwl_widgetmgr.cpp b/xfa/fwl/core/cfwl_widgetmgr.cpp |
index 6623e8f9fb524e9821a1313862da90ec1340e80d..6c1101889391ec73f19dfb61906df0d219ba5d20 100644 |
--- a/xfa/fwl/core/cfwl_widgetmgr.cpp |
+++ b/xfa/fwl/core/cfwl_widgetmgr.cpp |
@@ -8,7 +8,8 @@ |
#include <utility> |
-#include "xfa/fwl/core/fwl_noteimp.h" |
+#include "third_party/base/ptr_util.h" |
+#include "xfa/fwl/core/cfwl_notedriver.h" |
#include "xfa/fwl/core/ifwl_app.h" |
#include "xfa/fwl/core/ifwl_form.h" |
#include "xfa/fxfa/app/xfa_fwladapter.h" |
@@ -38,7 +39,7 @@ bool FWL_UseOffscreen(IFWL_Widget* pWidget) { |
CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) |
: m_dwCapability(0), m_pAdapter(pAdapterNative->GetWidgetMgr(this)) { |
ASSERT(m_pAdapter); |
- m_mapWidgetItem[nullptr].reset(new CFWL_WidgetMgrItem); |
+ m_mapWidgetItem[nullptr] = pdfium::MakeUnique<Item>(); |
#if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) |
m_rtScreen.Reset(); |
#endif |
@@ -47,17 +48,17 @@ CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) |
CFWL_WidgetMgr::~CFWL_WidgetMgr() {} |
IFWL_Widget* CFWL_WidgetMgr::GetParentWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
return pItem && pItem->pParent ? pItem->pParent->pWidget : nullptr; |
} |
IFWL_Widget* CFWL_WidgetMgr::GetOwnerWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
return pItem && pItem->pOwner ? pItem->pOwner->pWidget : nullptr; |
} |
IFWL_Widget* CFWL_WidgetMgr::GetFirstSiblingWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!pItem) |
return nullptr; |
@@ -68,22 +69,22 @@ IFWL_Widget* CFWL_WidgetMgr::GetFirstSiblingWidget(IFWL_Widget* pWidget) const { |
} |
IFWL_Widget* CFWL_WidgetMgr::GetPriorSiblingWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
return pItem && pItem->pPrevious ? pItem->pPrevious->pWidget : nullptr; |
} |
IFWL_Widget* CFWL_WidgetMgr::GetNextSiblingWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
return pItem && pItem->pNext ? pItem->pNext->pWidget : nullptr; |
} |
IFWL_Widget* CFWL_WidgetMgr::GetFirstChildWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
return pItem && pItem->pChild ? pItem->pChild->pWidget : nullptr; |
} |
IFWL_Widget* CFWL_WidgetMgr::GetLastChildWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!pItem) |
return nullptr; |
@@ -94,7 +95,7 @@ IFWL_Widget* CFWL_WidgetMgr::GetLastChildWidget(IFWL_Widget* pWidget) const { |
} |
IFWL_Widget* CFWL_WidgetMgr::GetSystemFormWidget(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
while (pItem) { |
if (IsAbleNative(pItem->pWidget)) |
return pItem->pWidget; |
@@ -104,13 +105,13 @@ IFWL_Widget* CFWL_WidgetMgr::GetSystemFormWidget(IFWL_Widget* pWidget) const { |
} |
void CFWL_WidgetMgr::SetWidgetIndex(IFWL_Widget* pWidget, int32_t nIndex) { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!pItem) |
return; |
if (!pItem->pParent) |
return; |
- CFWL_WidgetMgrItem* pChild = pItem->pParent->pChild; |
+ Item* pChild = pItem->pParent->pChild; |
int32_t i = 0; |
while (pChild) { |
if (pChild == pItem) { |
@@ -203,18 +204,21 @@ void CFWL_WidgetMgr::RepaintWidget(IFWL_Widget* pWidget, |
void CFWL_WidgetMgr::InsertWidget(IFWL_Widget* pParent, |
IFWL_Widget* pChild, |
int32_t nIndex) { |
- CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
+ Item* pParentItem = GetWidgetMgrItem(pParent); |
if (!pParentItem) { |
- pParentItem = new CFWL_WidgetMgrItem(pParent); |
- m_mapWidgetItem[pParent].reset(pParentItem); |
+ auto item = pdfium::MakeUnique<Item>(pParent); |
+ pParentItem = item.get(); |
+ m_mapWidgetItem[pParent] = std::move(item); |
+ |
pParentItem->pParent = GetWidgetMgrItem(nullptr); |
SetWidgetIndex(pParent, -1); |
} |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); |
+ Item* pItem = GetWidgetMgrItem(pChild); |
if (!pItem) { |
- pItem = new CFWL_WidgetMgrItem(pChild); |
- m_mapWidgetItem[pChild].reset(pItem); |
+ auto item = pdfium::MakeUnique<Item>(pChild); |
+ pItem = item.get(); |
+ m_mapWidgetItem[pChild] = std::move(item); |
} |
if (pItem->pParent && pItem->pParent != pParentItem) { |
if (pItem->pPrevious) |
@@ -229,7 +233,7 @@ void CFWL_WidgetMgr::InsertWidget(IFWL_Widget* pParent, |
} |
void CFWL_WidgetMgr::RemoveWidget(IFWL_Widget* pWidget) { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!pItem) |
return; |
if (pItem->pPrevious) |
@@ -239,9 +243,9 @@ void CFWL_WidgetMgr::RemoveWidget(IFWL_Widget* pWidget) { |
if (pItem->pParent && pItem->pParent->pChild == pItem) |
pItem->pParent->pChild = pItem->pNext; |
- CFWL_WidgetMgrItem* pChild = pItem->pChild; |
+ Item* pChild = pItem->pChild; |
while (pChild) { |
- CFWL_WidgetMgrItem* pNext = pChild->pNext; |
+ Item* pNext = pChild->pNext; |
RemoveWidget(pChild->pWidget); |
pChild = pNext; |
} |
@@ -249,24 +253,27 @@ void CFWL_WidgetMgr::RemoveWidget(IFWL_Widget* pWidget) { |
} |
void CFWL_WidgetMgr::SetOwner(IFWL_Widget* pOwner, IFWL_Widget* pOwned) { |
- CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pOwner); |
+ Item* pParentItem = GetWidgetMgrItem(pOwner); |
if (!pParentItem) { |
- pParentItem = new CFWL_WidgetMgrItem(pOwner); |
- m_mapWidgetItem[pOwner].reset(pParentItem); |
+ auto item = pdfium::MakeUnique<Item>(pOwner); |
+ pParentItem = item.get(); |
+ m_mapWidgetItem[pOwner] = std::move(item); |
+ |
pParentItem->pParent = GetWidgetMgrItem(nullptr); |
SetWidgetIndex(pOwner, -1); |
} |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pOwned); |
+ Item* pItem = GetWidgetMgrItem(pOwned); |
if (!pItem) { |
- pItem = new CFWL_WidgetMgrItem(pOwned); |
- m_mapWidgetItem[pOwned].reset(pItem); |
+ auto item = pdfium::MakeUnique<Item>(pOwned); |
+ pItem = item.get(); |
+ m_mapWidgetItem[pOwned] = std::move(item); |
} |
pItem->pOwner = pParentItem; |
} |
void CFWL_WidgetMgr::SetParent(IFWL_Widget* pParent, IFWL_Widget* pChild) { |
- CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); |
+ Item* pParentItem = GetWidgetMgrItem(pParent); |
+ Item* pItem = GetWidgetMgrItem(pChild); |
if (!pItem) |
return; |
if (pItem->pParent && pItem->pParent != pParentItem) { |
@@ -289,7 +296,7 @@ void CFWL_WidgetMgr::SetWidgetRect_Native(IFWL_Widget* pWidget, |
if (!FWL_UseOffscreen(pWidget)) |
return; |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
pItem->iRedrawCounter++; |
if (pItem->pOffscreen) { |
CFX_RenderDevice* pDevice = pItem->pOffscreen->GetRenderDevice(); |
@@ -427,12 +434,11 @@ void CFWL_WidgetMgr::ResetRedrawCounts(IFWL_Widget* pWidget) { |
GetWidgetMgrItem(pWidget)->iRedrawCounter = 0; |
} |
-CFWL_WidgetMgrItem* CFWL_WidgetMgr::GetWidgetMgrItem( |
+CFWL_WidgetMgr::Item* CFWL_WidgetMgr::GetWidgetMgrItem( |
IFWL_Widget* pWidget) const { |
auto it = m_mapWidgetItem.find(pWidget); |
- return it != m_mapWidgetItem.end() |
- ? static_cast<CFWL_WidgetMgrItem*>(it->second.get()) |
- : nullptr; |
+ return it != m_mapWidgetItem.end() ? static_cast<Item*>(it->second.get()) |
+ : nullptr; |
} |
bool CFWL_WidgetMgr::IsAbleNative(IFWL_Widget* pWidget) const { |
@@ -591,7 +597,7 @@ CFX_Graphics* CFWL_WidgetMgr::DrawWidgetBefore(IFWL_Widget* pWidget, |
if (!FWL_UseOffscreen(pWidget)) |
return pGraphics; |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!pItem->pOffscreen) { |
pItem->pOffscreen.reset(new CFX_Graphics); |
CFX_RectF rect; |
@@ -610,21 +616,21 @@ void CFWL_WidgetMgr::DrawWidgetAfter(IFWL_Widget* pWidget, |
CFX_RectF& rtClip, |
const CFX_Matrix* pMatrix) { |
if (FWL_UseOffscreen(pWidget)) { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
pGraphics->Transfer(pItem->pOffscreen.get(), rtClip.left, rtClip.top, |
rtClip, pMatrix); |
#ifdef _WIN32 |
pItem->pOffscreen->ClearClip(); |
#endif |
} |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
pItem->iRedrawCounter = 0; |
} |
bool CFWL_WidgetMgr::IsNeedRepaint(IFWL_Widget* pWidget, |
CFX_Matrix* pMatrix, |
const CFX_RectF& rtDirty) { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (pItem && pItem->iRedrawCounter > 0) { |
pItem->iRedrawCounter = 0; |
return true; |
@@ -722,7 +728,7 @@ bool CFWL_WidgetMgr::IsNeedRepaint(IFWL_Widget* pWidget, |
} |
bool CFWL_WidgetMgr::UseOffscreenDirect(IFWL_Widget* pWidget) const { |
- CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
+ Item* pItem = GetWidgetMgrItem(pWidget); |
if (!FWL_UseOffscreen(pWidget) || !(pItem->pOffscreen)) |
return false; |
@@ -742,9 +748,9 @@ bool CFWL_WidgetMgr::UseOffscreenDirect(IFWL_Widget* pWidget) const { |
return pItem->iRedrawCounter == 0; |
} |
-CFWL_WidgetMgrItem::CFWL_WidgetMgrItem() : CFWL_WidgetMgrItem(nullptr) {} |
+CFWL_WidgetMgr::Item::Item() : CFWL_WidgetMgr::Item(nullptr) {} |
-CFWL_WidgetMgrItem::CFWL_WidgetMgrItem(IFWL_Widget* widget) |
+CFWL_WidgetMgr::Item::Item(IFWL_Widget* widget) |
: pParent(nullptr), |
pOwner(nullptr), |
pChild(nullptr), |
@@ -759,4 +765,4 @@ CFWL_WidgetMgrItem::CFWL_WidgetMgrItem(IFWL_Widget* widget) |
{ |
} |
-CFWL_WidgetMgrItem::~CFWL_WidgetMgrItem() {} |
+CFWL_WidgetMgr::Item::~Item() {} |