Index: xfa/fwl/core/cfwl_edit.cpp |
diff --git a/xfa/fwl/core/cfwl_edit.cpp b/xfa/fwl/core/cfwl_edit.cpp |
index 28ab71bac0ebc53f0ee0236ca94badaca5ddc668..c6c0ce29ba7e6b53180c48dda0a024ace948e3b2 100644 |
--- a/xfa/fwl/core/cfwl_edit.cpp |
+++ b/xfa/fwl/core/cfwl_edit.cpp |
@@ -89,37 +89,35 @@ FWL_Type CFWL_Edit::GetClassID() const { |
return FWL_Type::Edit; |
} |
-void CFWL_Edit::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { |
- if (!bAutoSize) { |
- rect = m_pProperties->m_rtWidget; |
- if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) { |
- if (IsShowScrollBar(true)) { |
- FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( |
- GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
- rect.width += *pfWidth; |
- rect.width += kEditMargin; |
- } |
- if (IsShowScrollBar(false)) { |
- FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( |
- GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
- rect.height += *pfWidth; |
- rect.height += kEditMargin; |
- } |
+CFX_RectF CFWL_Edit::GetWidgetRect() { |
+ CFX_RectF rect = m_pProperties->m_rtWidget; |
+ if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) { |
+ if (IsShowScrollBar(true)) { |
+ FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( |
+ GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
+ rect.width += *pfWidth; |
+ rect.width += kEditMargin; |
+ } |
+ if (IsShowScrollBar(false)) { |
+ FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( |
+ GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
+ rect.height += *pfWidth; |
+ rect.height += kEditMargin; |
} |
- return; |
} |
+ return rect; |
+} |
- rect.Set(0, 0, 0, 0); |
- |
- int32_t iTextLen = m_EdtEngine.GetTextLength(); |
- if (iTextLen > 0) { |
- CFX_WideString wsText = m_EdtEngine.GetText(0, -1); |
+CFX_RectF CFWL_Edit::GetAutosizedWidgetRect() { |
+ CFX_RectF rect; |
+ if (m_EdtEngine.GetTextLength() > 0) { |
CFX_SizeF sz = CalcTextSize( |
- wsText, m_pProperties->m_pThemeProvider, |
+ m_EdtEngine.GetText(0, -1), m_pProperties->m_pThemeProvider, |
!!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine)); |
rect.Set(0, 0, sz.x, sz.y); |
} |
InflateWidgetRect(rect); |
+ return rect; |
} |
void CFWL_Edit::SetStates(uint32_t dwStates) { |
@@ -149,15 +147,11 @@ void CFWL_Edit::Update() { |
FWL_WidgetHit CFWL_Edit::HitTest(FX_FLOAT fx, FX_FLOAT fy) { |
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) { |
if (IsShowScrollBar(true)) { |
- CFX_RectF rect; |
- m_pVertScrollBar->GetWidgetRect(rect, false); |
- if (rect.Contains(fx, fy)) |
+ if (m_pVertScrollBar->GetWidgetRect().Contains(fx, fy)) |
return FWL_WidgetHit::VScrollBar; |
} |
if (IsShowScrollBar(false)) { |
- CFX_RectF rect; |
- m_pHorzScrollBar->GetWidgetRect(rect, false); |
- if (rect.Contains(fx, fy)) |
+ if (m_pHorzScrollBar->GetWidgetRect().Contains(fx, fy)) |
return FWL_WidgetHit::HScrollBar; |
} |
} |
@@ -428,7 +422,7 @@ void CFWL_Edit::OnCaretChanged() { |
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_MultiLine) { |
CFWL_ScrollBar* pScroll = UpdateScroll(); |
if (pScroll) { |
- pScroll->GetWidgetRect(rtInvalid, false); |
+ rtInvalid = pScroll->GetWidgetRect(); |
bRepaintScroll = true; |
} |
} |
@@ -519,8 +513,7 @@ void CFWL_Edit::DrawTextBk(CFX_Graphics* pGraphics, |
if (!IsShowScrollBar(true) || !IsShowScrollBar(false)) |
return; |
- CFX_RectF rtScroll; |
- m_pHorzScrollBar->GetWidgetRect(rtScroll, false); |
+ CFX_RectF rtScroll = m_pHorzScrollBar->GetWidgetRect(); |
CFX_RectF rtStatic; |
rtStatic.Set(m_rtClient.right() - rtScroll.height, |
@@ -903,8 +896,7 @@ CFWL_ScrollBar* CFWL_Edit::UpdateScroll() { |
const CFX_RectF& rtFDE = pPage->GetContentsBox(); |
CFWL_ScrollBar* pRepaint = nullptr; |
if (bShowHorz) { |
- CFX_RectF rtScroll; |
- m_pHorzScrollBar->GetWidgetRect(rtScroll, false); |
+ CFX_RectF rtScroll = m_pHorzScrollBar->GetWidgetRect(); |
if (rtScroll.width < rtFDE.width) { |
m_pHorzScrollBar->LockUpdate(); |
FX_FLOAT fRange = rtFDE.width - rtScroll.width; |
@@ -930,8 +922,7 @@ CFWL_ScrollBar* CFWL_Edit::UpdateScroll() { |
} |
if (bShowVert) { |
- CFX_RectF rtScroll; |
- m_pVertScrollBar->GetWidgetRect(rtScroll, false); |
+ CFX_RectF rtScroll = m_pVertScrollBar->GetWidgetRect(); |
if (rtScroll.height < rtFDE.height) { |
m_pVertScrollBar->LockUpdate(); |
FX_FLOAT fStep = m_EdtEngine.GetEditParams()->fLineSpace; |
@@ -1180,8 +1171,7 @@ void CFWL_Edit::ShowCaret(CFX_RectF* pRect) { |
while (pOuter->GetOuter()) { |
pOuter = pOuter->GetOuter(); |
- CFX_RectF rtOuter; |
- pOuter->GetWidgetRect(rtOuter, false); |
+ CFX_RectF rtOuter = pOuter->GetWidgetRect(); |
pRect->Offset(rtOuter.left, rtOuter.top); |
} |
@@ -1646,8 +1636,7 @@ bool CFWL_Edit::OnScroll(CFWL_ScrollBar* pScrollBar, |
UpdateOffset(pScrollBar, fPos - iCurPos); |
UpdateCaret(); |
- CFX_RectF rect; |
- GetWidgetRect(rect, false); |
+ CFX_RectF rect = GetWidgetRect(); |
CFX_RectF rtInvalidate; |
rtInvalidate.Set(0, 0, rect.width + 2, rect.height + 2); |
Repaint(&rtInvalidate); |