| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fwl/cfwl_widgetmgr.h" | 7 #include "xfa/fwl/cfwl_widgetmgr.h" |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 pChild->pNext = pItem; | 141 pChild->pNext = pItem; |
| 142 pItem->pPrevious = pChild; | 142 pItem->pPrevious = pChild; |
| 143 } else { | 143 } else { |
| 144 pItem->pParent->pChild = pItem; | 144 pItem->pParent->pChild = pItem; |
| 145 pItem->pPrevious = nullptr; | 145 pItem->pPrevious = nullptr; |
| 146 } | 146 } |
| 147 pItem->pNext = nullptr; | 147 pItem->pNext = nullptr; |
| 148 } | 148 } |
| 149 | 149 |
| 150 void CFWL_WidgetMgr::RepaintWidget(CFWL_Widget* pWidget, | 150 void CFWL_WidgetMgr::RepaintWidget(CFWL_Widget* pWidget, |
| 151 const CFX_RectF* pRect) { | 151 const CFX_RectF& rect) { |
| 152 if (!m_pAdapter) | 152 if (!m_pAdapter) |
| 153 return; | 153 return; |
| 154 | 154 |
| 155 CFWL_Widget* pNative = pWidget; | 155 CFWL_Widget* pNative = pWidget; |
| 156 CFX_RectF rect(*pRect); | 156 CFX_RectF transformedRect = rect; |
| 157 if (IsFormDisabled()) { | 157 if (IsFormDisabled()) { |
| 158 CFWL_Widget* pOuter = pWidget->GetOuter(); | 158 CFWL_Widget* pOuter = pWidget->GetOuter(); |
| 159 while (pOuter) { | 159 while (pOuter) { |
| 160 CFX_RectF rtTemp = pNative->GetWidgetRect(); | 160 CFX_RectF rtTemp = pNative->GetWidgetRect(); |
| 161 rect.left += rtTemp.left; | 161 transformedRect.left += rtTemp.left; |
| 162 rect.top += rtTemp.top; | 162 transformedRect.top += rtTemp.top; |
| 163 pNative = pOuter; | 163 pNative = pOuter; |
| 164 pOuter = pOuter->GetOuter(); | 164 pOuter = pOuter->GetOuter(); |
| 165 } | 165 } |
| 166 } else if (!IsAbleNative(pWidget)) { | 166 } else if (!IsAbleNative(pWidget)) { |
| 167 pNative = GetSystemFormWidget(pWidget); | 167 pNative = GetSystemFormWidget(pWidget); |
| 168 if (!pNative) | 168 if (!pNative) |
| 169 return; | 169 return; |
| 170 | 170 |
| 171 pWidget->TransformTo(pNative, rect.left, rect.top); | 171 pWidget->TransformTo(pNative, transformedRect.left, transformedRect.top); |
| 172 } | 172 } |
| 173 AddRedrawCounts(pNative); | 173 AddRedrawCounts(pNative); |
| 174 m_pAdapter->RepaintWidget(pNative, &rect); | 174 m_pAdapter->RepaintWidget(pNative); |
| 175 } | 175 } |
| 176 | 176 |
| 177 void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent, CFWL_Widget* pChild) { | 177 void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent, CFWL_Widget* pChild) { |
| 178 Item* pParentItem = GetWidgetMgrItem(pParent); | 178 Item* pParentItem = GetWidgetMgrItem(pParent); |
| 179 if (!pParentItem) { | 179 if (!pParentItem) { |
| 180 auto item = pdfium::MakeUnique<Item>(pParent); | 180 auto item = pdfium::MakeUnique<Item>(pParent); |
| 181 pParentItem = item.get(); | 181 pParentItem = item.get(); |
| 182 m_mapWidgetItem[pParent] = std::move(item); | 182 m_mapWidgetItem[pParent] = std::move(item); |
| 183 | 183 |
| 184 pParentItem->pParent = GetWidgetMgrItem(nullptr); | 184 pParentItem->pParent = GetWidgetMgrItem(nullptr); |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 pWidget->GetDelegate()->OnDrawWidget(pTemp, pMatrix); | 490 pWidget->GetDelegate()->OnDrawWidget(pTemp, pMatrix); |
| 491 pGraphics->GetClipRect(clipBounds); | 491 pGraphics->GetClipRect(clipBounds); |
| 492 clipCopy = clipBounds; | 492 clipCopy = clipBounds; |
| 493 } else { | 493 } else { |
| 494 clipBounds.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d); | 494 clipBounds.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d); |
| 495 const_cast<CFX_Matrix*>(pMatrix)->SetIdentity(); // FIXME: const cast. | 495 const_cast<CFX_Matrix*>(pMatrix)->SetIdentity(); // FIXME: const cast. |
| 496 pWidget->GetDelegate()->OnDrawWidget(pTemp, pMatrix); | 496 pWidget->GetDelegate()->OnDrawWidget(pTemp, pMatrix); |
| 497 } | 497 } |
| 498 #endif // _FX_OS_ == _FX_MACOSX_ | 498 #endif // _FX_OS_ == _FX_MACOSX_ |
| 499 | 499 |
| 500 if (!IsFormDisabled()) { | 500 if (!IsFormDisabled()) |
| 501 CFX_RectF rtClient; | 501 clipBounds.Intersect(pWidget->GetClientRect()); |
| 502 pWidget->GetClientRect(rtClient); | |
| 503 clipBounds.Intersect(rtClient); | |
| 504 } | |
| 505 if (!clipBounds.IsEmpty()) | 502 if (!clipBounds.IsEmpty()) |
| 506 DrawChild(pWidget, clipBounds, pTemp, pMatrix); | 503 DrawChild(pWidget, clipBounds, pTemp, pMatrix); |
| 507 | 504 |
| 508 DrawWidgetAfter(pWidget, pGraphics, clipCopy, pMatrix); | 505 DrawWidgetAfter(pWidget, pGraphics, clipCopy, pMatrix); |
| 509 ResetRedrawCounts(pWidget); | 506 ResetRedrawCounts(pWidget); |
| 510 } | 507 } |
| 511 | 508 |
| 512 void CFWL_WidgetMgr::DrawChild(CFWL_Widget* parent, | 509 void CFWL_WidgetMgr::DrawChild(CFWL_Widget* parent, |
| 513 const CFX_RectF& rtClip, | 510 const CFX_RectF& rtClip, |
| 514 CFX_Graphics* pGraphics, | 511 CFX_Graphics* pGraphics, |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 723 pWidget(widget), | 720 pWidget(widget), |
| 724 iRedrawCounter(0) | 721 iRedrawCounter(0) |
| 725 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) | 722 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) |
| 726 , | 723 , |
| 727 bOutsideChanged(false) | 724 bOutsideChanged(false) |
| 728 #endif | 725 #endif |
| 729 { | 726 { |
| 730 } | 727 } |
| 731 | 728 |
| 732 CFWL_WidgetMgr::Item::~Item() {} | 729 CFWL_WidgetMgr::Item::~Item() {} |
| OLD | NEW |