| Index: xfa/fwl/core/ifwl_widget.cpp
|
| diff --git a/xfa/fwl/core/ifwl_widget.cpp b/xfa/fwl/core/ifwl_widget.cpp
|
| index c9decffe246050d15c027f370b3de6ac4038ef13..b885210015f2cebcaf1fdabcb8b644fa76769ccd 100644
|
| --- a/xfa/fwl/core/ifwl_widget.cpp
|
| +++ b/xfa/fwl/core/ifwl_widget.cpp
|
| @@ -61,17 +61,18 @@ bool IFWL_Widget::IsInstance(const CFX_WideStringC& wsClass) const {
|
| }
|
|
|
| void IFWL_Widget::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
|
| - if (bAutoSize) {
|
| - if (HasEdge()) {
|
| - FX_FLOAT fEdge = GetEdgeWidth();
|
| - rect.Inflate(fEdge, fEdge);
|
| - }
|
| - if (HasBorder()) {
|
| - FX_FLOAT fBorder = GetBorderSize();
|
| - rect.Inflate(fBorder, fBorder);
|
| - }
|
| - } else {
|
| + if (!bAutoSize) {
|
| rect = m_pProperties->m_rtWidget;
|
| + return;
|
| + }
|
| +
|
| + if (HasEdge()) {
|
| + FX_FLOAT fEdge = GetEdgeWidth();
|
| + rect.Inflate(fEdge, fEdge);
|
| + }
|
| + if (HasBorder()) {
|
| + FX_FLOAT fBorder = GetBorderSize();
|
| + rect.Inflate(fBorder, fBorder);
|
| }
|
| }
|
|
|
| @@ -233,31 +234,32 @@ void IFWL_Widget::TransformTo(IFWL_Widget* pWidget,
|
| void IFWL_Widget::GetMatrix(CFX_Matrix& matrix, bool bGlobal) {
|
| if (!m_pProperties)
|
| return;
|
| - if (bGlobal) {
|
| - IFWL_Widget* parent = GetParent();
|
| - CFX_ArrayTemplate<IFWL_Widget*> parents;
|
| - while (parent) {
|
| - parents.Add(parent);
|
| - parent = parent->GetParent();
|
| - }
|
| - matrix.SetIdentity();
|
| - CFX_Matrix ctmOnParent;
|
| - CFX_RectF rect;
|
| - int32_t count = parents.GetSize();
|
| - for (int32_t i = count - 2; i >= 0; i--) {
|
| - parent = parents.GetAt(i);
|
| - parent->GetMatrix(ctmOnParent, false);
|
| - parent->GetWidgetRect(rect);
|
| - matrix.Concat(ctmOnParent, true);
|
| - matrix.Translate(rect.left, rect.top, true);
|
| - }
|
| - CFX_Matrix m;
|
| - m.SetIdentity();
|
| - matrix.Concat(m, true);
|
| - parents.RemoveAll();
|
| - } else {
|
| + if (!bGlobal) {
|
| matrix.SetIdentity();
|
| + return;
|
| + }
|
| +
|
| + IFWL_Widget* parent = GetParent();
|
| + CFX_ArrayTemplate<IFWL_Widget*> parents;
|
| + while (parent) {
|
| + parents.Add(parent);
|
| + parent = parent->GetParent();
|
| + }
|
| + matrix.SetIdentity();
|
| + CFX_Matrix ctmOnParent;
|
| + CFX_RectF rect;
|
| + int32_t count = parents.GetSize();
|
| + for (int32_t i = count - 2; i >= 0; i--) {
|
| + parent = parents.GetAt(i);
|
| + parent->GetMatrix(ctmOnParent, false);
|
| + parent->GetWidgetRect(rect);
|
| + matrix.Concat(ctmOnParent, true);
|
| + matrix.Translate(rect.left, rect.top, true);
|
| }
|
| + CFX_Matrix m;
|
| + m.SetIdentity();
|
| + matrix.Concat(m, true);
|
| + parents.RemoveAll();
|
| }
|
|
|
| void IFWL_Widget::DrawWidget(CFX_Graphics* pGraphics,
|
| @@ -317,15 +319,16 @@ void* IFWL_Widget::GetThemeCapacity(CFWL_WidgetCapacity dwCapacity) {
|
| IFWL_ThemeProvider* pTheme = GetAvailableTheme();
|
| if (!pTheme)
|
| return nullptr;
|
| +
|
| CFWL_ThemePart part;
|
| part.m_pWidget = this;
|
| return pTheme->GetCapacity(&part, dwCapacity);
|
| }
|
|
|
| IFWL_ThemeProvider* IFWL_Widget::GetAvailableTheme() {
|
| - if (m_pProperties->m_pThemeProvider) {
|
| + if (m_pProperties->m_pThemeProvider)
|
| return m_pProperties->m_pThemeProvider;
|
| - }
|
| +
|
| IFWL_Widget* pUp = this;
|
| do {
|
| pUp = (pUp->GetStyles() & FWL_WGTSTYLE_Popup)
|
| @@ -344,9 +347,9 @@ IFWL_Widget* IFWL_Widget::GetRootOuter() {
|
| IFWL_Widget* pRet = m_pOuter;
|
| if (!pRet)
|
| return nullptr;
|
| - while (IFWL_Widget* pOuter = pRet->GetOuter()) {
|
| +
|
| + while (IFWL_Widget* pOuter = pRet->GetOuter())
|
| pRet = pOuter;
|
| - }
|
| return pRet;
|
| }
|
|
|
| @@ -400,17 +403,17 @@ void IFWL_Widget::SetFocus(bool bFocus) {
|
| return;
|
|
|
| IFWL_Widget* curFocus = pDriver->GetFocus();
|
| - if (bFocus && curFocus != this) {
|
| + if (bFocus && curFocus != this)
|
| pDriver->SetFocus(this);
|
| - } else if (!bFocus && curFocus == this) {
|
| + else if (!bFocus && curFocus == this)
|
| pDriver->SetFocus(nullptr);
|
| - }
|
| }
|
|
|
| void IFWL_Widget::SetGrab(bool bSet) {
|
| const IFWL_App* pApp = GetOwnerApp();
|
| if (!pApp)
|
| return;
|
| +
|
| CFWL_NoteDriver* pDriver =
|
| static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver());
|
| pDriver->SetGrab(this, bSet);
|
| @@ -479,19 +482,19 @@ bool IFWL_Widget::GetPopupPosComboBox(FX_FLOAT fMinHeight,
|
| FX_FLOAT fy = 0;
|
|
|
| FX_FLOAT fPopHeight = rtPopup.height;
|
| - if (rtPopup.height > fMaxHeight) {
|
| + if (rtPopup.height > fMaxHeight)
|
| fPopHeight = fMaxHeight;
|
| - } else if (rtPopup.height < fMinHeight) {
|
| + else if (rtPopup.height < fMinHeight)
|
| fPopHeight = fMinHeight;
|
| - }
|
| +
|
| FX_FLOAT fWidth = std::max(rtAnchor.width, rtPopup.width);
|
| FX_FLOAT fBottom = rtAnchor.bottom() + fPopHeight;
|
| TransformTo(nullptr, fx, fy);
|
| - if (fBottom + fy > 0.0f) {
|
| + if (fBottom + fy > 0.0f)
|
| rtPopup.Set(rtAnchor.left, rtAnchor.top - fPopHeight, fWidth, fPopHeight);
|
| - } else {
|
| + else
|
| rtPopup.Set(rtAnchor.left, rtAnchor.bottom(), fWidth, fPopHeight);
|
| - }
|
| +
|
| rtPopup.Offset(fx, fy);
|
| return true;
|
| }
|
| @@ -543,6 +546,7 @@ void IFWL_Widget::UnregisterEventTarget() {
|
| void IFWL_Widget::DispatchKeyEvent(CFWL_MsgKey* pNote) {
|
| if (!pNote)
|
| return;
|
| +
|
| CFWL_EvtKey* pEvent = new CFWL_EvtKey;
|
| pEvent->m_pSrcTarget = this;
|
| pEvent->m_dwCmd = pNote->m_dwCmd;
|
| @@ -560,6 +564,7 @@ void IFWL_Widget::DispatchEvent(CFWL_Event* pEvent) {
|
| const IFWL_App* pApp = GetOwnerApp();
|
| if (!pApp)
|
| return;
|
| +
|
| CFWL_NoteDriver* pNoteDriver = pApp->GetNoteDriver();
|
| if (!pNoteDriver)
|
| return;
|
| @@ -587,9 +592,8 @@ void IFWL_Widget::DrawBackground(CFX_Graphics* pGraphics,
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartBk;
|
| param.m_pGraphics = pGraphics;
|
| - if (pMatrix) {
|
| + if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - }
|
| param.m_rtPart = rtRelative;
|
| pTheme->DrawBackground(¶m);
|
| }
|
| @@ -604,9 +608,8 @@ void IFWL_Widget::DrawBorder(CFX_Graphics* pGraphics,
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartBorder;
|
| param.m_pGraphics = pGraphics;
|
| - if (pMatrix) {
|
| + if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - }
|
| param.m_rtPart = rtRelative;
|
| pTheme->DrawBackground(¶m);
|
| }
|
| @@ -621,9 +624,8 @@ void IFWL_Widget::DrawEdge(CFX_Graphics* pGraphics,
|
| param.m_pWidget = this;
|
| param.m_iPart = iPartEdge;
|
| param.m_pGraphics = pGraphics;
|
| - if (pMatrix) {
|
| + if (pMatrix)
|
| param.m_matrix.Concat(*pMatrix, true);
|
| - }
|
| param.m_rtPart = rtEdge;
|
| pTheme->DrawBackground(¶m);
|
| }
|
|
|