summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xfa/fde/cfde_txtedtdorecord_deleterange.cpp4
-rw-r--r--xfa/fde/cfde_txtedtdorecord_insert.cpp4
-rw-r--r--xfa/fde/cfde_txtedtengine.cpp131
-rw-r--r--xfa/fde/cfde_txtedtengine.h8
-rw-r--r--xfa/fwl/core/cfwl_combobox.cpp10
-rw-r--r--xfa/fwl/core/cfwl_combobox.h22
-rw-r--r--xfa/fwl/core/cfwl_datetimepicker.cpp5
-rw-r--r--xfa/fwl/core/cfwl_datetimepicker.h17
-rw-r--r--xfa/fwl/core/cfwl_edit.cpp89
-rw-r--r--xfa/fwl/core/cfwl_edit.h44
-rw-r--r--xfa/fwl/core/cfwl_form.cpp4
-rw-r--r--xfa/fwl/core/cfwl_listbox.cpp39
-rw-r--r--xfa/fwl/core/cfwl_listbox.h19
-rw-r--r--xfa/fwl/core/cfwl_message.cpp1
-rw-r--r--xfa/fwl/core/cfwl_message.h1
-rw-r--r--xfa/fwl/core/cfwl_monthcalendar.cpp63
-rw-r--r--xfa/fwl/core/cfwl_monthcalendar.h4
-rw-r--r--xfa/fwl/core/cfwl_notedriver.cpp17
-rw-r--r--xfa/fwl/core/cfwl_notedriver.h2
-rw-r--r--xfa/fwl/core/cfwl_scrollbar.cpp40
-rw-r--r--xfa/fwl/core/cfwl_scrollbar.h14
-rw-r--r--xfa/fwl/core/cfwl_spinbutton.cpp45
-rw-r--r--xfa/fwl/core/cfwl_spinbutton.h5
-rw-r--r--xfa/fwl/core/cfwl_widget.cpp13
-rw-r--r--xfa/fwl/core/cfwl_widget.h17
-rw-r--r--xfa/fwl/core/cfwl_widgetmgr.cpp52
-rw-r--r--xfa/fwl/core/cfwl_widgetmgr.h8
-rw-r--r--xfa/fwl/core/ifwl_widgetdelegate.h2
-rw-r--r--xfa/fxfa/app/xfa_fftextedit.cpp4
29 files changed, 290 insertions, 394 deletions
diff --git a/xfa/fde/cfde_txtedtdorecord_deleterange.cpp b/xfa/fde/cfde_txtedtdorecord_deleterange.cpp
index 12ab203539..d1682ddccd 100644
--- a/xfa/fde/cfde_txtedtdorecord_deleterange.cpp
+++ b/xfa/fde/cfde_txtedtdorecord_deleterange.cpp
@@ -36,7 +36,7 @@ bool CFDE_TxtEdtDoRecord_DeleteRange::Undo() const {
FDE_TXTEDTPARAMS& Param = m_pEngine->m_Param;
m_pEngine->m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Insert;
m_pEngine->m_ChangeInfo.wsDelete = m_wsRange;
- Param.pEventSink->On_TextChanged(m_pEngine, m_pEngine->m_ChangeInfo);
+ Param.pEventSink->OnTextChanged(m_pEngine->m_ChangeInfo);
m_pEngine->SetCaretPos(m_nCaret, true);
return true;
}
@@ -49,7 +49,7 @@ bool CFDE_TxtEdtDoRecord_DeleteRange::Redo() const {
FDE_TXTEDTPARAMS& Param = m_pEngine->m_Param;
m_pEngine->m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Insert;
m_pEngine->m_ChangeInfo.wsDelete = m_wsRange;
- Param.pEventSink->On_TextChanged(m_pEngine, m_pEngine->m_ChangeInfo);
+ Param.pEventSink->OnTextChanged(m_pEngine->m_ChangeInfo);
m_pEngine->SetCaretPos(m_nIndex, true);
return true;
}
diff --git a/xfa/fde/cfde_txtedtdorecord_insert.cpp b/xfa/fde/cfde_txtedtdorecord_insert.cpp
index 3ea9269cb9..e659f020ca 100644
--- a/xfa/fde/cfde_txtedtdorecord_insert.cpp
+++ b/xfa/fde/cfde_txtedtdorecord_insert.cpp
@@ -31,7 +31,7 @@ bool CFDE_TxtEdtDoRecord_Insert::Undo() const {
FDE_TXTEDTPARAMS& Param = m_pEngine->m_Param;
m_pEngine->m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Delete;
m_pEngine->m_ChangeInfo.wsDelete = m_wsInsert;
- Param.pEventSink->On_TextChanged(m_pEngine, m_pEngine->m_ChangeInfo);
+ Param.pEventSink->OnTextChanged(m_pEngine->m_ChangeInfo);
m_pEngine->SetCaretPos(m_nCaret, true);
return true;
}
@@ -41,7 +41,7 @@ bool CFDE_TxtEdtDoRecord_Insert::Redo() const {
FDE_TXTEDTPARAMS& Param = m_pEngine->m_Param;
m_pEngine->m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Insert;
m_pEngine->m_ChangeInfo.wsDelete = m_wsInsert;
- Param.pEventSink->On_TextChanged(m_pEngine, m_pEngine->m_ChangeInfo);
+ Param.pEventSink->OnTextChanged(m_pEngine->m_ChangeInfo);
m_pEngine->SetCaretPos(m_nCaret, false);
return true;
}
diff --git a/xfa/fde/cfde_txtedtengine.cpp b/xfa/fde/cfde_txtedtengine.cpp
index d9e321f382..6e113e1738 100644
--- a/xfa/fde/cfde_txtedtengine.cpp
+++ b/xfa/fde/cfde_txtedtengine.cpp
@@ -8,6 +8,7 @@
#include <algorithm>
+#include "third_party/base/ptr_util.h"
#include "xfa/fde/cfde_txtedtbuf.h"
#include "xfa/fde/cfde_txtedtbufiter.h"
#include "xfa/fde/cfde_txtedtdorecord_deleterange.h"
@@ -207,7 +208,7 @@ int32_t CFDE_TxtEdtEngine::SetCaretPos(int32_t nIndex, bool bBefore) {
m_fCaretPosReserve = (m_Param.dwLayoutStyles & FDE_TEXTEDITLAYOUT_DocVertical)
? m_rtCaret.top
: m_rtCaret.left;
- m_Param.pEventSink->On_CaretChanged(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnCaretChanged();
m_nAnchorPos = -1;
return m_nCaret;
}
@@ -323,11 +324,11 @@ int32_t CFDE_TxtEdtEngine::MoveCaretPos(FDE_TXTEDTMOVECARET eMoveCaret,
if (bShift && m_nAnchorPos != -1 && (m_nAnchorPos != m_nCaret)) {
AddSelRange(std::min(m_nAnchorPos, m_nCaret),
FXSYS_abs(m_nAnchorPos - m_nCaret));
- m_Param.pEventSink->On_SelChanged(this);
- }
- if (bSelChange) {
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnSelChanged();
}
+ if (bSelChange)
+ m_Param.pEventSink->OnSelChanged();
+
return m_nCaret;
}
@@ -406,19 +407,18 @@ int32_t CFDE_TxtEdtEngine::Insert(int32_t nStart,
}
if (m_Param.dwMode & FDE_TEXTEDITMODE_Validate) {
CFX_WideString wsText = GetPreInsertText(m_nCaret, lpBuffer, nLength);
- if (!m_Param.pEventSink->On_Validate(this, wsText)) {
+ if (!m_Param.pEventSink->OnValidate(wsText))
return FDE_TXTEDT_MODIFY_RET_F_Invalidate;
- }
}
if (IsSelect()) {
DeleteSelect();
}
if (!(m_Param.dwMode & FDE_TEXTEDITMODE_NoRedoUndo))
- m_Param.pEventSink->On_AddDoRecord(
- this,
- new CFDE_TxtEdtDoRecord_Insert(this, m_nCaret, lpBuffer, nLength));
+ m_Param.pEventSink->OnAddDoRecord(
+ pdfium::MakeUnique<CFDE_TxtEdtDoRecord_Insert>(this, m_nCaret, lpBuffer,
+ nLength));
- m_ChangeInfo.wsPrevText = GetText(0);
+ m_ChangeInfo.wsPrevText = GetText(0, -1);
Inner_Insert(m_nCaret, lpBuffer, nLength);
m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Insert;
m_ChangeInfo.wsInsert = CFX_WideString(lpBuffer, nLength);
@@ -431,7 +431,7 @@ int32_t CFDE_TxtEdtEngine::Insert(int32_t nStart,
bBefore = false;
}
SetCaretPos(nStart, bBefore);
- m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
+ m_Param.pEventSink->OnTextChanged(m_ChangeInfo);
return bPart ? FDE_TXTEDT_MODIFY_RET_S_Part : FDE_TXTEDT_MODIFY_RET_S_Normal;
}
@@ -467,43 +467,38 @@ int32_t CFDE_TxtEdtEngine::Delete(int32_t nStart, bool bBackspace) {
}
if (m_Param.dwMode & FDE_TEXTEDITMODE_Validate) {
CFX_WideString wsText = GetPreDeleteText(nStart, nCount);
- if (!m_Param.pEventSink->On_Validate(this, wsText)) {
+ if (!m_Param.pEventSink->OnValidate(wsText))
return FDE_TXTEDT_MODIFY_RET_F_Invalidate;
- }
}
if (!(m_Param.dwMode & FDE_TEXTEDITMODE_NoRedoUndo)) {
CFX_WideString wsRange = m_pTxtBuf->GetRange(nStart, nCount);
- m_Param.pEventSink->On_AddDoRecord(
- this,
- new CFDE_TxtEdtDoRecord_DeleteRange(this, nStart, m_nCaret, wsRange));
+ m_Param.pEventSink->OnAddDoRecord(
+ pdfium::MakeUnique<CFDE_TxtEdtDoRecord_DeleteRange>(this, nStart,
+ m_nCaret, wsRange));
}
m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Delete;
m_ChangeInfo.wsDelete = GetText(nStart, nCount);
Inner_DeleteRange(nStart, nCount);
SetCaretPos(nStart + ((!bBackspace && nStart > 0) ? -1 : 0),
(bBackspace || nStart == 0));
- m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
+ m_Param.pEventSink->OnTextChanged(m_ChangeInfo);
return FDE_TXTEDT_MODIFY_RET_S_Normal;
}
int32_t CFDE_TxtEdtEngine::DeleteRange(int32_t nStart, int32_t nCount) {
- if (IsLocked()) {
+ if (IsLocked())
return FDE_TXTEDT_MODIFY_RET_F_Locked;
- }
- if (nCount == -1) {
+ if (nCount == -1)
nCount = GetTextBufLength();
- }
- if (nCount == 0) {
+ if (nCount == 0)
return FDE_TXTEDT_MODIFY_RET_S_Normal;
- }
if (m_Param.dwMode & FDE_TEXTEDITMODE_Validate) {
CFX_WideString wsText = GetPreDeleteText(nStart, nCount);
- if (!m_Param.pEventSink->On_Validate(this, wsText)) {
+ if (!m_Param.pEventSink->OnValidate(wsText))
return FDE_TXTEDT_MODIFY_RET_F_Invalidate;
- }
}
DeleteRange_DoRecord(nStart, nCount);
- m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
+ m_Param.pEventSink->OnTextChanged(m_ChangeInfo);
SetCaretPos(nStart, true);
return FDE_TXTEDT_MODIFY_RET_S_Normal;
}
@@ -511,31 +506,28 @@ int32_t CFDE_TxtEdtEngine::DeleteRange(int32_t nStart, int32_t nCount) {
int32_t CFDE_TxtEdtEngine::Replace(int32_t nStart,
int32_t nLength,
const CFX_WideString& wsReplace) {
- if (IsLocked()) {
+ if (IsLocked())
return FDE_TXTEDT_MODIFY_RET_F_Locked;
- }
- if (nStart < 0 || (nStart + nLength > GetTextBufLength())) {
+ if (nStart < 0 || (nStart + nLength > GetTextBufLength()))
return FDE_TXTEDT_MODIFY_RET_F_Boundary;
- }
if (m_Param.dwMode & FDE_TEXTEDITMODE_Validate) {
CFX_WideString wsText = GetPreReplaceText(
nStart, nLength, wsReplace.c_str(), wsReplace.GetLength());
- if (!m_Param.pEventSink->On_Validate(this, wsText)) {
+ if (!m_Param.pEventSink->OnValidate(wsText))
return FDE_TXTEDT_MODIFY_RET_F_Invalidate;
- }
}
- if (IsSelect()) {
+ if (IsSelect())
ClearSelection();
- }
+
m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Replace;
m_ChangeInfo.wsDelete = GetText(nStart, nLength);
- if (nLength > 0) {
+ if (nLength > 0)
Inner_DeleteRange(nStart, nLength);
- }
+
int32_t nTextLength = wsReplace.GetLength();
- if (nTextLength > 0) {
+ if (nTextLength > 0)
Inner_Insert(nStart, wsReplace.c_str(), nTextLength);
- }
+
m_ChangeInfo.wsInsert = CFX_WideString(wsReplace.c_str(), nTextLength);
nStart += nTextLength;
FX_WCHAR wChar = m_pTxtBuf->GetCharByIndex(nStart - 1);
@@ -545,9 +537,9 @@ int32_t CFDE_TxtEdtEngine::Replace(int32_t nStart,
bBefore = false;
}
SetCaretPos(nStart, bBefore);
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
- m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
+ m_Param.pEventSink->OnTextChanged(m_ChangeInfo);
return FDE_TXTEDT_MODIFY_RET_S_Normal;
}
@@ -583,7 +575,7 @@ void CFDE_TxtEdtEngine::AddSelRange(int32_t nStart, int32_t nCount) {
lpSelRange->nStart = nStart;
lpSelRange->nCount = nCount;
m_SelRangePtrArr.Add(lpSelRange);
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnSelChanged();
return;
}
FDE_TXTEDTSELRANGE* lpTemp = nullptr;
@@ -593,7 +585,7 @@ void CFDE_TxtEdtEngine::AddSelRange(int32_t nStart, int32_t nCount) {
lpSelRange->nStart = nStart;
lpSelRange->nCount = nCount;
m_SelRangePtrArr.Add(lpSelRange);
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnSelChanged();
return;
}
int32_t nEnd = nStart + nCount - 1;
@@ -639,15 +631,16 @@ void CFDE_TxtEdtEngine::AddSelRange(int32_t nStart, int32_t nCount) {
m_SelRangePtrArr.RemoveAt(nRangeBgn);
}
}
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnSelChanged();
}
int32_t CFDE_TxtEdtEngine::CountSelRanges() const {
return m_SelRangePtrArr.GetSize();
}
-int32_t CFDE_TxtEdtEngine::GetSelRange(int32_t nIndex, int32_t& nStart) const {
- nStart = m_SelRangePtrArr[nIndex]->nStart;
+int32_t CFDE_TxtEdtEngine::GetSelRange(int32_t nIndex, int32_t* nStart) const {
+ if (nStart)
+ *nStart = m_SelRangePtrArr[nIndex]->nStart;
return m_SelRangePtrArr[nIndex]->nCount;
}
@@ -657,7 +650,7 @@ void CFDE_TxtEdtEngine::ClearSelection() {
delete m_SelRangePtrArr[i];
m_SelRangePtrArr.RemoveAll();
if (nCount && m_Param.pEventSink)
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnSelChanged();
}
bool CFDE_TxtEdtEngine::Redo(const IFDE_TxtEdtDoRecord* pDoRecord) {
@@ -787,7 +780,7 @@ CFX_WideString CFDE_TxtEdtEngine::GetPreInsertText(int32_t nIndex,
int32_t nSelLength = 0;
int32_t nSelCount = CountSelRanges();
while (nSelCount--) {
- nSelLength = GetSelRange(nSelCount, nSelIndex);
+ nSelLength = GetSelRange(nSelCount, &nSelIndex);
wsText.Delete(nSelIndex, nSelLength);
nIndex = nSelIndex;
}
@@ -813,7 +806,7 @@ CFX_WideString CFDE_TxtEdtEngine::GetPreReplaceText(int32_t nIndex,
int32_t nSelLength = 0;
int32_t nSelCount = CountSelRanges();
while (nSelCount--) {
- nSelLength = GetSelRange(nSelCount, nSelIndex);
+ nSelLength = GetSelRange(nSelCount, &nSelIndex);
wsText.Delete(nSelIndex, nSelLength);
}
wsText.Delete(nIndex, nOriginLength);
@@ -830,7 +823,7 @@ void CFDE_TxtEdtEngine::Inner_Insert(int32_t nStart,
ASSERT(nLength > 0);
FDE_TXTEDTPARAGPOS ParagPos;
TextPos2ParagPos(nStart, ParagPos);
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
int32_t nParagCount = m_ParagPtrArray.GetSize();
int32_t i = 0;
for (i = ParagPos.nParagIndex + 1; i < nParagCount; i++)
@@ -884,7 +877,7 @@ void CFDE_TxtEdtEngine::Inner_Insert(int32_t nStart,
nTotalLineCount += pParag->GetLineCount();
}
m_nLineCount += nTotalLineCount - nReserveLineCount;
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
UpdatePages();
}
@@ -894,7 +887,7 @@ void CFDE_TxtEdtEngine::Inner_DeleteRange(int32_t nStart, int32_t nCount) {
}
int32_t nEnd = nStart + nCount - 1;
ASSERT(nStart >= 0 && nEnd < m_pTxtBuf->GetTextLength());
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
FDE_TXTEDTPARAGPOS ParagPosBgn, ParagPosEnd;
TextPos2ParagPos(nStart, ParagPosBgn);
TextPos2ParagPos(nEnd, ParagPosEnd);
@@ -940,7 +933,7 @@ void CFDE_TxtEdtEngine::Inner_DeleteRange(int32_t nStart, int32_t nCount) {
if (m_nCaretPage >= nPageCount) {
m_nCaretPage = nPageCount - 1;
}
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
}
void CFDE_TxtEdtEngine::DeleteRange_DoRecord(int32_t nStart,
@@ -954,9 +947,9 @@ void CFDE_TxtEdtEngine::DeleteRange_DoRecord(int32_t nStart,
if (!(m_Param.dwMode & FDE_TEXTEDITMODE_NoRedoUndo)) {
CFX_WideString wsRange = m_pTxtBuf->GetRange(nStart, nCount);
- m_Param.pEventSink->On_AddDoRecord(
- this, new CFDE_TxtEdtDoRecord_DeleteRange(this, nStart, m_nCaret,
- wsRange, bSel));
+ m_Param.pEventSink->OnAddDoRecord(
+ pdfium::MakeUnique<CFDE_TxtEdtDoRecord_DeleteRange>(
+ this, nStart, m_nCaret, wsRange, bSel));
}
m_ChangeInfo.nChangeType = FDE_TXTEDT_TEXTCHANGE_TYPE_Delete;
m_ChangeInfo.wsDelete = GetText(nStart, nCount);
@@ -1235,14 +1228,14 @@ int32_t CFDE_TxtEdtEngine::MovePage2Char(int32_t nIndex) {
ASSERT(nIndex <= m_pTxtBuf->GetTextLength());
if (m_nCaretPage >= 0) {
IFDE_TxtEdtPage* pPage = m_PagePtrArray[m_nCaretPage];
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
int32_t nPageCharStart = pPage->GetCharStart();
int32_t nPageCharCount = pPage->GetCharCount();
if (nIndex >= nPageCharStart && nIndex < nPageCharStart + nPageCharCount) {
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
return m_nCaretPage;
}
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
}
CFDE_TxtEdtParag* pParag = nullptr;
int32_t nLineCount = 0;
@@ -1552,7 +1545,7 @@ void CFDE_TxtEdtEngine::UpdateCaretRect(int32_t nIndex, bool bBefore) {
m_fCaretPosReserve = (m_Param.dwLayoutStyles & FDE_TEXTEDITLAYOUT_DocVertical)
? m_rtCaret.top
: m_rtCaret.left;
- m_Param.pEventSink->On_CaretChanged(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnCaretChanged();
}
void CFDE_TxtEdtEngine::GetCaretRect(CFX_RectF& rtCaret,
@@ -1560,7 +1553,7 @@ void CFDE_TxtEdtEngine::GetCaretRect(CFX_RectF& rtCaret,
int32_t nCaret,
bool bBefore) {
IFDE_TxtEdtPage* pPage = m_PagePtrArray[m_nCaretPage];
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
bool bCombText = !!(m_Param.dwLayoutStyles & FDE_TEXTEDITLAYOUT_CombText);
int32_t nIndexInpage = nCaret - pPage->GetCharStart();
if (bBefore && bCombText && nIndexInpage > 0) {
@@ -1587,20 +1580,20 @@ void CFDE_TxtEdtEngine::GetCaretRect(CFX_RectF& rtCaret,
rtCaret.width = 1.0f;
}
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
}
void CFDE_TxtEdtEngine::UpdateCaretIndex(const CFX_PointF& ptCaret) {
IFDE_TxtEdtPage* pPage = m_PagePtrArray[m_nCaretPage];
- m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnPageLoad(m_nCaretPage);
m_nCaret = pPage->GetCharIndex(ptCaret, m_bBefore);
GetCaretRect(m_rtCaret, m_nCaretPage, m_nCaret, m_bBefore);
if (!m_bBefore) {
m_nCaret++;
m_bBefore = true;
}
- m_Param.pEventSink->On_CaretChanged(this, m_nCaretPage);
- m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
+ m_Param.pEventSink->OnCaretChanged();
+ m_Param.pEventSink->OnPageUnload(m_nCaretPage);
}
bool CFDE_TxtEdtEngine::IsSelect() {
@@ -1612,14 +1605,14 @@ void CFDE_TxtEdtEngine::DeleteSelect() {
if (nCountRange > 0) {
int32_t nSelStart = 0;
while (nCountRange > 0) {
- int32_t nSelCount = GetSelRange(--nCountRange, nSelStart);
+ int32_t nSelCount = GetSelRange(--nCountRange, &nSelStart);
delete m_SelRangePtrArr[nCountRange];
m_SelRangePtrArr.RemoveAt(nCountRange);
DeleteRange_DoRecord(nSelStart, nSelCount, true);
}
ClearSelection();
- m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
- m_Param.pEventSink->On_SelChanged(this);
+ m_Param.pEventSink->OnTextChanged(m_ChangeInfo);
+ m_Param.pEventSink->OnSelChanged();
SetCaretPos(nSelStart, true);
return;
}
diff --git a/xfa/fde/cfde_txtedtengine.h b/xfa/fde/cfde_txtedtengine.h
index a01f7565fc..755a820fd2 100644
--- a/xfa/fde/cfde_txtedtengine.h
+++ b/xfa/fde/cfde_txtedtengine.h
@@ -32,7 +32,7 @@ class CFDE_TxtEdtEngine {
void SetTextByStream(const CFX_RetainPtr<IFGAS_Stream>& pStream);
void SetText(const CFX_WideString& wsText);
int32_t GetTextLength() const;
- CFX_WideString GetText(int32_t nStart, int32_t nCount = -1) const;
+ CFX_WideString GetText(int32_t nStart, int32_t nCount) const;
void ClearText();
int32_t GetCaretRect(CFX_RectF& rtCaret) const;
@@ -55,11 +55,11 @@ class CFDE_TxtEdtEngine {
void SetLimit(int32_t nLimit);
void SetAliasChar(FX_WCHAR wcAlias);
- void RemoveSelRange(int32_t nStart, int32_t nCount = -1);
+ void RemoveSelRange(int32_t nStart, int32_t nCount);
- void AddSelRange(int32_t nStart, int32_t nCount = -1);
+ void AddSelRange(int32_t nStart, int32_t nCount);
int32_t CountSelRanges() const;
- int32_t GetSelRange(int32_t nIndex, int32_t& nStart) const;
+ int32_t GetSelRange(int32_t nIndex, int32_t* nStart) const;
void ClearSelection();
bool Redo(const IFDE_TxtEdtDoRecord* pRecord);
diff --git a/xfa/fwl/core/cfwl_combobox.cpp b/xfa/fwl/core/cfwl_combobox.cpp
index 70f863504d..2d59b7d5ec 100644
--- a/xfa/fwl/core/cfwl_combobox.cpp
+++ b/xfa/fwl/core/cfwl_combobox.cpp
@@ -300,11 +300,9 @@ void CFWL_ComboBox::SetEditText(const CFX_WideString& wsText) {
m_pEdit->Update();
}
-CFX_WideString CFWL_ComboBox::GetEditText(int32_t nStart,
- int32_t nCount) const {
- if (m_pEdit) {
- return m_pEdit->GetText(nStart, nCount);
- }
+CFX_WideString CFWL_ComboBox::GetEditText() const {
+ if (m_pEdit)
+ return m_pEdit->GetText();
if (!m_pListBox)
return L"";
@@ -624,7 +622,7 @@ void CFWL_ComboBox::DisForm_ShowDropList(bool bActivate) {
pComboList->ChangeSelected(m_iCurSel);
FX_FLOAT fItemHeight = pComboList->CalcItemHeight();
- FX_FLOAT fBorder = GetBorderSize();
+ FX_FLOAT fBorder = GetBorderSize(true);
FX_FLOAT fPopupMin = 0.0f;
if (iItems > 3)
fPopupMin = fItemHeight * 3 + fBorder * 2;
diff --git a/xfa/fwl/core/cfwl_combobox.h b/xfa/fwl/core/cfwl_combobox.h
index dda83486a6..812a6d0a29 100644
--- a/xfa/fwl/core/cfwl_combobox.h
+++ b/xfa/fwl/core/cfwl_combobox.h
@@ -77,7 +77,7 @@ class CFWL_ComboBox : public CFWL_Widget {
void RemoveAll();
void SetEditText(const CFX_WideString& wsText);
- CFX_WideString GetEditText(int32_t nStart = 0, int32_t nCount = -1) const;
+ CFX_WideString GetEditText() const;
void OpenDropDownList(bool bActivate);
@@ -127,6 +127,14 @@ class CFWL_ComboBox : public CFWL_Widget {
void ResetEditAlignment();
void ResetListItemAlignment();
void InitProxyForm();
+ void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
+ void OnLButtonDown(CFWL_MsgMouse* pMsg);
+ void OnLButtonUp(CFWL_MsgMouse* pMsg);
+ void OnMouseMove(CFWL_MsgMouse* pMsg);
+ void OnMouseLeave(CFWL_MsgMouse* pMsg);
+ void OnKey(CFWL_MsgKey* pMsg);
+ void DoSubCtrlKey(CFWL_MsgKey* pMsg);
+
void DisForm_InitComboList();
void DisForm_InitComboEdit();
void DisForm_ShowDropList(bool bActivate);
@@ -137,20 +145,12 @@ class CFWL_ComboBox : public CFWL_Widget {
uint32_t dwStylesExRemoved);
void DisForm_Update();
FWL_WidgetHit DisForm_HitTest(FX_FLOAT fx, FX_FLOAT fy);
- void DisForm_DrawWidget(CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix = nullptr);
+ void DisForm_DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix);
void DisForm_GetBBox(CFX_RectF& rect) const;
void DisForm_Layout();
- void OnFocusChanged(CFWL_Message* pMsg, bool bSet = true);
- void OnLButtonDown(CFWL_MsgMouse* pMsg);
- void OnLButtonUp(CFWL_MsgMouse* pMsg);
- void OnMouseMove(CFWL_MsgMouse* pMsg);
- void OnMouseLeave(CFWL_MsgMouse* pMsg);
- void OnKey(CFWL_MsgKey* pMsg);
- void DoSubCtrlKey(CFWL_MsgKey* pMsg);
void DisForm_OnProcessMessage(CFWL_Message* pMessage);
void DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg);
- void DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet = true);
+ void DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet);
void DisForm_OnKey(CFWL_MsgKey* pMsg);
CFX_RectF m_rtClient;
diff --git a/xfa/fwl/core/cfwl_datetimepicker.cpp b/xfa/fwl/core/cfwl_datetimepicker.cpp
index 29aaaf0a2e..5207c9a492 100644
--- a/xfa/fwl/core/cfwl_datetimepicker.cpp
+++ b/xfa/fwl/core/cfwl_datetimepicker.cpp
@@ -196,9 +196,8 @@ void CFWL_DateTimePicker::SetEditText(const CFX_WideString& wsText) {
DispatchEvent(&ev);
}
-CFX_WideString CFWL_DateTimePicker::GetEditText(int32_t nStart,
- int32_t nCount) const {
- return m_pEdit ? m_pEdit->GetText(nStart, nCount) : L"";
+CFX_WideString CFWL_DateTimePicker::GetEditText() const {
+ return m_pEdit ? m_pEdit->GetText() : L"";
}
void CFWL_DateTimePicker::GetBBox(CFX_RectF& rect) const {
diff --git a/xfa/fwl/core/cfwl_datetimepicker.h b/xfa/fwl/core/cfwl_datetimepicker.h
index 985627441d..d6d47ebb2f 100644
--- a/xfa/fwl/core/cfwl_datetimepicker.h
+++ b/xfa/fwl/core/cfwl_datetimepicker.h
@@ -55,10 +55,10 @@ class CFWL_DateTimePicker : public CFWL_Widget {
void SetCurSel(int32_t iYear, int32_t iMonth, int32_t iDay);
void SetEditText(const CFX_WideString& wsText);
- CFX_WideString GetEditText(int32_t nStart = 0, int32_t nCount = -1) const;
+ CFX_WideString GetEditText() const;
int32_t CountSelRanges() const { return m_pEdit->CountSelRanges(); }
- int32_t GetSelRange(int32_t nIndex, int32_t& nStart) const {
+ int32_t GetSelRange(int32_t nIndex, int32_t* nStart) const {
return m_pEdit->GetSelRange(nIndex, nStart);
}
@@ -82,6 +82,11 @@ class CFWL_DateTimePicker : public CFWL_Widget {
CFX_WideString& wsText);
void ResetEditAlignment();
void InitProxyForm();
+ void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
+ void OnLButtonDown(CFWL_MsgMouse* pMsg);
+ void OnLButtonUp(CFWL_MsgMouse* pMsg);
+ void OnMouseMove(CFWL_MsgMouse* pMsg);
+ void OnMouseLeave(CFWL_MsgMouse* pMsg);
bool DisForm_IsMonthCalendarVisible() const;
void DisForm_ShowMonthCalendar(bool bActivate);
@@ -90,14 +95,8 @@ class CFWL_DateTimePicker : public CFWL_Widget {
void DisForm_Update();
void DisForm_GetWidgetRect(CFX_RectF& rect, bool bAutoSize);
void DisForm_GetBBox(CFX_RectF& rect) const;
- void DisForm_DrawWidget(CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix = nullptr);
+ void DisForm_DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix);
void DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet);
- void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
- void OnLButtonDown(CFWL_MsgMouse* pMsg);
- void OnLButtonUp(CFWL_MsgMouse* pMsg);
- void OnMouseMove(CFWL_MsgMouse* pMsg);
- void OnMouseLeave(CFWL_MsgMouse* pMsg);
CFX_RectF m_rtBtn;
CFX_RectF m_rtClient;
diff --git a/xfa/fwl/core/cfwl_edit.cpp b/xfa/fwl/core/cfwl_edit.cpp
index a2fee2a4e1..c5c69a3a94 100644
--- a/xfa/fwl/core/cfwl_edit.cpp
+++ b/xfa/fwl/core/cfwl_edit.cpp
@@ -113,7 +113,7 @@ void CFWL_Edit::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
int32_t iTextLen = m_EdtEngine.GetTextLength();
if (iTextLen > 0) {
- CFX_WideString wsText = m_EdtEngine.GetText(0);
+ CFX_WideString wsText = m_EdtEngine.GetText(0, -1);
CFX_SizeF sz = CalcTextSize(
wsText, m_pProperties->m_pThemeProvider,
!!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine));
@@ -297,23 +297,23 @@ int32_t CFWL_Edit::GetTextLength() const {
return m_EdtEngine.GetTextLength();
}
-CFX_WideString CFWL_Edit::GetText(int32_t nStart, int32_t nCount) const {
- return m_EdtEngine.GetText(nStart, nCount);
+CFX_WideString CFWL_Edit::GetText() const {
+ return m_EdtEngine.GetText(0, -1);
}
void CFWL_Edit::ClearText() {
m_EdtEngine.ClearText();
}
-void CFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) {
- m_EdtEngine.AddSelRange(nStart, nCount);
+void CFWL_Edit::AddSelRange(int32_t nStart) {
+ m_EdtEngine.AddSelRange(nStart, -1);
}
int32_t CFWL_Edit::CountSelRanges() const {
return m_EdtEngine.CountSelRanges();
}
-int32_t CFWL_Edit::GetSelRange(int32_t nIndex, int32_t& nStart) const {
+int32_t CFWL_Edit::GetSelRange(int32_t nIndex, int32_t* nStart) const {
return m_EdtEngine.GetSelRange(nIndex, nStart);
}
@@ -340,13 +340,11 @@ bool CFWL_Edit::Copy(CFX_WideString& wsCopy) {
return false;
wsCopy.clear();
- CFX_WideString wsTemp;
- int32_t nStart, nLength;
+ int32_t nStart;
+ int32_t nLength;
for (int32_t i = 0; i < nCount; i++) {
- nLength = m_EdtEngine.GetSelRange(i, nStart);
- wsTemp = m_EdtEngine.GetText(nStart, nLength);
- wsCopy += wsTemp;
- wsTemp.clear();
+ nLength = m_EdtEngine.GetSelRange(i, &nStart);
+ wsCopy += m_EdtEngine.GetText(nStart, nLength);
}
return true;
}
@@ -360,7 +358,7 @@ bool CFWL_Edit::Cut(CFX_WideString& wsCut) {
CFX_WideString wsTemp;
int32_t nStart, nLength;
for (int32_t i = 0; i < nCount; i++) {
- nLength = m_EdtEngine.GetSelRange(i, nStart);
+ nLength = m_EdtEngine.GetSelRange(i, &nStart);
wsTemp = m_EdtEngine.GetText(nStart, nLength);
wsCut += wsTemp;
wsTemp.clear();
@@ -416,9 +414,7 @@ void CFWL_Edit::SetOuter(CFWL_Widget* pOuter) {
m_pOuter = pOuter;
}
-void CFWL_Edit::On_CaretChanged(CFDE_TxtEdtEngine* pEdit,
- int32_t nPage,
- bool bVisible) {
+void CFWL_Edit::OnCaretChanged() {
if (m_rtEngine.IsEmpty())
return;
if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)
@@ -443,8 +439,7 @@ void CFWL_Edit::On_CaretChanged(CFDE_TxtEdtEngine* pEdit,
}
}
-void CFWL_Edit::On_TextChanged(CFDE_TxtEdtEngine* pEdit,
- FDE_TXTEDT_TEXTCHANGE_INFO& ChangeInfo) {
+void CFWL_Edit::OnTextChanged(const FDE_TXTEDT_TEXTCHANGE_INFO& ChangeInfo) {
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_VAlignMask)
UpdateVAlignment();
@@ -459,15 +454,13 @@ void CFWL_Edit::On_TextChanged(CFDE_TxtEdtEngine* pEdit,
Repaint(&rtTemp);
}
-void CFWL_Edit::On_SelChanged(CFDE_TxtEdtEngine* pEdit) {
+void CFWL_Edit::OnSelChanged() {
CFX_RectF rtTemp;
GetClientRect(rtTemp);
Repaint(&rtTemp);
}
-bool CFWL_Edit::On_PageLoad(CFDE_TxtEdtEngine* pEdit,
- int32_t nPageIndex,
- int32_t nPurpose) {
+bool CFWL_Edit::OnPageLoad(int32_t nPageIndex) {
IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(nPageIndex);
if (!pPage)
return false;
@@ -476,9 +469,7 @@ bool CFWL_Edit::On_PageLoad(CFDE_TxtEdtEngine* pEdit,
return true;
}
-bool CFWL_Edit::On_PageUnload(CFDE_TxtEdtEngine* pEdit,
- int32_t nPageIndex,
- int32_t nPurpose) {
+bool CFWL_Edit::OnPageUnload(int32_t nPageIndex) {
IFDE_TxtEdtPage* pPage = m_EdtEngine.GetPage(nPageIndex);
if (!pPage)
return false;
@@ -487,12 +478,11 @@ bool CFWL_Edit::On_PageUnload(CFDE_TxtEdtEngine* pEdit,
return true;
}
-void CFWL_Edit::On_AddDoRecord(CFDE_TxtEdtEngine* pEdit,
- IFDE_TxtEdtDoRecord* pRecord) {
- AddDoRecord(pRecord);
+void CFWL_Edit::OnAddDoRecord(std::unique_ptr<IFDE_TxtEdtDoRecord> pRecord) {
+ AddDoRecord(std::move(pRecord));
}
-bool CFWL_Edit::On_Validate(CFDE_TxtEdtEngine* pEdit, CFX_WideString& wsText) {
+bool CFWL_Edit::OnValidate(const CFX_WideString& wsText) {
CFWL_Widget* pDst = GetOuter();
if (!pDst)
pDst = this;
@@ -583,7 +573,7 @@ void CFWL_Edit::DrawContent(CFX_Graphics* pGraphics,
CFX_RectFArray rectArr;
int32_t i = 0;
for (i = 0; i < nSelCount; i++) {
- nCharCount = m_EdtEngine.GetSelRange(i, nCharStart);
+ nCharCount = m_EdtEngine.GetSelRange(i, &nCharStart);
int32_t nCharEnd = nCharStart + nCharCount - 1;
if (nCharEnd < nPageCharStart || nCharStart > nPageCharEnd)
continue;
@@ -991,7 +981,7 @@ bool CFWL_Edit::IsContentHeightOverflow() {
return pPage->GetContentsBox().height > m_rtEngine.height + 1.0f;
}
-int32_t CFWL_Edit::AddDoRecord(IFDE_TxtEdtDoRecord* pRecord) {
+int32_t CFWL_Edit::AddDoRecord(std::unique_ptr<IFDE_TxtEdtDoRecord> pRecord) {
int32_t nCount = pdfium::CollectionSize<int32_t>(m_DoRecords);
if (m_iCurRecord == nCount - 1) {
if (nCount == m_iMaxRecord) {
@@ -1003,7 +993,7 @@ int32_t CFWL_Edit::AddDoRecord(IFDE_TxtEdtDoRecord* pRecord) {
m_DoRecords.end());
}
- m_DoRecords.push_back(std::unique_ptr<IFDE_TxtEdtDoRecord>(pRecord));
+ m_DoRecords.push_back(std::move(pRecord));
m_iCurRecord = pdfium::CollectionSize<int32_t>(m_DoRecords) - 1;
return m_iCurRecord;
}
@@ -1039,7 +1029,7 @@ void CFWL_Edit::Layout() {
bool bShowVertScrollbar = IsShowScrollBar(true);
bool bShowHorzScrollbar = IsShowScrollBar(false);
if (bShowVertScrollbar) {
- InitScrollBar();
+ InitVerticalScrollBar();
CFX_RectF rtVertScr;
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
@@ -1061,7 +1051,7 @@ void CFWL_Edit::Layout() {
}
if (bShowHorzScrollbar) {
- InitScrollBar(false);
+ InitHorizontalScrollBar();
CFX_RectF rtHoriScr;
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
@@ -1096,7 +1086,7 @@ void CFWL_Edit::LayoutScrollBar() {
pfWidth = static_cast<FX_FLOAT*>(
GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth));
FX_FLOAT fWidth = pfWidth ? *pfWidth : 0;
- InitScrollBar();
+ InitVerticalScrollBar();
CFX_RectF rtVertScr;
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtVertScr.Set(m_rtClient.right() + kEditMargin, m_rtClient.top, fWidth,
@@ -1123,7 +1113,7 @@ void CFWL_Edit::LayoutScrollBar() {
}
FX_FLOAT fWidth = pfWidth ? *pfWidth : 0;
- InitScrollBar(false);
+ InitHorizontalScrollBar();
CFX_RectF rtHoriScr;
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) {
rtHoriScr.Set(m_rtClient.left, m_rtClient.bottom() + kEditMargin,
@@ -1150,21 +1140,30 @@ void CFWL_Edit::DeviceToEngine(CFX_PointF& pt) {
pt.y += m_fScrollOffsetY - m_rtEngine.top - m_fVAlignOffset;
}
-void CFWL_Edit::InitScrollBar(bool bVert) {
- if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar))
+void CFWL_Edit::InitVerticalScrollBar() {
+ if (m_pVertScrollBar)
return;
auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
prop->m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
prop->m_pParent = this;
prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+ m_pVertScrollBar =
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this);
+}
- CFWL_ScrollBar* sb = new CFWL_ScrollBar(m_pOwnerApp, std::move(prop), this);
- if (bVert)
- m_pVertScrollBar.reset(sb);
- else
- m_pHorzScrollBar.reset(sb);
+void CFWL_Edit::InitHorizontalScrollBar() {
+ if (m_pHorzScrollBar)
+ return;
+
+ auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
+ prop->m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible;
+ prop->m_pParent = this;
+ prop->m_pThemeProvider = m_pProperties->m_pThemeProvider;
+ m_pHorzScrollBar =
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this);
}
void CFWL_Edit::ShowCaret(CFX_RectF* pRect) {
@@ -1232,7 +1231,7 @@ bool CFWL_Edit::ValidateNumberChar(FX_WCHAR cNum) {
if (!m_bSetRange)
return true;
- CFX_WideString wsText = m_EdtEngine.GetText(0);
+ CFX_WideString wsText = m_EdtEngine.GetText(0, -1);
if (wsText.IsEmpty()) {
if (cNum == L'0')
return false;
diff --git a/xfa/fwl/core/cfwl_edit.h b/xfa/fwl/core/cfwl_edit.h
index 0e5f0dcbaf..8143c7d5ed 100644
--- a/xfa/fwl/core/cfwl_edit.h
+++ b/xfa/fwl/core/cfwl_edit.h
@@ -79,12 +79,12 @@ class CFWL_Edit : public CFWL_Widget {
virtual void SetText(const CFX_WideString& wsText);
int32_t GetTextLength() const;
- CFX_WideString GetText(int32_t nStart = 0, int32_t nCount = -1) const;
+ CFX_WideString GetText() const;
void ClearText();
- void AddSelRange(int32_t nStart, int32_t nCount = -1);
+ void AddSelRange(int32_t nStart);
int32_t CountSelRanges() const;
- int32_t GetSelRange(int32_t nIndex, int32_t& nStart) const;
+ int32_t GetSelRange(int32_t nIndex, int32_t* nStart) const;
void ClearSelections();
int32_t GetLimit() const;
void SetLimit(int32_t nLimit);
@@ -101,20 +101,13 @@ class CFWL_Edit : public CFWL_Widget {
void SetOuter(CFWL_Widget* pOuter);
- void On_CaretChanged(CFDE_TxtEdtEngine* pEdit,
- int32_t nPage,
- bool bVisible = true);
- void On_TextChanged(CFDE_TxtEdtEngine* pEdit,
- FDE_TXTEDT_TEXTCHANGE_INFO& ChangeInfo);
- void On_SelChanged(CFDE_TxtEdtEngine* pEdit);
- bool On_PageLoad(CFDE_TxtEdtEngine* pEdit,
- int32_t nPageIndex,
- int32_t nPurpose);
- bool On_PageUnload(CFDE_TxtEdtEngine* pEdit,
- int32_t nPageIndex,
- int32_t nPurpose);
- void On_AddDoRecord(CFDE_TxtEdtEngine* pEdit, IFDE_TxtEdtDoRecord* pRecord);
- bool On_Validate(CFDE_TxtEdtEngine* pEdit, CFX_WideString& wsText);
+ void OnCaretChanged();
+ void OnTextChanged(const FDE_TXTEDT_TEXTCHANGE_INFO& ChangeInfo);
+ void OnSelChanged();
+ bool OnPageLoad(int32_t nPageIndex);
+ bool OnPageUnload(int32_t nPageIndex);
+ void OnAddDoRecord(std::unique_ptr<IFDE_TxtEdtDoRecord> pRecord);
+ bool OnValidate(const CFX_WideString& wsText);
void SetScrollOffset(FX_FLOAT fScrollOffset);
protected:
@@ -126,10 +119,12 @@ class CFWL_Edit : public CFWL_Widget {
private:
void DrawTextBk(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void DrawContent(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
+ void DrawSpellCheck(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix);
+
void UpdateEditEngine();
void UpdateEditParams();
void UpdateEditLayout();
@@ -141,23 +136,22 @@ class CFWL_Edit : public CFWL_Widget {
void Layout();
void LayoutScrollBar();
void DeviceToEngine(CFX_PointF& pt);
- void InitScrollBar(bool bVert = true);
+ void InitVerticalScrollBar();
+ void InitHorizontalScrollBar();
void InitEngine();
- bool ValidateNumberChar(FX_WCHAR cNum);
void InitCaret();
+ bool ValidateNumberChar(FX_WCHAR cNum);
void ClearRecord();
bool IsShowScrollBar(bool bVert);
bool IsContentHeightOverflow();
- int32_t AddDoRecord(IFDE_TxtEdtDoRecord* pRecord);
+ int32_t AddDoRecord(std::unique_ptr<IFDE_TxtEdtDoRecord> pRecord);
void ProcessInsertError(int32_t iError);
-
- void DrawSpellCheck(CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix = nullptr);
void AddSpellCheckObj(CFX_Path& PathData,
int32_t nStart,
int32_t nCount,
FX_FLOAT fOffSetX,
FX_FLOAT fOffSetY);
+
void DoButtonDown(CFWL_MsgMouse* pMsg);
void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
void OnLButtonDown(CFWL_MsgMouse* pMsg);
diff --git a/xfa/fwl/core/cfwl_form.cpp b/xfa/fwl/core/cfwl_form.cpp
index 1fe5e90b87..60f0de3862 100644
--- a/xfa/fwl/core/cfwl_form.cpp
+++ b/xfa/fwl/core/cfwl_form.cpp
@@ -385,7 +385,7 @@ int32_t CFWL_Form::GetSysBtnIndex(CFWL_SysBtn* pBtn) {
void CFWL_Form::GetEdgeRect(CFX_RectF& rtEdge) {
rtEdge = m_rtRelative;
if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border) {
- FX_FLOAT fCX = GetBorderSize();
+ FX_FLOAT fCX = GetBorderSize(true);
FX_FLOAT fCY = GetBorderSize(false);
rtEdge.Deflate(fCX, fCY, fCX, fCY);
}
@@ -549,7 +549,7 @@ void CFWL_Form::OnLButtonUp(CFWL_MsgMouse* pMsg) {
if (m_bMaximized) {
SetWidgetRect(m_rtRestore);
Update();
- Repaint();
+ Repaint(nullptr);
} else {
SetWorkAreaRect();
Update();
diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp
index 7589623e51..48f8c262f5 100644
--- a/xfa/fwl/core/cfwl_listbox.cpp
+++ b/xfa/fwl/core/cfwl_listbox.cpp
@@ -90,7 +90,7 @@ void CFWL_ListBox::Update() {
m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine;
m_fScorllBarWidth = GetScrollWidth();
- CalcSize();
+ CalcSize(false);
}
FWL_WidgetHit CFWL_ListBox::HitTest(FX_FLOAT fx, FX_FLOAT fy) {
@@ -622,7 +622,7 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) {
CFX_SizeF szRange;
if (bShowVertScr) {
if (!m_pVertScrollBar)
- InitScrollBar();
+ InitVerticalScrollBar();
CFX_RectF rtScrollBar;
rtScrollBar.Set(m_rtClient.right() - m_fScorllBarWidth, m_rtClient.top,
@@ -655,7 +655,7 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) {
}
if (bShowHorzScr) {
if (!m_pHorzScrollBar)
- InitScrollBar(false);
+ InitHorizontalScrollBar();
CFX_RectF rtScrollBar;
rtScrollBar.Set(m_rtClient.left, m_rtClient.bottom() - m_fScorllBarWidth,
@@ -718,7 +718,7 @@ FX_FLOAT CFWL_ListBox::GetMaxTextWidth() {
continue;
CFX_WideString wsText = GetItemText(this, pItem);
- CFX_SizeF sz = CalcTextSize(wsText, m_pProperties->m_pThemeProvider);
+ CFX_SizeF sz = CalcTextSize(wsText, m_pProperties->m_pThemeProvider, false);
fRet = std::max(fRet, sz.x);
}
return fRet;
@@ -740,20 +740,30 @@ FX_FLOAT CFWL_ListBox::CalcItemHeight() {
return *pfFont + 2 * kItemTextMargin;
}
-void CFWL_ListBox::InitScrollBar(bool bVert) {
- if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar))
+void CFWL_ListBox::InitVerticalScrollBar() {
+ if (m_pVertScrollBar)
return;
auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
- prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Vert;
prop->m_dwStates = FWL_WGTSTATE_Invisible;
prop->m_pParent = this;
prop->m_pThemeProvider = m_pScrollBarTP;
- CFWL_ScrollBar* sb = new CFWL_ScrollBar(m_pOwnerApp, std::move(prop), this);
- if (bVert)
- m_pVertScrollBar.reset(sb);
- else
- m_pHorzScrollBar.reset(sb);
+ m_pVertScrollBar =
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this);
+}
+
+void CFWL_ListBox::InitHorizontalScrollBar() {
+ if (m_pHorzScrollBar)
+ return;
+
+ auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Horz;
+ prop->m_dwStates = FWL_WGTSTATE_Invisible;
+ prop->m_pParent = this;
+ prop->m_pThemeProvider = m_pScrollBarTP;
+ m_pHorzScrollBar =
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this);
}
bool CFWL_ListBox::IsShowScrollBar(bool bVert) {
@@ -1093,12 +1103,11 @@ void CFWL_ListBox::SetItemCheckState(CFWL_Widget* pWidget,
static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState;
}
-CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd,
- bool bSelect) {
+CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd) {
auto pItem = pdfium::MakeUnique<CFWL_ListItem>();
pItem->m_dwStates = 0;
pItem->m_wsText = wsAdd;
- pItem->m_dwStates = bSelect ? FWL_ITEMSTATE_LTB_Selected : 0;
+ pItem->m_dwStates = 0;
m_ItemArray.push_back(std::move(pItem));
return m_ItemArray.back().get();
}
diff --git a/xfa/fwl/core/cfwl_listbox.h b/xfa/fwl/core/cfwl_listbox.h
index e9e59ebc10..0cfe1f0367 100644
--- a/xfa/fwl/core/cfwl_listbox.h
+++ b/xfa/fwl/core/cfwl_listbox.h
@@ -84,7 +84,7 @@ class CFWL_ListBox : public CFWL_Widget {
void SetItemCheckState(CFWL_Widget* pWidget,
CFWL_ListItem* pItem,
uint32_t dwCheckState);
- CFWL_ListItem* AddString(const CFX_WideStringC& wsAdd, bool bSelect = false);
+ CFWL_ListItem* AddString(const CFX_WideStringC& wsAdd);
bool RemoveAt(int32_t iIndex);
bool DeleteString(CFWL_ListItem* pItem);
void DeleteAll();
@@ -92,7 +92,7 @@ class CFWL_ListBox : public CFWL_Widget {
int32_t CountSelItems();
CFWL_ListItem* GetSelItem(int32_t nIndexSel);
int32_t GetSelIndex(int32_t nIndex);
- void SetSelItem(CFWL_ListItem* hItem, bool bSelect = true);
+ void SetSelItem(CFWL_ListItem* hItem, bool bSelect);
CFX_WideString GetDataProviderItemText(CFWL_ListItem* hItem);
FX_FLOAT GetItemHeight() const { return m_fItemHeight; }
@@ -103,7 +103,8 @@ class CFWL_ListBox : public CFWL_Widget {
void SetSelection(CFWL_ListItem* hStart, CFWL_ListItem* hEnd, bool bSelected);
CFWL_ListItem* GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy);
bool ScrollToVisible(CFWL_ListItem* hItem);
- void InitScrollBar(bool bVert = true);
+ void InitVerticalScrollBar();
+ void InitHorizontalScrollBar();
bool IsShowScrollBar(bool bVert);
CFWL_ScrollBar* GetVertScrollBar() const { return m_pVertScrollBar.get(); }
const CFX_RectF& GetRTClient() const { return m_rtClient; }
@@ -121,27 +122,27 @@ class CFWL_ListBox : public CFWL_Widget {
bool GetItemChecked(CFWL_ListItem* hItem);
void DrawBkground(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void DrawItems(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void DrawItem(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
CFWL_ListItem* hItem,
int32_t Index,
const CFX_RectF& rtItem,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void DrawStatic(CFX_Graphics* pGraphics, IFWL_ThemeProvider* pTheme);
- CFX_SizeF CalcSize(bool bAutoSize = false);
+ CFX_SizeF CalcSize(bool bAutoSize);
void GetItemSize(CFX_SizeF& size,
CFWL_ListItem* hItem,
FX_FLOAT fWidth,
FX_FLOAT fHeight,
- bool bAutoSize = false);
+ bool bAutoSize);
FX_FLOAT GetMaxTextWidth();
FX_FLOAT GetScrollWidth();
- void OnFocusChanged(CFWL_Message* pMsg, bool bSet = true);
+ void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
void OnLButtonDown(CFWL_MsgMouse* pMsg);
void OnLButtonUp(CFWL_MsgMouse* pMsg);
void OnMouseWheel(CFWL_MsgMouseWheel* pMsg);
diff --git a/xfa/fwl/core/cfwl_message.cpp b/xfa/fwl/core/cfwl_message.cpp
index b20cf0e6a1..a8d13fc740 100644
--- a/xfa/fwl/core/cfwl_message.cpp
+++ b/xfa/fwl/core/cfwl_message.cpp
@@ -17,7 +17,6 @@ CFWL_Message::CFWL_Message(Type type,
CFWL_Widget* pDstTarget)
: m_pSrcTarget(pSrcTarget),
m_pDstTarget(pDstTarget),
- m_dwExtend(0),
m_type(type) {}
CFWL_Message::~CFWL_Message() {}
diff --git a/xfa/fwl/core/cfwl_message.h b/xfa/fwl/core/cfwl_message.h
index a1545b1013..0c980066cc 100644
--- a/xfa/fwl/core/cfwl_message.h
+++ b/xfa/fwl/core/cfwl_message.h
@@ -30,7 +30,6 @@ class CFWL_Message {
CFWL_Widget* m_pSrcTarget;
CFWL_Widget* m_pDstTarget;
- uint32_t m_dwExtend;
private:
Type m_type;
diff --git a/xfa/fwl/core/cfwl_monthcalendar.cpp b/xfa/fwl/core/cfwl_monthcalendar.cpp
index 76426cd5be..7b5c171a3a 100644
--- a/xfa/fwl/core/cfwl_monthcalendar.cpp
+++ b/xfa/fwl/core/cfwl_monthcalendar.cpp
@@ -166,7 +166,7 @@ void CFWL_MonthCalendar::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
return;
}
- CFX_SizeF fs = CalcSize(true);
+ CFX_SizeF fs = CalcSize();
rect.Set(0, 0, fs.x, fs.y);
CFWL_Widget::GetWidgetRect(rect, true);
}
@@ -297,7 +297,8 @@ void CFWL_MonthCalendar::DrawCaption(CFX_Graphics* pGraphics,
CFX_WideString wsCation;
GetHeadText(iYear, iMonth, wsCation);
textParam.m_wsText = wsCation;
- m_szHead = CalcTextSize(textParam.m_wsText, m_pProperties->m_pThemeProvider);
+ m_szHead =
+ CalcTextSize(textParam.m_wsText, m_pProperties->m_pThemeProvider, false);
CalcHeadSize();
textParam.m_rtPart = m_rtHeadText;
textParam.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine;
@@ -442,7 +443,8 @@ void CFWL_MonthCalendar::DrawToday(CFX_Graphics* pGraphics,
GetTodayText(m_iYear, m_iMonth, m_iDay, wsText);
params.m_wsText = *wsDay + wsText;
- m_szToday = CalcTextSize(params.m_wsText, m_pProperties->m_pThemeProvider);
+ m_szToday =
+ CalcTextSize(params.m_wsText, m_pProperties->m_pThemeProvider, false);
CalcTodaySize();
params.m_rtPart = m_rtToday;
params.m_dwTTOStyles = FDE_TTOSTYLE_SingleLine;
@@ -515,13 +517,9 @@ void CFWL_MonthCalendar::DrawDatesInCircle(CFX_Graphics* pGraphics,
pTheme->DrawBackground(&params);
}
-CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
+CFX_SizeF CFWL_MonthCalendar::CalcSize() {
if (!m_pProperties->m_pThemeProvider)
return CFX_SizeF();
- if (!bAutoSize) {
- GetClientRect(m_rtClient);
- return CFX_SizeF(m_rtClient.width, m_rtClient.height);
- }
CFX_SizeF fs;
CFWL_ThemePart params;
@@ -532,7 +530,7 @@ CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
for (uint32_t i = 0; i < 7; ++i) {
CFX_SizeF sz = CalcTextSize(*GetCapacityForDay(pTheme, params, i),
- m_pProperties->m_pThemeProvider);
+ m_pProperties->m_pThemeProvider, false);
fMaxWeekW = (fMaxWeekW >= sz.x) ? fMaxWeekW : sz.x;
fMaxWeekH = (fMaxWeekH >= sz.y) ? fMaxWeekH : sz.y;
}
@@ -542,7 +540,7 @@ CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
for (int day = 10; day <= 31; day++) {
CFX_WideString wsDay;
wsDay.Format(L"%d", day);
- CFX_SizeF sz = CalcTextSize(wsDay, m_pProperties->m_pThemeProvider);
+ CFX_SizeF sz = CalcTextSize(wsDay, m_pProperties->m_pThemeProvider, false);
fDayMaxW = (fDayMaxW >= sz.x) ? fDayMaxW : sz.x;
fDayMaxH = (fDayMaxH >= sz.y) ? fDayMaxH : sz.y;
}
@@ -557,7 +555,7 @@ CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
for (uint32_t i = 0; i < 12; ++i) {
CFX_SizeF sz = CalcTextSize(*GetCapacityForMonth(pTheme, params, i),
- m_pProperties->m_pThemeProvider);
+ m_pProperties->m_pThemeProvider, false);
fMonthMaxW = (fMonthMaxW >= sz.x) ? fMonthMaxW : sz.x;
fMonthMaxH = (fMonthMaxH >= sz.y) ? fMonthMaxH : sz.y;
}
@@ -565,7 +563,8 @@ CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
CFX_WideString wsYear;
GetHeadText(m_iYear, m_iMonth, wsYear);
- CFX_SizeF szYear = CalcTextSize(wsYear, m_pProperties->m_pThemeProvider);
+ CFX_SizeF szYear =
+ CalcTextSize(wsYear, m_pProperties->m_pThemeProvider, false);
fMonthMaxH = std::max(fMonthMaxH, szYear.y);
m_szHead = CFX_SizeF(fMonthMaxW + szYear.x, fMonthMaxH);
fMonthMaxW = m_szHead.x + MONTHCAL_HEADER_BTN_HMARGIN * 2 + m_szCell.x * 2;
@@ -576,7 +575,7 @@ CFX_SizeF CFWL_MonthCalendar::CalcSize(bool bAutoSize) {
CFX_WideString* wsText = static_cast<CFX_WideString*>(
pTheme->GetCapacity(&params, CFWL_WidgetCapacity::Today));
m_wsToday = *wsText + wsToday;
- m_szToday = CalcTextSize(wsToday, m_pProperties->m_pThemeProvider);
+ m_szToday = CalcTextSize(wsToday, m_pProperties->m_pThemeProvider, false);
m_szToday.y = (m_szToday.y >= m_szCell.y) ? m_szToday.y : m_szCell.y;
fs.y = m_szCell.x + m_szCell.y * (MONTHCAL_ROWS - 2) + m_szToday.y +
MONTHCAL_VMARGIN * MONTHCAL_ROWS * 2 + MONTHCAL_HEADER_BTN_VMARGIN * 4;
@@ -811,34 +810,18 @@ void CFWL_MonthCalendar::ChangeToMonth(int32_t iYear, int32_t iMonth) {
GetHeadText(m_iCurYear, m_iCurMonth, m_wsHead);
}
-void CFWL_MonthCalendar::RemoveSelDay(int32_t iDay, bool bAll) {
- if (iDay == -1 && !bAll)
- return;
- if (bAll) {
- int32_t iCount = m_arrSelDays.GetSize();
- int32_t iDatesCount = m_arrDates.GetSize();
- for (int32_t i = 0; i < iCount; i++) {
- int32_t iSelDay = m_arrSelDays.GetAt(i);
- if (iSelDay <= iDatesCount) {
- DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1);
- pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected;
- }
- }
- m_arrSelDays.RemoveAll();
- return;
- }
-
- int32_t index = m_arrSelDays.Find(iDay);
- if (index == -1)
- return;
-
- int32_t iSelDay = m_arrSelDays.GetAt(iDay);
+void CFWL_MonthCalendar::RemoveSelDay() {
+ int32_t iCount = m_arrSelDays.GetSize();
int32_t iDatesCount = m_arrDates.GetSize();
- if (iSelDay <= iDatesCount) {
- DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1);
- pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected;
+ for (int32_t i = 0; i < iCount; i++) {
+ int32_t iSelDay = m_arrSelDays.GetAt(i);
+ if (iSelDay <= iDatesCount) {
+ DATEINFO* pDateInfo = m_arrDates.GetAt(iSelDay - 1);
+ pDateInfo->dwStates &= ~FWL_ITEMSTATE_MCD_Selected;
+ }
}
- m_arrSelDays.RemoveAt(index);
+ m_arrSelDays.RemoveAll();
+ return;
}
void CFWL_MonthCalendar::AddSelDay(int32_t iDay) {
@@ -849,7 +832,7 @@ void CFWL_MonthCalendar::AddSelDay(int32_t iDay) {
if (m_arrSelDays.Find(iDay) != -1)
return;
- RemoveSelDay(-1, true);
+ RemoveSelDay();
if (iDay <= m_arrDates.GetSize()) {
DATEINFO* pDateInfo = m_arrDates.GetAt(iDay - 1);
pDateInfo->dwStates |= FWL_ITEMSTATE_MCD_Selected;
diff --git a/xfa/fwl/core/cfwl_monthcalendar.h b/xfa/fwl/core/cfwl_monthcalendar.h
index 1a983abdfb..15912e59c3 100644
--- a/xfa/fwl/core/cfwl_monthcalendar.h
+++ b/xfa/fwl/core/cfwl_monthcalendar.h
@@ -136,7 +136,7 @@ class CFWL_MonthCalendar : public CFWL_Widget {
void DrawDatesInCircle(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
const CFX_Matrix* pMatrix);
- CFX_SizeF CalcSize(bool bAutoSize = false);
+ CFX_SizeF CalcSize();
void Layout();
void CalcHeadSize();
void CalcTodaySize();
@@ -148,7 +148,7 @@ class CFWL_MonthCalendar : public CFWL_Widget {
void NextMonth();
void PrevMonth();
void ChangeToMonth(int32_t iYear, int32_t iMonth);
- void RemoveSelDay(int32_t iDay, bool bAll = false);
+ void RemoveSelDay();
void AddSelDay(int32_t iDay);
void JumpToToday();
void GetHeadText(int32_t iYear, int32_t iMonth, CFX_WideString& wsHead);
diff --git a/xfa/fwl/core/cfwl_notedriver.cpp b/xfa/fwl/core/cfwl_notedriver.cpp
index 00a0b3e4b7..8402b2b90c 100644
--- a/xfa/fwl/core/cfwl_notedriver.cpp
+++ b/xfa/fwl/core/cfwl_notedriver.cpp
@@ -84,19 +84,17 @@ CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() {
return p;
}
-bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus, bool bNotify) {
+bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus) {
if (m_pFocus == pFocus)
return true;
CFWL_Widget* pPrev = m_pFocus;
m_pFocus = pFocus;
if (pPrev) {
- CFWL_MsgKillFocus ms(pPrev, pPrev);
- if (bNotify)
- ms.m_dwExtend = 1;
-
- if (IFWL_WidgetDelegate* pDelegate = pPrev->GetDelegate())
+ if (IFWL_WidgetDelegate* pDelegate = pPrev->GetDelegate()) {
+ CFWL_MsgKillFocus ms(pPrev, pPrev);
pDelegate->OnProcessMessage(&ms);
+ }
}
if (pFocus) {
CFWL_Widget* pWidget =
@@ -105,11 +103,10 @@ bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus, bool bNotify) {
if (pForm)
pForm->SetSubFocus(pFocus);
- CFWL_MsgSetFocus ms(nullptr, pFocus);
- if (bNotify)
- ms.m_dwExtend = 1;
- if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate())
+ if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate()) {
+ CFWL_MsgSetFocus ms(nullptr, pFocus);
pDelegate->OnProcessMessage(&ms);
+ }
}
return true;
}
diff --git a/xfa/fwl/core/cfwl_notedriver.h b/xfa/fwl/core/cfwl_notedriver.h
index 9fdb3427ab..47f11daec3 100644
--- a/xfa/fwl/core/cfwl_notedriver.h
+++ b/xfa/fwl/core/cfwl_notedriver.h
@@ -36,7 +36,7 @@ class CFWL_NoteDriver {
CFWL_NoteLoop* PopNoteLoop();
CFWL_Widget* GetFocus() const { return m_pFocus; }
- bool SetFocus(CFWL_Widget* pFocus, bool bNotify = false);
+ bool SetFocus(CFWL_Widget* pFocus);
void SetGrab(CFWL_Widget* pGrab, bool bSet) {
m_pGrab = bSet ? pGrab : nullptr;
}
diff --git a/xfa/fwl/core/cfwl_scrollbar.cpp b/xfa/fwl/core/cfwl_scrollbar.cpp
index 490940491c..46068dc89c 100644
--- a/xfa/fwl/core/cfwl_scrollbar.cpp
+++ b/xfa/fwl/core/cfwl_scrollbar.cpp
@@ -309,46 +309,6 @@ FX_FLOAT CFWL_ScrollBar::GetTrackPointPos(FX_FLOAT fx, FX_FLOAT fy) {
return std::min(std::max(fPos, m_fRangeMin), m_fRangeMax);
}
-void CFWL_ScrollBar::GetTrackRect(CFX_RectF& rect, bool bLower) {
- bool bDisabled = !!(m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled);
- if (bDisabled) {
- rect = bLower ? m_rtMinTrack : m_rtMaxTrack;
- return;
- }
-
- FX_FLOAT fW = m_rtThumb.width / 2;
- FX_FLOAT fH = m_rtThumb.height / 2;
- bool bVert = IsVertical();
- if (bLower) {
- if (bVert) {
- FX_FLOAT fMinTrackHeight = m_rtMinTrack.height - fH - m_rtMinBtn.height;
- fMinTrackHeight = (fMinTrackHeight >= 0.0f) ? fMinTrackHeight : 0.0f;
- rect.Set(m_rtMinTrack.left, m_rtMinTrack.top + m_rtMinBtn.height,
- m_rtMinTrack.width, fMinTrackHeight);
- return;
- }
-
- FX_FLOAT fMinTrackWidth = m_rtMinTrack.width - fW - m_rtMinBtn.width + 2;
- fMinTrackWidth = (fMinTrackWidth >= 0.0f) ? fMinTrackWidth : 0.0f;
- rect.Set(m_rtMinTrack.left + m_rtMinBtn.width - 1, m_rtMinTrack.top,
- fMinTrackWidth, m_rtMinTrack.height);
- return;
- }
-
- if (bVert) {
- FX_FLOAT fMaxTrackHeight = m_rtMaxTrack.height - fH - m_rtMaxBtn.height;
- fMaxTrackHeight = (fMaxTrackHeight >= 0.0f) ? fMaxTrackHeight : 0.0f;
- rect.Set(m_rtMaxTrack.left, m_rtMaxTrack.top + fH, m_rtMaxTrack.width,
- fMaxTrackHeight);
- return;
- }
-
- FX_FLOAT fMaxTrackWidth = m_rtMaxTrack.width - fW - m_rtMaxBtn.width + 2;
- fMaxTrackWidth = (fMaxTrackWidth >= 0.0f) ? fMaxTrackWidth : 0.0f;
- rect.Set(m_rtMaxTrack.left + fW, m_rtMaxTrack.top, fMaxTrackWidth,
- m_rtMaxTrack.height);
-}
-
bool CFWL_ScrollBar::SendEvent() {
if (m_iMinButtonState == CFWL_PartState_Pressed) {
DoScroll(CFWL_EvtScroll::Code::StepBackward, m_fTrackPos);
diff --git a/xfa/fwl/core/cfwl_scrollbar.h b/xfa/fwl/core/cfwl_scrollbar.h
index 5e9c0b5df2..fb44af6908 100644
--- a/xfa/fwl/core/cfwl_scrollbar.h
+++ b/xfa/fwl/core/cfwl_scrollbar.h
@@ -69,15 +69,15 @@ class CFWL_ScrollBar : public CFWL_Widget {
}
void DrawTrack(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- bool bLower = true,
- const CFX_Matrix* pMatrix = nullptr);
+ bool bLower,
+ const CFX_Matrix* pMatrix);
void DrawArrowBtn(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- bool bMinBtn = true,
- const CFX_Matrix* pMatrix = nullptr);
+ bool bMinBtn,
+ const CFX_Matrix* pMatrix);
void DrawThumb(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void Layout();
void CalcButtonLen();
void CalcMinButtonRect(CFX_RectF& rect);
@@ -86,7 +86,7 @@ class CFWL_ScrollBar : public CFWL_Widget {
void CalcMinTrackRect(CFX_RectF& rect);
void CalcMaxTrackRect(CFX_RectF& rect);
FX_FLOAT GetTrackPointPos(FX_FLOAT fx, FX_FLOAT fy);
- void GetTrackRect(CFX_RectF& rect, bool bLower = true);
+
bool SendEvent();
bool OnScroll(CFWL_EvtScroll::Code dwCode, FX_FLOAT fPos);
void OnLButtonDown(uint32_t dwFlags, FX_FLOAT fx, FX_FLOAT fy);
@@ -98,7 +98,7 @@ class CFWL_ScrollBar : public CFWL_Widget {
uint32_t dwFlags,
FX_FLOAT fDeltaX,
FX_FLOAT fDeltaY);
- bool DoScroll(CFWL_EvtScroll::Code dwCode, FX_FLOAT fPos = 0.0f);
+ bool DoScroll(CFWL_EvtScroll::Code dwCode, FX_FLOAT fPos);
void DoMouseDown(int32_t iItem,
const CFX_RectF& rtItem,
int32_t& iState,
diff --git a/xfa/fwl/core/cfwl_spinbutton.cpp b/xfa/fwl/core/cfwl_spinbutton.cpp
index e66b92e701..8780fed1a9 100644
--- a/xfa/fwl/core/cfwl_spinbutton.cpp
+++ b/xfa/fwl/core/cfwl_spinbutton.cpp
@@ -114,17 +114,16 @@ void CFWL_SpinButton::DrawWidget(CFX_Graphics* pGraphics,
DrawDownButton(pGraphics, pTheme, pMatrix);
}
-void CFWL_SpinButton::EnableButton(bool bEnable, bool bUp) {
- if (bUp)
- m_dwUpState = bEnable ? CFWL_PartState_Normal : CFWL_PartState_Disabled;
- else
- m_dwDnState = bEnable ? CFWL_PartState_Normal : CFWL_PartState_Disabled;
+void CFWL_SpinButton::DisableButton() {
+ m_dwDnState = CFWL_PartState_Disabled;
+}
+
+bool CFWL_SpinButton::IsUpButtonEnabled() {
+ return m_dwUpState != CFWL_PartState_Disabled;
}
-bool CFWL_SpinButton::IsButtonEnabled(bool bUp) {
- if (bUp)
- return (m_dwUpState != CFWL_PartState_Disabled);
- return (m_dwDnState != CFWL_PartState_Disabled);
+bool CFWL_SpinButton::IsDownButtonEnabled() {
+ return m_dwDnState != CFWL_PartState_Disabled;
}
void CFWL_SpinButton::DrawUpButton(CFX_Graphics* pGraphics,
@@ -222,9 +221,9 @@ void CFWL_SpinButton::OnLButtonDown(CFWL_MsgMouse* pMsg) {
SetFocus(true);
bool bUpPress =
- (m_rtUpButton.Contains(pMsg->m_fx, pMsg->m_fy) && IsButtonEnabled(true));
+ (m_rtUpButton.Contains(pMsg->m_fx, pMsg->m_fy) && IsUpButtonEnabled());
bool bDnPress =
- (m_rtDnButton.Contains(pMsg->m_fx, pMsg->m_fy) && IsButtonEnabled(false));
+ (m_rtDnButton.Contains(pMsg->m_fx, pMsg->m_fy) && IsDownButtonEnabled());
if (!bUpPress && !bDnPress)
return;
if (bUpPress) {
@@ -256,11 +255,11 @@ void CFWL_SpinButton::OnLButtonUp(CFWL_MsgMouse* pMsg) {
}
bool bRepaint = false;
CFX_RectF rtInvalidate;
- if (m_dwUpState == CFWL_PartState_Pressed && IsButtonEnabled(true)) {
+ if (m_dwUpState == CFWL_PartState_Pressed && IsUpButtonEnabled()) {
m_dwUpState = CFWL_PartState_Normal;
bRepaint = true;
rtInvalidate = m_rtUpButton;
- } else if (m_dwDnState == CFWL_PartState_Pressed && IsButtonEnabled(false)) {
+ } else if (m_dwDnState == CFWL_PartState_Pressed && IsDownButtonEnabled()) {
m_dwDnState = CFWL_PartState_Normal;
bRepaint = true;
rtInvalidate = m_rtDnButton;
@@ -277,13 +276,13 @@ void CFWL_SpinButton::OnMouseMove(CFWL_MsgMouse* pMsg) {
CFX_RectF rtInvlidate;
rtInvlidate.Reset();
if (m_rtUpButton.Contains(pMsg->m_fx, pMsg->m_fy)) {
- if (IsButtonEnabled(true)) {
+ if (IsUpButtonEnabled()) {
if (m_dwUpState == CFWL_PartState_Hovered) {
m_dwUpState = CFWL_PartState_Hovered;
bRepaint = true;
rtInvlidate = m_rtUpButton;
}
- if (m_dwDnState != CFWL_PartState_Normal && IsButtonEnabled(false)) {
+ if (m_dwDnState != CFWL_PartState_Normal && IsDownButtonEnabled()) {
m_dwDnState = CFWL_PartState_Normal;
if (bRepaint)
rtInvlidate.Union(m_rtDnButton);
@@ -293,17 +292,17 @@ void CFWL_SpinButton::OnMouseMove(CFWL_MsgMouse* pMsg) {
bRepaint = true;
}
}
- if (!IsButtonEnabled(false))
- EnableButton(false, false);
+ if (!IsDownButtonEnabled())
+ DisableButton();
} else if (m_rtDnButton.Contains(pMsg->m_fx, pMsg->m_fy)) {
- if (IsButtonEnabled(false)) {
+ if (IsDownButtonEnabled()) {
if (m_dwDnState != CFWL_PartState_Hovered) {
m_dwDnState = CFWL_PartState_Hovered;
bRepaint = true;
rtInvlidate = m_rtDnButton;
}
- if (m_dwUpState != CFWL_PartState_Normal && IsButtonEnabled(true)) {
+ if (m_dwUpState != CFWL_PartState_Normal && IsUpButtonEnabled()) {
m_dwUpState = CFWL_PartState_Normal;
if (bRepaint)
rtInvlidate.Union(m_rtUpButton);
@@ -336,9 +335,9 @@ void CFWL_SpinButton::OnMouseMove(CFWL_MsgMouse* pMsg) {
void CFWL_SpinButton::OnMouseLeave(CFWL_MsgMouse* pMsg) {
if (!pMsg)
return;
- if (m_dwUpState != CFWL_PartState_Normal && IsButtonEnabled(true))
+ if (m_dwUpState != CFWL_PartState_Normal && IsUpButtonEnabled())
m_dwUpState = CFWL_PartState_Normal;
- if (m_dwDnState != CFWL_PartState_Normal && IsButtonEnabled(false))
+ if (m_dwDnState != CFWL_PartState_Normal && IsDownButtonEnabled())
m_dwDnState = CFWL_PartState_Normal;
Repaint(&m_rtClient);
@@ -352,8 +351,8 @@ void CFWL_SpinButton::OnKeyDown(CFWL_MsgKey* pMsg) {
if (!bUp && !bDown)
return;
- bool bUpEnable = IsButtonEnabled(true);
- bool bDownEnable = IsButtonEnabled(false);
+ bool bUpEnable = IsUpButtonEnabled();
+ bool bDownEnable = IsDownButtonEnabled();
if (!bUpEnable && !bDownEnable)
return;
diff --git a/xfa/fwl/core/cfwl_spinbutton.h b/xfa/fwl/core/cfwl_spinbutton.h
index 2993663a58..fd2f02e998 100644
--- a/xfa/fwl/core/cfwl_spinbutton.h
+++ b/xfa/fwl/core/cfwl_spinbutton.h
@@ -44,8 +44,9 @@ class CFWL_SpinButton : public CFWL_Widget {
};
friend class CFWL_SpinButton::Timer;
- void EnableButton(bool bEnable, bool bUp = true);
- bool IsButtonEnabled(bool bUp = true);
+ void DisableButton();
+ bool IsUpButtonEnabled();
+ bool IsDownButtonEnabled();
void DrawUpButton(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
const CFX_Matrix* pMatrix);
diff --git a/xfa/fwl/core/cfwl_widget.cpp b/xfa/fwl/core/cfwl_widget.cpp
index 8989563112..2dff10adc7 100644
--- a/xfa/fwl/core/cfwl_widget.cpp
+++ b/xfa/fwl/core/cfwl_widget.cpp
@@ -76,7 +76,7 @@ void CFWL_Widget::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
rect.Inflate(fEdge, fEdge);
}
if (HasBorder()) {
- FX_FLOAT fBorder = GetBorderSize();
+ FX_FLOAT fBorder = GetBorderSize(true);
rect.Inflate(fBorder, fBorder);
}
}
@@ -317,7 +317,7 @@ void CFWL_Widget::GetEdgeRect(CFX_RectF& rtEdge) {
rtEdge = m_pProperties->m_rtWidget;
rtEdge.left = rtEdge.top = 0;
if (HasBorder()) {
- FX_FLOAT fCX = GetBorderSize();
+ FX_FLOAT fCX = GetBorderSize(true);
FX_FLOAT fCY = GetBorderSize(false);
rtEdge.Deflate(fCX, fCY);
}
@@ -399,8 +399,7 @@ CFWL_Widget* CFWL_Widget::GetRootOuter() {
CFX_SizeF CFWL_Widget::CalcTextSize(const CFX_WideString& wsText,
IFWL_ThemeProvider* pTheme,
- bool bMultiLine,
- int32_t iLineWidth) {
+ bool bMultiLine) {
if (!pTheme)
return CFX_SizeF();
@@ -411,10 +410,8 @@ CFX_SizeF CFWL_Widget::CalcTextSize(const CFX_WideString& wsText,
bMultiLine ? FDE_TTOSTYLE_LineWrap : FDE_TTOSTYLE_SingleLine;
calPart.m_iTTOAlign = FDE_TTOALIGNMENT_TopLeft;
CFX_RectF rect;
- FX_FLOAT fWidth = bMultiLine
- ? (iLineWidth > 0 ? (FX_FLOAT)iLineWidth
- : FWL_WGT_CalcMultiLineDefWidth)
- : FWL_WGT_CalcWidth;
+ FX_FLOAT fWidth =
+ bMultiLine ? FWL_WGT_CalcMultiLineDefWidth : FWL_WGT_CalcWidth;
rect.Set(0, 0, fWidth, FWL_WGT_CalcHeight);
pTheme->CalcTextRect(&calPart, rect);
return CFX_SizeF(rect.width, rect.height);
diff --git a/xfa/fwl/core/cfwl_widget.h b/xfa/fwl/core/cfwl_widget.h
index a17c623b53..4961055954 100644
--- a/xfa/fwl/core/cfwl_widget.h
+++ b/xfa/fwl/core/cfwl_widget.h
@@ -67,7 +67,7 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
void OnProcessMessage(CFWL_Message* pMessage) override;
void OnProcessEvent(CFWL_Event* pEvent) override;
void OnDrawWidget(CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix = nullptr) override;
+ const CFX_Matrix* pMatrix) override;
void SetWidgetRect(const CFX_RectF& rect);
@@ -88,7 +88,7 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
}
void TransformTo(CFWL_Widget* pWidget, FX_FLOAT& fx, FX_FLOAT& fy);
- void GetMatrix(CFX_Matrix& matrix, bool bGlobal = false);
+ void GetMatrix(CFX_Matrix& matrix, bool bGlobal);
IFWL_ThemeProvider* GetThemeProvider() const;
void SetDelegate(IFWL_WidgetDelegate* delegate) { m_pDelegate = delegate; }
@@ -107,7 +107,7 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
void SetLayoutItem(void* pItem) { m_pLayoutItem = pItem; }
void SetFocus(bool bFocus);
- void Repaint(const CFX_RectF* pRect = nullptr);
+ void Repaint(const CFX_RectF* pRect);
protected:
CFWL_Widget(const CFWL_App* app,
@@ -120,15 +120,14 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
bool HasBorder() const;
bool HasEdge() const;
void GetEdgeRect(CFX_RectF& rtEdge);
- FX_FLOAT GetBorderSize(bool bCX = true);
+ FX_FLOAT GetBorderSize(bool bCX);
FX_FLOAT GetEdgeWidth();
void GetRelativeRect(CFX_RectF& rect);
void* GetThemeCapacity(CFWL_WidgetCapacity dwCapacity);
IFWL_ThemeProvider* GetAvailableTheme();
CFX_SizeF CalcTextSize(const CFX_WideString& wsText,
IFWL_ThemeProvider* pTheme,
- bool bMultiLine = false,
- int32_t iLineWidth = -1);
+ bool bMultiLine);
void CalcTextRect(const CFX_WideString& wsText,
IFWL_ThemeProvider* pTheme,
uint32_t dwTTOStyles,
@@ -145,11 +144,11 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
void DrawBorder(CFX_Graphics* pGraphics,
CFWL_Part iPartBorder,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void DrawEdge(CFX_Graphics* pGraphics,
CFWL_Part iPartEdge,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
const CFWL_App* const m_pOwnerApp;
CFWL_WidgetMgr* const m_pWidgetMgr;
@@ -183,7 +182,7 @@ class CFWL_Widget : public IFWL_WidgetDelegate {
void DrawBackground(CFX_Graphics* pGraphics,
CFWL_Part iPartBk,
IFWL_ThemeProvider* pTheme,
- const CFX_Matrix* pMatrix = nullptr);
+ const CFX_Matrix* pMatrix);
void NotifyDriver();
bool IsParent(CFWL_Widget* pParent);
diff --git a/xfa/fwl/core/cfwl_widgetmgr.cpp b/xfa/fwl/core/cfwl_widgetmgr.cpp
index fc9f150ac3..1649ee76b9 100644
--- a/xfa/fwl/core/cfwl_widgetmgr.cpp
+++ b/xfa/fwl/core/cfwl_widgetmgr.cpp
@@ -104,7 +104,7 @@ CFWL_Widget* CFWL_WidgetMgr::GetSystemFormWidget(CFWL_Widget* pWidget) const {
return nullptr;
}
-void CFWL_WidgetMgr::SetWidgetIndex(CFWL_Widget* pWidget, int32_t nIndex) {
+void CFWL_WidgetMgr::AppendWidget(CFWL_Widget* pWidget) {
Item* pItem = GetWidgetMgrItem(pWidget);
if (!pItem)
return;
@@ -115,8 +115,6 @@ void CFWL_WidgetMgr::SetWidgetIndex(CFWL_Widget* pWidget, int32_t nIndex) {
int32_t i = 0;
while (pChild) {
if (pChild == pItem) {
- if (i == nIndex)
- return;
if (pChild->pPrevious)
pChild->pPrevious->pNext = pChild->pNext;
if (pChild->pNext)
@@ -137,40 +135,16 @@ void CFWL_WidgetMgr::SetWidgetIndex(CFWL_Widget* pWidget, int32_t nIndex) {
pChild = pItem->pParent->pChild;
if (pChild) {
- if (nIndex < 0) {
- while (pChild->pNext)
- pChild = pChild->pNext;
-
- pChild->pNext = pItem;
- pItem->pPrevious = pChild;
- pItem->pNext = nullptr;
- return;
- }
-
- i = 0;
- while (i < nIndex && pChild->pNext) {
+ while (pChild->pNext)
pChild = pChild->pNext;
- ++i;
- }
- if (!pChild->pNext) {
- pChild->pNext = pItem;
- pItem->pPrevious = pChild;
- pItem->pNext = nullptr;
- return;
- }
- if (pChild->pPrevious) {
- pItem->pPrevious = pChild->pPrevious;
- pChild->pPrevious->pNext = pItem;
- }
- pChild->pPrevious = pItem;
- pItem->pNext = pChild;
- if (pItem->pParent->pChild == pChild)
- pItem->pParent->pChild = pItem;
+
+ pChild->pNext = pItem;
+ pItem->pPrevious = pChild;
} else {
pItem->pParent->pChild = pItem;
pItem->pPrevious = nullptr;
- pItem->pNext = nullptr;
}
+ pItem->pNext = nullptr;
}
void CFWL_WidgetMgr::RepaintWidget(CFWL_Widget* pWidget,
@@ -201,9 +175,7 @@ void CFWL_WidgetMgr::RepaintWidget(CFWL_Widget* pWidget,
m_pAdapter->RepaintWidget(pNative, &rect);
}
-void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent,
- CFWL_Widget* pChild,
- int32_t nIndex) {
+void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent, CFWL_Widget* pChild) {
Item* pParentItem = GetWidgetMgrItem(pParent);
if (!pParentItem) {
auto item = pdfium::MakeUnique<Item>(pParent);
@@ -211,7 +183,7 @@ void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent,
m_mapWidgetItem[pParent] = std::move(item);
pParentItem->pParent = GetWidgetMgrItem(nullptr);
- SetWidgetIndex(pParent, -1);
+ AppendWidget(pParent);
}
Item* pItem = GetWidgetMgrItem(pChild);
@@ -229,7 +201,7 @@ void CFWL_WidgetMgr::InsertWidget(CFWL_Widget* pParent,
pItem->pParent->pChild = pItem->pNext;
}
pItem->pParent = pParentItem;
- SetWidgetIndex(pChild, nIndex);
+ AppendWidget(pChild);
}
void CFWL_WidgetMgr::RemoveWidget(CFWL_Widget* pWidget) {
@@ -260,7 +232,7 @@ void CFWL_WidgetMgr::SetOwner(CFWL_Widget* pOwner, CFWL_Widget* pOwned) {
m_mapWidgetItem[pOwner] = std::move(item);
pParentItem->pParent = GetWidgetMgrItem(nullptr);
- SetWidgetIndex(pOwner, -1);
+ AppendWidget(pOwner);
}
Item* pItem = GetWidgetMgrItem(pOwned);
@@ -288,7 +260,7 @@ void CFWL_WidgetMgr::SetParent(CFWL_Widget* pParent, CFWL_Widget* pChild) {
pItem->pPrevious = nullptr;
}
pItem->pParent = pParentItem;
- SetWidgetIndex(pChild, -1);
+ AppendWidget(pChild);
}
void CFWL_WidgetMgr::SetWidgetRect_Native(CFWL_Widget* pWidget,
@@ -327,7 +299,7 @@ CFWL_Widget* CFWL_WidgetMgr::GetWidgetAtPoint(CFWL_Widget* parent,
x1 = x;
y1 = y;
CFX_Matrix matrixOnParent;
- child->GetMatrix(matrixOnParent);
+ child->GetMatrix(matrixOnParent, false);
CFX_Matrix m;
m.SetIdentity();
m.SetReverse(matrixOnParent);
diff --git a/xfa/fwl/core/cfwl_widgetmgr.h b/xfa/fwl/core/cfwl_widgetmgr.h
index 70d8b7ec7c..5b72d44577 100644
--- a/xfa/fwl/core/cfwl_widgetmgr.h
+++ b/xfa/fwl/core/cfwl_widgetmgr.h
@@ -42,11 +42,9 @@ class CFWL_WidgetMgr : public CFWL_WidgetMgrDelegate {
CFWL_Widget* GetFirstChildWidget(CFWL_Widget* pWidget) const;
CFWL_Widget* GetSystemFormWidget(CFWL_Widget* pWidget) const;
- void RepaintWidget(CFWL_Widget* pWidget, const CFX_RectF* pRect = nullptr);
+ void RepaintWidget(CFWL_Widget* pWidget, const CFX_RectF* pRect);
- void InsertWidget(CFWL_Widget* pParent,
- CFWL_Widget* pChild,
- int32_t nIndex = -1);
+ void InsertWidget(CFWL_Widget* pParent, CFWL_Widget* pChild);
void RemoveWidget(CFWL_Widget* pWidget);
void SetOwner(CFWL_Widget* pOwner, CFWL_Widget* pOwned);
void SetParent(CFWL_Widget* pParent, CFWL_Widget* pChild);
@@ -99,7 +97,7 @@ class CFWL_WidgetMgr : public CFWL_WidgetMgrDelegate {
CFWL_Widget* GetLastChildWidget(CFWL_Widget* pWidget) const;
Item* GetWidgetMgrItem(CFWL_Widget* pWidget) const;
- void SetWidgetIndex(CFWL_Widget* pWidget, int32_t nIndex);
+ void AppendWidget(CFWL_Widget* pWidget);
int32_t CountRadioButtonGroup(CFWL_Widget* pFirst) const;
CFWL_Widget* GetRadioButtonGroupHeader(CFWL_Widget* pRadioButton) const;
diff --git a/xfa/fwl/core/ifwl_widgetdelegate.h b/xfa/fwl/core/ifwl_widgetdelegate.h
index 7de14824c5..042679359c 100644
--- a/xfa/fwl/core/ifwl_widgetdelegate.h
+++ b/xfa/fwl/core/ifwl_widgetdelegate.h
@@ -21,7 +21,7 @@ class IFWL_WidgetDelegate {
virtual void OnProcessMessage(CFWL_Message* pMessage) = 0;
virtual void OnProcessEvent(CFWL_Event* pEvent) = 0;
virtual void OnDrawWidget(CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix = nullptr) = 0;
+ const CFX_Matrix* pMatrix) = 0;
};
#endif // XFA_FWL_CORE_IFWL_WIDGETDELEGATE_H_
diff --git a/xfa/fxfa/app/xfa_fftextedit.cpp b/xfa/fxfa/app/xfa_fftextedit.cpp
index 89c323c23b..a678a20f6c 100644
--- a/xfa/fxfa/app/xfa_fftextedit.cpp
+++ b/xfa/fxfa/app/xfa_fftextedit.cpp
@@ -303,13 +303,13 @@ void CXFA_FFTextEdit::OnTextChanged(CFWL_Widget* pWidget,
eParam.m_wsNewText = pDateTime->GetEditText();
int32_t iSels = pDateTime->CountSelRanges();
if (iSels) {
- eParam.m_iSelEnd = pDateTime->GetSelRange(0, eParam.m_iSelStart);
+ eParam.m_iSelEnd = pDateTime->GetSelRange(0, &eParam.m_iSelStart);
}
} else {
eParam.m_wsNewText = pEdit->GetText();
int32_t iSels = pEdit->CountSelRanges();
if (iSels) {
- eParam.m_iSelEnd = pEdit->GetSelRange(0, eParam.m_iSelStart);
+ eParam.m_iSelEnd = pEdit->GetSelRange(0, &eParam.m_iSelStart);
}
}
m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Change, &eParam);