| Index: xfa/fwl/cfwl_widget.cpp
|
| diff --git a/xfa/fwl/cfwl_widget.cpp b/xfa/fwl/cfwl_widget.cpp
|
| index 4da576423a411ffa7ad12c9f9e8bb318af369656..071e0ded8d260e5d3aaac2af527b7904833a3f87 100644
|
| --- a/xfa/fwl/cfwl_widget.cpp
|
| +++ b/xfa/fwl/cfwl_widget.cpp
|
| @@ -92,12 +92,13 @@ void CFWL_Widget::SetWidgetRect(const CFX_RectF& rect) {
|
| m_pWidgetMgr->SetWidgetRect_Native(this, rect);
|
| }
|
|
|
| -void CFWL_Widget::GetClientRect(CFX_RectF& rect) {
|
| - GetEdgeRect(rect);
|
| +CFX_RectF CFWL_Widget::GetClientRect() {
|
| + CFX_RectF rect = GetEdgeRect();
|
| if (HasEdge()) {
|
| FX_FLOAT fEdge = GetEdgeWidth();
|
| rect.Deflate(fEdge, fEdge);
|
| }
|
| + return rect;
|
| }
|
|
|
| void CFWL_Widget::SetParent(CFWL_Widget* pParent) {
|
| @@ -162,22 +163,12 @@ void CFWL_Widget::RemoveStates(uint32_t dwStates) {
|
| }
|
|
|
| FWL_WidgetHit CFWL_Widget::HitTest(FX_FLOAT fx, FX_FLOAT fy) {
|
| - CFX_RectF rtClient;
|
| - GetClientRect(rtClient);
|
| - if (rtClient.Contains(fx, fy))
|
| + if (GetClientRect().Contains(fx, fy))
|
| return FWL_WidgetHit::Client;
|
| - if (HasEdge()) {
|
| - CFX_RectF rtEdge;
|
| - GetEdgeRect(rtEdge);
|
| - if (rtEdge.Contains(fx, fy))
|
| - return FWL_WidgetHit::Edge;
|
| - }
|
| - if (HasBorder()) {
|
| - CFX_RectF rtRelative;
|
| - GetRelativeRect(rtRelative);
|
| - if (rtRelative.Contains(fx, fy))
|
| - return FWL_WidgetHit::Border;
|
| - }
|
| + if (HasEdge() && GetEdgeRect().Contains(fx, fy))
|
| + return FWL_WidgetHit::Edge;
|
| + if (HasBorder() && GetRelativeRect().Contains(fx, fy))
|
| + return FWL_WidgetHit::Border;
|
| return FWL_WidgetHit::Unknown;
|
| }
|
|
|
| @@ -317,14 +308,15 @@ bool CFWL_Widget::IsOffscreen() const {
|
| return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Offscreen);
|
| }
|
|
|
| -void CFWL_Widget::GetEdgeRect(CFX_RectF& rtEdge) {
|
| - rtEdge = m_pProperties->m_rtWidget;
|
| +CFX_RectF CFWL_Widget::GetEdgeRect() {
|
| + CFX_RectF rtEdge = m_pProperties->m_rtWidget;
|
| rtEdge.left = rtEdge.top = 0;
|
| if (HasBorder()) {
|
| FX_FLOAT fCX = GetBorderSize(true);
|
| FX_FLOAT fCY = GetBorderSize(false);
|
| rtEdge.Deflate(fCX, fCY);
|
| }
|
| + return rtEdge;
|
| }
|
|
|
| FX_FLOAT CFWL_Widget::GetBorderSize(bool bCX) {
|
| @@ -358,9 +350,11 @@ FX_FLOAT CFWL_Widget::GetEdgeWidth() {
|
| return 0;
|
| }
|
|
|
| -void CFWL_Widget::GetRelativeRect(CFX_RectF& rect) {
|
| - rect = m_pProperties->m_rtWidget;
|
| - rect.left = rect.top = 0;
|
| +CFX_RectF CFWL_Widget::GetRelativeRect() {
|
| + CFX_RectF rect = m_pProperties->m_rtWidget;
|
| + rect.left = 0;
|
| + rect.top = 0;
|
| + return rect;
|
| }
|
|
|
| void* CFWL_Widget::GetThemeCapacity(CFWL_WidgetCapacity dwCapacity) {
|
| @@ -602,30 +596,29 @@ void CFWL_Widget::DispatchEvent(CFWL_Event* pEvent) {
|
| pNoteDriver->SendEvent(pEvent);
|
| }
|
|
|
| -void CFWL_Widget::Repaint(const CFX_RectF* pRect) {
|
| - if (pRect) {
|
| - m_pWidgetMgr->RepaintWidget(this, pRect);
|
| - return;
|
| - }
|
| +void CFWL_Widget::Repaint() {
|
| CFX_RectF rect;
|
| rect = m_pProperties->m_rtWidget;
|
| - rect.left = rect.top = 0;
|
| - m_pWidgetMgr->RepaintWidget(this, &rect);
|
| + rect.left = 0;
|
| + rect.top = 0;
|
| + RepaintRect(rect);
|
| +}
|
| +
|
| +void CFWL_Widget::RepaintRect(const CFX_RectF& pRect) {
|
| + m_pWidgetMgr->RepaintWidget(this, pRect);
|
| }
|
|
|
| void CFWL_Widget::DrawBackground(CFX_Graphics* pGraphics,
|
| CFWL_Part iPartBk,
|
| IFWL_ThemeProvider* pTheme,
|
| const CFX_Matrix* pMatrix) {
|
| - CFX_RectF rtRelative;
|
| - GetRelativeRect(rtRelative);
|
| CFWL_ThemeBackground param;
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartBk;
|
| param.m_pGraphics = pGraphics;
|
| if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - param.m_rtPart = rtRelative;
|
| + param.m_rtPart = GetRelativeRect();
|
| pTheme->DrawBackground(¶m);
|
| }
|
|
|
| @@ -633,15 +626,13 @@ void CFWL_Widget::DrawBorder(CFX_Graphics* pGraphics,
|
| CFWL_Part iPartBorder,
|
| IFWL_ThemeProvider* pTheme,
|
| const CFX_Matrix* pMatrix) {
|
| - CFX_RectF rtRelative;
|
| - GetRelativeRect(rtRelative);
|
| CFWL_ThemeBackground param;
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartBorder;
|
| param.m_pGraphics = pGraphics;
|
| if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - param.m_rtPart = rtRelative;
|
| + param.m_rtPart = GetRelativeRect();
|
| pTheme->DrawBackground(¶m);
|
| }
|
|
|
| @@ -649,15 +640,13 @@ void CFWL_Widget::DrawEdge(CFX_Graphics* pGraphics,
|
| CFWL_Part iPartEdge,
|
| IFWL_ThemeProvider* pTheme,
|
| const CFX_Matrix* pMatrix) {
|
| - CFX_RectF rtEdge;
|
| - GetEdgeRect(rtEdge);
|
| CFWL_ThemeBackground param;
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartEdge;
|
| param.m_pGraphics = pGraphics;
|
| if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - param.m_rtPart = rtEdge;
|
| + param.m_rtPart = GetEdgeRect();
|
| pTheme->DrawBackground(¶m);
|
| }
|
|
|
|
|