Chromium Code Reviews| Index: xfa/fwl/core/ifwl_edit.cpp |
| diff --git a/xfa/fwl/core/ifwl_edit.cpp b/xfa/fwl/core/ifwl_edit.cpp |
| index ab01dbc05b304a38c52518dafb6410dc1a6869b8..861a1087c27d912aa397792c07c08eaa6985b083 100644 |
| --- a/xfa/fwl/core/ifwl_edit.cpp |
| +++ b/xfa/fwl/core/ifwl_edit.cpp |
| @@ -62,14 +62,9 @@ IFWL_Edit::IFWL_Edit(const IFWL_App* app, |
| m_bLButtonDown(false), |
| m_nSelStart(0), |
| m_nLimit(-1), |
| - m_fSpaceAbove(0), |
| - m_fSpaceBelow(0), |
| m_fFontSize(0), |
| m_bSetRange(false), |
| - m_iMin(-1), |
| m_iMax(0xFFFFFFF), |
| - m_backColor(0), |
| - m_updateBackColor(false), |
| m_iCurRecord(-1), |
| m_iMaxRecord(128) { |
| m_rtClient.Reset(); |
| @@ -77,8 +72,6 @@ IFWL_Edit::IFWL_Edit(const IFWL_App* app, |
| m_rtStatic.Reset(); |
| InitCaret(); |
| - if (!m_pEdtEngine) |
| - InitEngine(); |
| } |
| IFWL_Edit::~IFWL_Edit() { |
| @@ -95,16 +88,15 @@ FWL_Type IFWL_Edit::GetClassID() const { |
| void IFWL_Edit::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { |
| if (bAutoSize) { |
| rect.Set(0, 0, 0, 0); |
| - if (m_pEdtEngine) { |
| - int32_t iTextLen = m_pEdtEngine->GetTextLength(); |
| - if (iTextLen > 0) { |
| - CFX_WideString wsText; |
| - m_pEdtEngine->GetText(wsText, 0); |
| - CFX_SizeF sz = CalcTextSize( |
| - wsText, m_pProperties->m_pThemeProvider, |
| - !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine)); |
| - rect.Set(0, 0, sz.x, sz.y); |
| - } |
| + |
| + int32_t iTextLen = m_EdtEngine.GetTextLength(); |
| + if (iTextLen > 0) { |
| + CFX_WideString wsText; |
| + m_EdtEngine.GetText(wsText, 0); |
| + CFX_SizeF sz = CalcTextSize( |
| + wsText, m_pProperties->m_pThemeProvider, |
| + !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine)); |
| + rect.Set(0, 0, sz.x, sz.y); |
| } |
| IFWL_Widget::GetWidgetRect(rect, true); |
| } else { |
| @@ -180,10 +172,10 @@ void IFWL_Edit::AddSpellCheckObj(CFX_Path& PathData, |
| FX_FLOAT fEndX = 0.0f; |
| FX_FLOAT fY = 0.0f; |
| FX_FLOAT fStep = 0.0f; |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| CFX_RectFArray rectArray; |
| CFX_RectF rectText; |
| - const FDE_TXTEDTPARAMS* txtEdtParams = m_pEdtEngine->GetEditParams(); |
| + const FDE_TXTEDTPARAMS* txtEdtParams = m_EdtEngine.GetEditParams(); |
| FX_FLOAT fAsent = (FX_FLOAT)txtEdtParams->pFont->GetAscent() * |
| txtEdtParams->fFontSize / 1000; |
| pPage->CalcRangeRectArray(nStart, nCount, rectArray); |
| @@ -196,69 +188,6 @@ void IFWL_Edit::AddSpellCheckObj(CFX_Path& PathData, |
| AddSquigglyPath(&PathData, fStartX, fEndX, fY, fStep); |
| } |
| } |
| -int32_t IFWL_Edit::GetWordAtPoint(CFX_PointF pointf, int32_t& nCount) { |
| - return 0; |
| -} |
| -bool IFWL_Edit::GetSuggestWords(CFX_PointF pointf, |
| - std::vector<CFX_ByteString>& sSuggest) { |
| - int32_t nWordCount = 0; |
| - int32_t nWordStart = GetWordAtPoint(pointf, nWordCount); |
|
dsinclair
2016/11/09 22:17:57
nWordCount is always 0.
|
| - if (nWordCount < 1) { |
| - return false; |
| - } |
| - CFX_WideString wsSpell; |
| - GetText(wsSpell, nWordStart, nWordCount); |
| - CFX_ByteString sLatinWord; |
| - for (int i = 0; i < nWordCount; i++) { |
| - if (!FX_EDIT_ISLATINWORD(wsSpell[i])) { |
| - break; |
| - } |
| - sLatinWord += (FX_CHAR)wsSpell[i]; |
| - } |
| - if (sLatinWord.IsEmpty()) { |
| - return false; |
| - } |
| - CFWL_EvtEdtCheckWord checkWordEvent; |
| - checkWordEvent.m_pSrcTarget = this; |
| - checkWordEvent.bsWord = sLatinWord; |
| - checkWordEvent.bCheckWord = true; |
| - DispatchEvent(&checkWordEvent); |
| - if (checkWordEvent.bCheckWord) { |
| - return false; |
| - } |
| - CFWL_EvtEdtGetSuggestWords suggestWordsEvent; |
| - suggestWordsEvent.m_pSrcTarget = this; |
| - suggestWordsEvent.bsWord = sLatinWord; |
| - suggestWordsEvent.bsArraySuggestWords = sSuggest; |
| - suggestWordsEvent.bSuggestWords = false; |
| - DispatchEvent(&checkWordEvent); |
| - return suggestWordsEvent.bSuggestWords; |
| -} |
| -bool IFWL_Edit::ReplaceSpellCheckWord(CFX_PointF pointf, |
| - const CFX_ByteStringC& bsReplace) { |
| - int32_t nWordCount = 0; |
| - int32_t nWordStart = GetWordAtPoint(pointf, nWordCount); |
| - if (nWordCount < 1) { |
|
dsinclair
2016/11/09 22:17:57
nWordCount is always 0
|
| - return false; |
| - } |
| - CFX_WideString wsSpell; |
| - GetText(wsSpell, nWordStart, nWordCount); |
| - for (int i = 0; i < nWordCount; i++) { |
| - if (!FX_EDIT_ISLATINWORD(wsSpell[i])) { |
| - nWordCount = i; |
| - break; |
| - } |
| - } |
| - int32_t nDestLen = bsReplace.GetLength(); |
| - CFX_WideString wsDest; |
| - FX_WCHAR* pBuffer = wsDest.GetBuffer(nDestLen); |
| - for (int32_t i = 0; i < nDestLen; i++) { |
| - pBuffer[i] = bsReplace[i]; |
| - } |
| - wsDest.ReleaseBuffer(nDestLen); |
| - Replace(nWordStart, nWordCount, wsDest.AsStringC()); |
| - return true; |
| -} |
| void IFWL_Edit::DrawSpellCheck(CFX_Graphics* pGraphics, |
| const CFX_Matrix* pMatrix) { |
| pGraphics->SaveGraphState(); |
| @@ -329,9 +258,9 @@ void IFWL_Edit::DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) { |
| if (!m_pWidgetMgr->IsFormDisabled()) { |
| DrawTextBk(pGraphics, pTheme, pMatrix); |
| } |
| - if (m_pEdtEngine) { |
| - DrawContent(pGraphics, pTheme, pMatrix); |
| - } |
| + |
| + DrawContent(pGraphics, pTheme, pMatrix); |
| + |
| if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) && |
| !(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly)) { |
| DrawSpellCheck(pGraphics, pMatrix); |
| @@ -358,154 +287,55 @@ void IFWL_Edit::SetThemeProvider(IFWL_ThemeProvider* pThemeProvider) { |
| m_pProperties->m_pThemeProvider = pThemeProvider; |
| } |
| -FWL_Error IFWL_Edit::SetText(const CFX_WideString& wsText) { |
| - m_pEdtEngine->SetText(wsText); |
| - return FWL_Error::Succeeded; |
| +void IFWL_Edit::SetText(const CFX_WideString& wsText) { |
| + m_EdtEngine.SetText(wsText); |
| } |
| int32_t IFWL_Edit::GetTextLength() const { |
| - if (!m_pEdtEngine) |
| - return -1; |
| - return m_pEdtEngine->GetTextLength(); |
| -} |
| - |
| -FWL_Error IFWL_Edit::GetText(CFX_WideString& wsText, |
| - int32_t nStart, |
| - int32_t nCount) const { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->GetText(wsText, nStart, nCount); |
| - return FWL_Error::Succeeded; |
| + return m_EdtEngine.GetTextLength(); |
| } |
| -FWL_Error IFWL_Edit::ClearText() { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->ClearText(); |
| - return FWL_Error::Succeeded; |
| +void IFWL_Edit::GetText(CFX_WideString& wsText, |
| + int32_t nStart, |
| + int32_t nCount) { |
| + m_EdtEngine.GetText(wsText, nStart, nCount); |
| } |
| -int32_t IFWL_Edit::GetCaretPos() const { |
| - if (!m_pEdtEngine) |
| - return -1; |
| - return m_pEdtEngine->GetCaretPos(); |
| +void IFWL_Edit::ClearText() { |
| + m_EdtEngine.ClearText(); |
| } |
| -int32_t IFWL_Edit::SetCaretPos(int32_t nIndex, bool bBefore) { |
| - if (!m_pEdtEngine) |
| - return -1; |
| - return m_pEdtEngine->SetCaretPos(nIndex, bBefore); |
| -} |
| - |
| -FWL_Error IFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->AddSelRange(nStart, nCount); |
| - return FWL_Error::Succeeded; |
| +void IFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) { |
| + m_EdtEngine.AddSelRange(nStart, nCount); |
| } |
| int32_t IFWL_Edit::CountSelRanges() { |
| - if (!m_pEdtEngine) |
| - return 0; |
| - return m_pEdtEngine->CountSelRanges(); |
| + return m_EdtEngine.CountSelRanges(); |
| } |
| int32_t IFWL_Edit::GetSelRange(int32_t nIndex, int32_t& nStart) { |
| - if (!m_pEdtEngine) |
| - return -1; |
| - return m_pEdtEngine->GetSelRange(nIndex, nStart); |
| + return m_EdtEngine.GetSelRange(nIndex, nStart); |
| } |
| -FWL_Error IFWL_Edit::ClearSelections() { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->ClearSelection(); |
| - return FWL_Error::Succeeded; |
| +void IFWL_Edit::ClearSelections() { |
| + m_EdtEngine.ClearSelection(); |
| } |
| int32_t IFWL_Edit::GetLimit() { |
| return m_nLimit; |
| } |
| -FWL_Error IFWL_Edit::SetLimit(int32_t nLimit) { |
| +void IFWL_Edit::SetLimit(int32_t nLimit) { |
| m_nLimit = nLimit; |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->SetLimit(nLimit); |
| - return FWL_Error::Succeeded; |
| + m_EdtEngine.SetLimit(nLimit); |
| } |
| -FWL_Error IFWL_Edit::SetAliasChar(FX_WCHAR wAlias) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->SetAliasChar(wAlias); |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::Insert(int32_t nStart, |
| - const FX_WCHAR* lpText, |
| - int32_t nLen) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) || |
| - (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)) { |
| - return FWL_Error::Indefinite; |
| - } |
| - m_pEdtEngine->Insert(nStart, lpText, nLen); |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::DeleteSelections() { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - int32_t iCount = m_pEdtEngine->CountSelRanges(); |
| - if (iCount > 0) |
| - m_pEdtEngine->Delete(-1); |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::DeleteRange(int32_t nStart, int32_t nCount) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->DeleteRange(nStart, nCount); |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::Replace(int32_t nStart, |
| - int32_t nLen, |
| - const CFX_WideStringC& wsReplace) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - m_pEdtEngine->Replace(nStart, nLen, CFX_WideString(wsReplace)); |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::DoClipboard(int32_t iCmd) { |
|
dsinclair
2016/11/09 22:17:57
This did nothing so removed.
|
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_ReadOnly) || |
| - (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)) { |
| - return FWL_Error::Succeeded; |
| - } |
| - return FWL_Error::Indefinite; |
| +void IFWL_Edit::SetAliasChar(FX_WCHAR wAlias) { |
| + m_EdtEngine.SetAliasChar(wAlias); |
| } |
| bool IFWL_Edit::Copy(CFX_WideString& wsCopy) { |
| - if (!m_pEdtEngine) |
| - return false; |
| - |
| - int32_t nCount = m_pEdtEngine->CountSelRanges(); |
| + int32_t nCount = m_EdtEngine.CountSelRanges(); |
| if (nCount == 0) |
| return false; |
| @@ -513,8 +343,8 @@ bool IFWL_Edit::Copy(CFX_WideString& wsCopy) { |
| CFX_WideString wsTemp; |
| int32_t nStart, nLength; |
| for (int32_t i = 0; i < nCount; i++) { |
| - nLength = m_pEdtEngine->GetSelRange(i, nStart); |
| - m_pEdtEngine->GetText(wsTemp, nStart, nLength); |
| + nLength = m_EdtEngine.GetSelRange(i, nStart); |
| + m_EdtEngine.GetText(wsTemp, nStart, nLength); |
| wsCopy += wsTemp; |
| wsTemp.clear(); |
| } |
| @@ -522,10 +352,7 @@ bool IFWL_Edit::Copy(CFX_WideString& wsCopy) { |
| } |
| bool IFWL_Edit::Cut(CFX_WideString& wsCut) { |
| - if (!m_pEdtEngine) |
| - return false; |
| - |
| - int32_t nCount = m_pEdtEngine->CountSelRanges(); |
| + int32_t nCount = m_EdtEngine.CountSelRanges(); |
| if (nCount == 0) |
| return false; |
| @@ -533,22 +360,19 @@ bool IFWL_Edit::Cut(CFX_WideString& wsCut) { |
| CFX_WideString wsTemp; |
| int32_t nStart, nLength; |
| for (int32_t i = 0; i < nCount; i++) { |
| - nLength = m_pEdtEngine->GetSelRange(i, nStart); |
| - m_pEdtEngine->GetText(wsTemp, nStart, nLength); |
| + nLength = m_EdtEngine.GetSelRange(i, nStart); |
| + m_EdtEngine.GetText(wsTemp, nStart, nLength); |
| wsCut += wsTemp; |
| wsTemp.clear(); |
| } |
| - m_pEdtEngine->Delete(0); |
| + m_EdtEngine.Delete(0); |
| return true; |
| } |
| bool IFWL_Edit::Paste(const CFX_WideString& wsPaste) { |
| - if (!m_pEdtEngine) |
| - return false; |
| - |
| - int32_t nCaret = m_pEdtEngine->GetCaretPos(); |
| + int32_t nCaret = m_EdtEngine.GetCaretPos(); |
| int32_t iError = |
| - m_pEdtEngine->Insert(nCaret, wsPaste.c_str(), wsPaste.GetLength()); |
| + m_EdtEngine.Insert(nCaret, wsPaste.c_str(), wsPaste.GetLength()); |
| if (iError < 0) { |
| ProcessInsertError(iError); |
| return false; |
| @@ -556,32 +380,16 @@ bool IFWL_Edit::Paste(const CFX_WideString& wsPaste) { |
| return true; |
| } |
| -bool IFWL_Edit::Delete() { |
| - if (!m_pEdtEngine) |
| - return false; |
| - |
| - int32_t nCount = m_pEdtEngine->CountSelRanges(); |
| - if (nCount < 1) |
| - return false; |
| - |
| - m_pEdtEngine->Delete(0); |
| - return true; |
| -} |
| - |
| bool IFWL_Edit::Redo(const IFDE_TxtEdtDoRecord* pRecord) { |
| - if (!m_pEdtEngine) |
| - return false; |
| if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_NoRedoUndo) |
| return true; |
| - return m_pEdtEngine->Redo(pRecord); |
| + return m_EdtEngine.Redo(pRecord); |
| } |
| bool IFWL_Edit::Undo(const IFDE_TxtEdtDoRecord* pRecord) { |
| - if (!m_pEdtEngine) |
| - return false; |
| if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_NoRedoUndo) |
| return true; |
| - return m_pEdtEngine->Undo(pRecord); |
| + return m_EdtEngine.Undo(pRecord); |
| } |
| bool IFWL_Edit::Undo() { |
| @@ -604,26 +412,8 @@ bool IFWL_Edit::CanRedo() { |
| return m_iCurRecord < pdfium::CollectionSize<int32_t>(m_DoRecords) - 1; |
| } |
| -FWL_Error IFWL_Edit::SetTabWidth(FX_FLOAT fTabWidth, bool bEquidistant) { |
| - if (!m_pEdtEngine) |
| - return FWL_Error::Indefinite; |
| - |
| - FDE_TXTEDTPARAMS* pParams = m_pEdtEngine->GetEditParams(); |
| - pParams->fTabWidth = fTabWidth; |
| - pParams->bTabEquidistant = bEquidistant; |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::SetOuter(IFWL_Widget* pOuter) { |
| +void IFWL_Edit::SetOuter(IFWL_Widget* pOuter) { |
| m_pOuter = pOuter; |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::SetNumberRange(int32_t iMin, int32_t iMax) { |
| - m_iMin = iMin; |
| - m_iMax = iMax; |
| - m_bSetRange = true; |
| - return FWL_Error::Succeeded; |
| } |
| void IFWL_Edit::On_CaretChanged(CFDE_TxtEdtEngine* pEdit, |
| @@ -660,7 +450,7 @@ void IFWL_Edit::On_TextChanged(CFDE_TxtEdtEngine* pEdit, |
| if (dwStyleEx & FWL_STYLEEXT_EDT_VAlignMask) |
| UpdateVAlignment(); |
| - IFDE_TxtEdtPage* page = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* page = m_EdtEngine.GetPage(0); |
| FX_FLOAT fContentWidth = page->GetContentsBox().width; |
| FX_FLOAT fContentHeight = page->GetContentsBox().height; |
| CFX_RectF rtTemp; |
| @@ -697,7 +487,7 @@ void IFWL_Edit::On_TextChanged(CFDE_TxtEdtEngine* pEdit, |
| if (bNeedUpdate) { |
| UpdateEditParams(); |
| UpdateEditLayout(); |
| - IFDE_TxtEdtPage* page1 = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* page1 = m_EdtEngine.GetPage(0); |
| fContentWidth1 = page1->GetContentsBox().width; |
| fContentHeight1 = page1->GetContentsBox().height; |
| } |
| @@ -729,7 +519,7 @@ void IFWL_Edit::On_SelChanged(CFDE_TxtEdtEngine* pEdit) { |
| bool IFWL_Edit::On_PageLoad(CFDE_TxtEdtEngine* pEdit, |
| int32_t nPageIndex, |
| int32_t nPurpose) { |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(nPageIndex); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(nPageIndex); |
| if (!pPage) |
| return false; |
| pPage->LoadPage(nullptr, nullptr); |
| @@ -739,7 +529,7 @@ bool IFWL_Edit::On_PageLoad(CFDE_TxtEdtEngine* pEdit, |
| bool IFWL_Edit::On_PageUnload(CFDE_TxtEdtEngine* pEdit, |
| int32_t nPageIndex, |
| int32_t nPurpose) { |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(nPageIndex); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(nPageIndex); |
| if (!pPage) |
| return false; |
| pPage->UnloadPage(nullptr); |
| @@ -765,18 +555,6 @@ bool IFWL_Edit::On_Validate(CFDE_TxtEdtEngine* pEdit, CFX_WideString& wsText) { |
| return event.bValidate; |
| } |
| -FWL_Error IFWL_Edit::SetBackgroundColor(uint32_t color) { |
| - m_backColor = color; |
| - m_updateBackColor = true; |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| -FWL_Error IFWL_Edit::SetFont(const CFX_WideString& wsFont, FX_FLOAT fSize) { |
| - m_wsFont = wsFont; |
| - m_fFontSize = fSize; |
| - return FWL_Error::Succeeded; |
| -} |
| - |
| void IFWL_Edit::SetScrollOffset(FX_FLOAT fScrollOffset) { |
| m_fScrollOffsetY = fScrollOffset; |
| } |
| @@ -816,9 +594,7 @@ void IFWL_Edit::DrawTextBk(CFX_Graphics* pGraphics, |
| void IFWL_Edit::DrawContent(CFX_Graphics* pGraphics, |
| IFWL_ThemeProvider* pTheme, |
| const CFX_Matrix* pMatrix) { |
| - if (!m_pEdtEngine) |
| - return; |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return; |
| pGraphics->SaveGraphState(); |
| @@ -843,7 +619,7 @@ void IFWL_Edit::DrawContent(CFX_Graphics* pGraphics, |
| FWL_WGTSTATE_Deactivated; |
| } |
| } |
| - int32_t nSelCount = m_pEdtEngine->CountSelRanges(); |
| + int32_t nSelCount = m_EdtEngine.CountSelRanges(); |
| if (bShowSel && nSelCount > 0) { |
| int32_t nPageCharStart = pPage->GetCharStart(); |
| int32_t nPageCharCount = pPage->GetCharCount(); |
| @@ -853,7 +629,7 @@ void IFWL_Edit::DrawContent(CFX_Graphics* pGraphics, |
| CFX_RectFArray rectArr; |
| int32_t i = 0; |
| for (i = 0; i < nSelCount; i++) { |
| - nCharCount = m_pEdtEngine->GetSelRange(i, nCharStart); |
| + nCharCount = m_EdtEngine.GetSelRange(i, nCharStart); |
| int32_t nCharEnd = nCharStart + nCharCount - 1; |
| if (nCharEnd < nPageCharStart || nCharStart > nPageCharEnd) { |
| continue; |
| @@ -917,7 +693,7 @@ void IFWL_Edit::UpdateEditEngine() { |
| UpdateEditParams(); |
| UpdateEditLayout(); |
| if (m_nLimit > -1) { |
| - m_pEdtEngine->SetLimit(m_nLimit); |
| + m_EdtEngine.SetLimit(m_nLimit); |
| } |
| } |
| void IFWL_Edit::UpdateEditParams() { |
| @@ -1033,34 +809,34 @@ void IFWL_Edit::UpdateEditParams() { |
| params.wLineBreakChar = L'\n'; |
| params.nCharRotation = 0; |
| params.pEventSink = this; |
| - m_pEdtEngine->SetEditParams(params); |
| + m_EdtEngine.SetEditParams(params); |
| } |
| void IFWL_Edit::UpdateEditLayout() { |
| - if (m_pEdtEngine->GetTextLength() <= 0) |
| - m_pEdtEngine->SetTextByStream(nullptr); |
| + if (m_EdtEngine.GetTextLength() <= 0) |
| + m_EdtEngine.SetTextByStream(nullptr); |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (pPage) |
| pPage->UnloadPage(nullptr); |
| - m_pEdtEngine->StartLayout(); |
| - m_pEdtEngine->DoLayout(nullptr); |
| - m_pEdtEngine->EndLayout(); |
| - pPage = m_pEdtEngine->GetPage(0); |
| + m_EdtEngine.StartLayout(); |
| + m_EdtEngine.DoLayout(nullptr); |
| + m_EdtEngine.EndLayout(); |
| + pPage = m_EdtEngine.GetPage(0); |
| if (pPage) |
| pPage->LoadPage(nullptr, nullptr); |
| } |
| bool IFWL_Edit::UpdateOffset() { |
| CFX_RectF rtCaret; |
| - m_pEdtEngine->GetCaretRect(rtCaret); |
| + m_EdtEngine.GetCaretRect(rtCaret); |
| FX_FLOAT fOffSetX = m_rtEngine.left - m_fScrollOffsetX; |
| FX_FLOAT fOffSetY = m_rtEngine.top - m_fScrollOffsetY + m_fVAlignOffset; |
| rtCaret.Offset(fOffSetX, fOffSetY); |
| const CFX_RectF& rtEidt = m_rtEngine; |
| if (rtEidt.Contains(rtCaret)) { |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return false; |
| @@ -1105,7 +881,7 @@ bool IFWL_Edit::UpdateOffset(IFWL_ScrollBar* pScrollBar, FX_FLOAT fPosChanged) { |
| } |
| void IFWL_Edit::UpdateVAlignment() { |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return; |
| const CFX_RectF& rtFDE = pPage->GetContentsBox(); |
| @@ -1144,7 +920,7 @@ void IFWL_Edit::UpdateVAlignment() { |
| } |
| void IFWL_Edit::UpdateCaret() { |
| CFX_RectF rtFDE; |
| - m_pEdtEngine->GetCaretRect(rtFDE); |
| + m_EdtEngine.GetCaretRect(rtFDE); |
| rtFDE.Offset(m_rtEngine.left - m_fScrollOffsetX, |
| m_rtEngine.top - m_fScrollOffsetY + m_fVAlignOffset); |
| CFX_RectF rtCaret; |
| @@ -1189,7 +965,7 @@ IFWL_ScrollBar* IFWL_Edit::UpdateScroll() { |
| if (!bShowHorz && !bShowVert) { |
| return nullptr; |
| } |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return nullptr; |
| const CFX_RectF& rtFDE = pPage->GetContentsBox(); |
| @@ -1230,7 +1006,7 @@ IFWL_ScrollBar* IFWL_Edit::UpdateScroll() { |
| m_pVertScrollBar->GetWidgetRect(rtScroll); |
| if (rtScroll.height < rtFDE.height) { |
| m_pVertScrollBar->LockUpdate(); |
| - FX_FLOAT fStep = m_pEdtEngine->GetEditParams()->fLineSpace; |
| + FX_FLOAT fStep = m_EdtEngine.GetEditParams()->fLineSpace; |
| FX_FLOAT fRange = rtFDE.height - m_rtEngine.height; |
| if (fRange < fStep) { |
| fRange = fStep; |
| @@ -1277,9 +1053,7 @@ bool IFWL_Edit::IsShowScrollBar(bool bVert) { |
| (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine); |
| } |
| bool IFWL_Edit::IsContentHeightOverflow() { |
| - if (!m_pEdtEngine) |
| - return false; |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return false; |
| return pPage->GetContentsBox().height > m_rtEngine.height + 1.0f; |
| @@ -1455,11 +1229,6 @@ void IFWL_Edit::InitScrollBar(bool bVert) { |
| m_pHorzScrollBar.reset(sb); |
| } |
| -void IFWL_Edit::InitEngine() { |
| - if (!m_pEdtEngine) |
| - m_pEdtEngine.reset(new CFDE_TxtEdtEngine); |
| -} |
| - |
| bool FWL_ShowCaret(IFWL_Widget* pWidget, |
| bool bVisible, |
| const CFX_RectF* pRtAnchor) { |
| @@ -1510,21 +1279,18 @@ void IFWL_Edit::ShowCaret(bool bVisible, CFX_RectF* pRect) { |
| } |
| } |
| bool IFWL_Edit::ValidateNumberChar(FX_WCHAR cNum) { |
| - if (!m_pEdtEngine) { |
| - return false; |
| - } |
| if (!m_bSetRange) { |
| return true; |
| } |
| CFX_WideString wsOld, wsText; |
| - m_pEdtEngine->GetText(wsText, 0); |
| + m_EdtEngine.GetText(wsText, 0); |
| if (wsText.IsEmpty()) { |
| if (cNum == L'0') { |
| return false; |
| } |
| return true; |
| } |
| - int32_t caretPos = m_pEdtEngine->GetCaretPos(); |
| + int32_t caretPos = m_EdtEngine.GetCaretPos(); |
| int32_t iSel = CountSelRanges(); |
| if (iSel == 0) { |
| if (cNum == L'0' && caretPos == 0) { |
| @@ -1571,7 +1337,8 @@ void IFWL_Edit::ProcessInsertError(int32_t iError) { |
| DispatchEvent(&textFullEvent); |
| break; |
| } |
| - default: {} |
| + default: |
| + break; |
| } |
| } |
| @@ -1661,10 +1428,8 @@ void IFWL_Edit::DoDeactivate(CFWL_MsgDeactivate* pMsg) { |
| void IFWL_Edit::DoButtonDown(CFWL_MsgMouse* pMsg) { |
| if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) |
| SetFocus(true); |
| - if (!m_pEdtEngine) |
| - UpdateEditEngine(); |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return; |
| CFX_PointF pt(pMsg->m_fx, pMsg->m_fy); |
| @@ -1674,7 +1439,7 @@ void IFWL_Edit::DoButtonDown(CFWL_MsgMouse* pMsg) { |
| if (nIndex < 0) |
| nIndex = 0; |
| - m_pEdtEngine->SetCaretPos(nIndex, bBefore); |
| + m_EdtEngine.SetCaretPos(nIndex, bBefore); |
| } |
| void IFWL_Edit::OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
| @@ -1682,8 +1447,6 @@ void IFWL_Edit::OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
| bool bRepaint = !!(dwStyleEx & FWL_STYLEEXT_EDT_InnerCaret); |
| if (bSet) { |
| m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
| - if (!m_pEdtEngine) |
| - UpdateEditEngine(); |
| UpdateVAlignment(); |
| UpdateOffset(); |
| @@ -1691,13 +1454,13 @@ void IFWL_Edit::OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
| } else if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) { |
| m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; |
| ShowCaret(false); |
| - if (m_pEdtEngine && (dwStyleEx & FWL_STYLEEXT_EDT_NoHideSel) == 0) { |
| + if ((dwStyleEx & FWL_STYLEEXT_EDT_NoHideSel) == 0) { |
| int32_t nSel = CountSelRanges(); |
| if (nSel > 0) { |
| ClearSelections(); |
| bRepaint = true; |
| } |
| - SetCaretPos(0); |
| + m_EdtEngine.SetCaretPos(0, true); |
| UpdateOffset(); |
| } |
| ClearRecord(); |
| @@ -1718,11 +1481,11 @@ void IFWL_Edit::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
| m_bLButtonDown = true; |
| SetGrab(true); |
| DoButtonDown(pMsg); |
| - int32_t nIndex = m_pEdtEngine->GetCaretPos(); |
| + int32_t nIndex = m_EdtEngine.GetCaretPos(); |
| bool bRepaint = false; |
| - int32_t iCount = m_pEdtEngine->CountSelRanges(); |
| + int32_t iCount = m_EdtEngine.CountSelRanges(); |
| if (iCount > 0) { |
| - m_pEdtEngine->ClearSelection(); |
| + m_EdtEngine.ClearSelection(); |
| bRepaint = true; |
| } |
| @@ -1730,7 +1493,7 @@ void IFWL_Edit::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
| if (bShift && m_nSelStart != nIndex) { |
| int32_t iStart = std::min(m_nSelStart, nIndex); |
| int32_t iEnd = std::max(m_nSelStart, nIndex); |
| - m_pEdtEngine->AddSelRange(iStart, iEnd - iStart); |
| + m_EdtEngine.AddSelRange(iStart, iEnd - iStart); |
| bRepaint = true; |
| } else { |
| m_nSelStart = nIndex; |
| @@ -1745,10 +1508,7 @@ void IFWL_Edit::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
| } |
| void IFWL_Edit::OnButtonDblClk(CFWL_MsgMouse* pMsg) { |
| - if (!m_pEdtEngine) |
| - return; |
| - |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return; |
| @@ -1759,18 +1519,16 @@ void IFWL_Edit::OnButtonDblClk(CFWL_MsgMouse* pMsg) { |
| if (nIndex < 0) |
| return; |
| - m_pEdtEngine->AddSelRange(nIndex, nCount); |
| - m_pEdtEngine->SetCaretPos(nIndex + nCount - 1, false); |
| + m_EdtEngine.AddSelRange(nIndex, nCount); |
| + m_EdtEngine.SetCaretPos(nIndex + nCount - 1, false); |
| Repaint(&m_rtEngine); |
| } |
| void IFWL_Edit::OnMouseMove(CFWL_MsgMouse* pMsg) { |
| - if (!m_pEdtEngine) |
| - return; |
| if (m_nSelStart == -1 || !m_bLButtonDown) |
| return; |
| - IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
| + IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(0); |
| if (!pPage) |
| return; |
| @@ -1778,23 +1536,20 @@ void IFWL_Edit::OnMouseMove(CFWL_MsgMouse* pMsg) { |
| DeviceToEngine(pt); |
| bool bBefore = true; |
| int32_t nIndex = pPage->GetCharIndex(pt, bBefore); |
| - m_pEdtEngine->SetCaretPos(nIndex, bBefore); |
| - nIndex = m_pEdtEngine->GetCaretPos(); |
| - m_pEdtEngine->ClearSelection(); |
| + m_EdtEngine.SetCaretPos(nIndex, bBefore); |
| + nIndex = m_EdtEngine.GetCaretPos(); |
| + m_EdtEngine.ClearSelection(); |
| if (nIndex != m_nSelStart) { |
| - int32_t nLen = m_pEdtEngine->GetTextLength(); |
| + int32_t nLen = m_EdtEngine.GetTextLength(); |
| if (m_nSelStart >= nLen) |
| m_nSelStart = nLen; |
| - m_pEdtEngine->AddSelRange(std::min(m_nSelStart, nIndex), |
| - FXSYS_abs(nIndex - m_nSelStart)); |
| + m_EdtEngine.AddSelRange(std::min(m_nSelStart, nIndex), |
| + FXSYS_abs(nIndex - m_nSelStart)); |
| } |
| } |
| void IFWL_Edit::OnKeyDown(CFWL_MsgKey* pMsg) { |
| - if (!m_pEdtEngine) |
| - return; |
| - |
| FDE_TXTEDTMOVECARET MoveCaret = MC_MoveNone; |
| bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift); |
| bool bCtrl = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl); |
| @@ -1831,11 +1586,11 @@ void IFWL_Edit::OnKeyDown(CFWL_MsgKey* pMsg) { |
| (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)) { |
| break; |
| } |
| - int32_t nCaret = m_pEdtEngine->GetCaretPos(); |
| + int32_t nCaret = m_EdtEngine.GetCaretPos(); |
| #if (_FX_OS_ == _FX_MACOSX_) |
| - m_pEdtEngine->Delete(nCaret, true); |
| + m_EdtEngine.Delete(nCaret, true); |
| #else |
| - m_pEdtEngine->Delete(nCaret); |
| + m_EdtEngine.Delete(nCaret); |
| #endif |
| break; |
| } |
| @@ -1845,29 +1600,11 @@ void IFWL_Edit::OnKeyDown(CFWL_MsgKey* pMsg) { |
| DispatchKeyEvent(pMsg); |
| break; |
| } |
| - default: { |
| -#if (_FX_OS_ == _FX_MACOSX_) |
| - if (pMsg->m_dwFlags & FWL_KEYFLAG_Command) { |
| -#else |
| - if (pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl) { |
| -#endif |
| - if (dwKeyCode == 0x43 || dwKeyCode == 0x63) { |
| - DoClipboard(1); |
| - return; |
| - } |
| - if (dwKeyCode == 0x58 || dwKeyCode == 0x78) { |
| - DoClipboard(2); |
| - return; |
| - } |
| - if (dwKeyCode == 0x56 || dwKeyCode == 0x76) { |
| - DoClipboard(3); |
| - return; |
| - } |
| - } |
| - } |
| + default: |
| + break; |
| } |
| if (MoveCaret != MC_MoveNone) |
| - m_pEdtEngine->MoveCaretPos(MoveCaret, bShift, bCtrl); |
| + m_EdtEngine.MoveCaretPos(MoveCaret, bShift, bCtrl); |
| } |
| void IFWL_Edit::OnChar(CFWL_MsgKey* pMsg) { |
| @@ -1875,27 +1612,25 @@ void IFWL_Edit::OnChar(CFWL_MsgKey* pMsg) { |
| (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)) { |
| return; |
| } |
| - if (!m_pEdtEngine) |
| - return; |
| int32_t iError = 0; |
| FX_WCHAR c = (FX_WCHAR)pMsg->m_dwKeyCode; |
| - int32_t nCaret = m_pEdtEngine->GetCaretPos(); |
| + int32_t nCaret = m_EdtEngine.GetCaretPos(); |
| switch (c) { |
| case FWL_VKEY_Back: |
| - m_pEdtEngine->Delete(nCaret, true); |
| + m_EdtEngine.Delete(nCaret, true); |
| break; |
| case 0x0A: |
| break; |
| case FWL_VKEY_Escape: |
| break; |
| case FWL_VKEY_Tab: { |
| - iError = m_pEdtEngine->Insert(nCaret, L"\t", 1); |
| + iError = m_EdtEngine.Insert(nCaret, L"\t", 1); |
| break; |
| } |
| case FWL_VKEY_Return: { |
| if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_WantReturn) { |
| - iError = m_pEdtEngine->Insert(nCaret, L"\n", 1); |
| + iError = m_EdtEngine.Insert(nCaret, L"\n", 1); |
| } |
| break; |
| } |
| @@ -1919,7 +1654,7 @@ void IFWL_Edit::OnChar(CFWL_MsgKey* pMsg) { |
| { |
| break; |
| } |
| - iError = m_pEdtEngine->Insert(nCaret, &c, 1); |
| + iError = m_EdtEngine.Insert(nCaret, &c, 1); |
| break; |
| } |
| } |
| @@ -1982,9 +1717,8 @@ bool IFWL_Edit::OnScroll(IFWL_ScrollBar* pScrollBar, |
| pScrollBar->SetPos(fPos); |
| pScrollBar->SetTrackPos(fPos); |
| UpdateOffset(pScrollBar, fPos - iCurPos); |
| - if (m_pEdtEngine) { |
| - UpdateCaret(); |
| - } |
| + UpdateCaret(); |
| + |
| CFX_RectF rect; |
| GetWidgetRect(rect); |
| CFX_RectF rtInvalidate; |