| 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/basewidget/fwl_editimp.h" | 7 #include "xfa/fwl/basewidget/fwl_editimp.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "third_party/base/stl_util.h" |
| 13 #include "xfa/fde/cfde_txtedtengine.h" | 14 #include "xfa/fde/cfde_txtedtengine.h" |
| 14 #include "xfa/fde/fde_gedevice.h" | 15 #include "xfa/fde/fde_gedevice.h" |
| 15 #include "xfa/fde/fde_render.h" | 16 #include "xfa/fde/fde_render.h" |
| 16 #include "xfa/fde/ifde_txtedtpage.h" | 17 #include "xfa/fde/ifde_txtedtpage.h" |
| 17 #include "xfa/fwl/basewidget/fwl_caretimp.h" | 18 #include "xfa/fwl/basewidget/fwl_caretimp.h" |
| 18 #include "xfa/fwl/basewidget/fwl_comboboximp.h" | 19 #include "xfa/fwl/basewidget/fwl_comboboximp.h" |
| 19 #include "xfa/fwl/basewidget/fwl_scrollbarimp.h" | 20 #include "xfa/fwl/basewidget/fwl_scrollbarimp.h" |
| 20 #include "xfa/fwl/basewidget/ifwl_caret.h" | 21 #include "xfa/fwl/basewidget/ifwl_caret.h" |
| 21 #include "xfa/fwl/basewidget/ifwl_datetimepicker.h" | 22 #include "xfa/fwl/basewidget/ifwl_datetimepicker.h" |
| 22 #include "xfa/fwl/core/cfwl_message.h" | 23 #include "xfa/fwl/core/cfwl_message.h" |
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 if (!CanRedo()) | 773 if (!CanRedo()) |
| 773 return FALSE; | 774 return FALSE; |
| 774 return Redo(m_DoRecords[++m_iCurRecord].get()); | 775 return Redo(m_DoRecords[++m_iCurRecord].get()); |
| 775 } | 776 } |
| 776 | 777 |
| 777 FX_BOOL CFWL_EditImp::CanUndo() { | 778 FX_BOOL CFWL_EditImp::CanUndo() { |
| 778 return m_iCurRecord >= 0; | 779 return m_iCurRecord >= 0; |
| 779 } | 780 } |
| 780 | 781 |
| 781 FX_BOOL CFWL_EditImp::CanRedo() { | 782 FX_BOOL CFWL_EditImp::CanRedo() { |
| 782 return m_iCurRecord < m_DoRecords.size() - 1; | 783 return m_iCurRecord < pdfium::CollectionSize<int32_t>(m_DoRecords) - 1; |
| 783 } | 784 } |
| 784 | 785 |
| 785 FWL_Error CFWL_EditImp::SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) { | 786 FWL_Error CFWL_EditImp::SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) { |
| 786 if (!m_pEdtEngine) | 787 if (!m_pEdtEngine) |
| 787 return FWL_Error::Indefinite; | 788 return FWL_Error::Indefinite; |
| 788 | 789 |
| 789 FDE_TXTEDTPARAMS* pParams = m_pEdtEngine->GetEditParams(); | 790 FDE_TXTEDTPARAMS* pParams = m_pEdtEngine->GetEditParams(); |
| 790 pParams->fTabWidth = fTabWidth; | 791 pParams->fTabWidth = fTabWidth; |
| 791 pParams->bTabEquidistant = bEquidistant; | 792 pParams->bTabEquidistant = bEquidistant; |
| 792 return FWL_Error::Succeeded; | 793 return FWL_Error::Succeeded; |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1455 } | 1456 } |
| 1456 FX_BOOL CFWL_EditImp::IsContentHeightOverflow() { | 1457 FX_BOOL CFWL_EditImp::IsContentHeightOverflow() { |
| 1457 if (!m_pEdtEngine) | 1458 if (!m_pEdtEngine) |
| 1458 return FALSE; | 1459 return FALSE; |
| 1459 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); | 1460 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| 1460 if (!pPage) | 1461 if (!pPage) |
| 1461 return FALSE; | 1462 return FALSE; |
| 1462 return pPage->GetContentsBox().height > m_rtEngine.height + 1.0f; | 1463 return pPage->GetContentsBox().height > m_rtEngine.height + 1.0f; |
| 1463 } | 1464 } |
| 1464 int32_t CFWL_EditImp::AddDoRecord(IFDE_TxtEdtDoRecord* pRecord) { | 1465 int32_t CFWL_EditImp::AddDoRecord(IFDE_TxtEdtDoRecord* pRecord) { |
| 1465 int32_t nCount = m_DoRecords.size(); | 1466 int32_t nCount = pdfium::CollectionSize<int32_t>(m_DoRecords); |
| 1466 if (m_iCurRecord == nCount - 1) { | 1467 if (m_iCurRecord == nCount - 1) { |
| 1467 if (nCount == m_iMaxRecord) { | 1468 if (nCount == m_iMaxRecord) { |
| 1468 m_DoRecords.pop_front(); | 1469 m_DoRecords.pop_front(); |
| 1469 m_iCurRecord--; | 1470 m_iCurRecord--; |
| 1470 } | 1471 } |
| 1471 } else { | 1472 } else { |
| 1472 m_DoRecords.erase(m_DoRecords.begin() + m_iCurRecord + 1, | 1473 m_DoRecords.erase(m_DoRecords.begin() + m_iCurRecord + 1, |
| 1473 m_DoRecords.end()); | 1474 m_DoRecords.end()); |
| 1474 } | 1475 } |
| 1475 | 1476 |
| 1476 m_DoRecords.push_back(std::unique_ptr<IFDE_TxtEdtDoRecord>(pRecord)); | 1477 m_DoRecords.push_back(std::unique_ptr<IFDE_TxtEdtDoRecord>(pRecord)); |
| 1477 m_iCurRecord = m_DoRecords.size() - 1; | 1478 m_iCurRecord = pdfium::CollectionSize<int32_t>(m_DoRecords) - 1; |
| 1478 return m_iCurRecord; | 1479 return m_iCurRecord; |
| 1479 } | 1480 } |
| 1480 void CFWL_EditImp::Layout() { | 1481 void CFWL_EditImp::Layout() { |
| 1481 GetClientRect(m_rtClient); | 1482 GetClientRect(m_rtClient); |
| 1482 m_rtEngine = m_rtClient; | 1483 m_rtEngine = m_rtClient; |
| 1483 FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( | 1484 FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( |
| 1484 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); | 1485 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
| 1485 if (!pfWidth) | 1486 if (!pfWidth) |
| 1486 return; | 1487 return; |
| 1487 FX_FLOAT fWidth = *pfWidth; | 1488 FX_FLOAT fWidth = *pfWidth; |
| (...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2186 } | 2187 } |
| 2187 CFX_RectF rect; | 2188 CFX_RectF rect; |
| 2188 m_pOwner->GetWidgetRect(rect); | 2189 m_pOwner->GetWidgetRect(rect); |
| 2189 CFX_RectF rtInvalidate; | 2190 CFX_RectF rtInvalidate; |
| 2190 rtInvalidate.Set(0, 0, rect.width + 2, rect.height + 2); | 2191 rtInvalidate.Set(0, 0, rect.width + 2, rect.height + 2); |
| 2191 m_pOwner->Repaint(&rtInvalidate); | 2192 m_pOwner->Repaint(&rtInvalidate); |
| 2192 } | 2193 } |
| 2193 return TRUE; | 2194 return TRUE; |
| 2194 } | 2195 } |
| 2195 void CFWL_EditImpDelegate::DoCursor(CFWL_MsgMouse* pMsg) {} | 2196 void CFWL_EditImpDelegate::DoCursor(CFWL_MsgMouse* pMsg) {} |
| OLD | NEW |