| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fwl/core/ifwl_tooltip.h" | 7 #include "xfa/fwl/core/ifwl_tooltip.h" |
| 8 | 8 |
| 9 #include "third_party/base/ptr_util.h" | 9 #include "third_party/base/ptr_util.h" |
| 10 #include "xfa/fde/tto/fde_textout.h" | 10 #include "xfa/fde/tto/fde_textout.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 if (!bAutoSize) { | 43 if (!bAutoSize) { |
| 44 rect = m_pProperties->m_rtWidget; | 44 rect = m_pProperties->m_rtWidget; |
| 45 return; | 45 return; |
| 46 } | 46 } |
| 47 | 47 |
| 48 rect.Set(0, 0, 0, 0); | 48 rect.Set(0, 0, 0, 0); |
| 49 if (!m_pProperties->m_pThemeProvider) | 49 if (!m_pProperties->m_pThemeProvider) |
| 50 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 50 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 51 | 51 |
| 52 CFX_WideString wsCaption; | 52 CFX_WideString wsCaption; |
| 53 IFWL_ToolTipDP* pData = | 53 if (m_pProperties->m_pDataProvider) |
| 54 static_cast<IFWL_ToolTipDP*>(m_pProperties->m_pDataProvider); | 54 m_pProperties->m_pDataProvider->GetCaption(this, wsCaption); |
| 55 if (pData) | |
| 56 pData->GetCaption(this, wsCaption); | |
| 57 | 55 |
| 58 int32_t iLen = wsCaption.GetLength(); | 56 int32_t iLen = wsCaption.GetLength(); |
| 59 if (iLen > 0) { | 57 if (iLen > 0) { |
| 60 CFX_SizeF sz = CalcTextSize(wsCaption, m_pProperties->m_pThemeProvider); | 58 CFX_SizeF sz = CalcTextSize(wsCaption, m_pProperties->m_pThemeProvider); |
| 61 rect.Set(0, 0, sz.x, sz.y); | 59 rect.Set(0, 0, sz.x, sz.y); |
| 62 rect.width += 25; | 60 rect.width += 25; |
| 63 rect.height += 16; | 61 rect.height += 16; |
| 64 } | 62 } |
| 65 IFWL_Widget::GetWidgetRect(rect, true); | 63 IFWL_Widget::GetWidgetRect(rect, true); |
| 66 } | 64 } |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 | 145 |
| 148 void IFWL_ToolTip::UpdateTextOutStyles() { | 146 void IFWL_ToolTip::UpdateTextOutStyles() { |
| 149 m_iTTOAlign = FDE_TTOALIGNMENT_Center; | 147 m_iTTOAlign = FDE_TTOALIGNMENT_Center; |
| 150 m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; | 148 m_dwTTOStyles = FDE_TTOSTYLE_SingleLine; |
| 151 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) | 149 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) |
| 152 m_dwTTOStyles |= FDE_TTOSTYLE_RTL; | 150 m_dwTTOStyles |= FDE_TTOSTYLE_RTL; |
| 153 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_TTP_Multiline) | 151 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_TTP_Multiline) |
| 154 m_dwTTOStyles &= ~FDE_TTOSTYLE_SingleLine; | 152 m_dwTTOStyles &= ~FDE_TTOSTYLE_SingleLine; |
| 155 } | 153 } |
| 156 | 154 |
| 157 void IFWL_ToolTip::SetStates(uint32_t dwStates, bool bSet) { | |
| 158 if ((dwStates & FWL_WGTSTATE_Invisible) && !bSet) { | |
| 159 IFWL_ToolTipDP* pData = | |
| 160 static_cast<IFWL_ToolTipDP*>(m_pProperties->m_pDataProvider); | |
| 161 int32_t nAutoPopDelay = pData->GetAutoPopDelay(this); | |
| 162 m_pTimerInfoHide = m_TimerHide.StartTimer(nAutoPopDelay, false); | |
| 163 } | |
| 164 IFWL_Widget::SetStates(dwStates, bSet); | |
| 165 } | |
| 166 | |
| 167 void IFWL_ToolTip::RefreshToolTipPos() { | 155 void IFWL_ToolTip::RefreshToolTipPos() { |
| 168 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_TTP_NoAnchor) == 0) { | 156 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_TTP_NoAnchor) == 0) { |
| 169 CFX_RectF rtPopup; | 157 CFX_RectF rtPopup; |
| 170 CFX_RectF rtWidget(m_pProperties->m_rtWidget); | 158 CFX_RectF rtWidget(m_pProperties->m_rtWidget); |
| 171 CFX_RectF rtAnchor(m_rtAnchor); | 159 CFX_RectF rtAnchor(m_rtAnchor); |
| 172 rtPopup.Set(0, 0, 0, 0); | 160 rtPopup.Set(0, 0, 0, 0); |
| 173 FX_FLOAT fx = rtAnchor.Center().x + 20; | 161 FX_FLOAT fx = rtAnchor.Center().x + 20; |
| 174 FX_FLOAT fy = rtAnchor.Center().y + 20; | 162 FX_FLOAT fy = rtAnchor.Center().y + 20; |
| 175 rtPopup.Set(fx, fy, rtWidget.Width(), rtWidget.Height()); | 163 rtPopup.Set(fx, fy, rtWidget.Width(), rtWidget.Height()); |
| 176 | 164 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 206 pToolTip->m_pTimerInfoShow = nullptr; | 194 pToolTip->m_pTimerInfoShow = nullptr; |
| 207 return; | 195 return; |
| 208 } | 196 } |
| 209 } | 197 } |
| 210 if (pToolTip->m_pTimerInfoHide == pTimerInfo && pToolTip->m_pTimerInfoHide) { | 198 if (pToolTip->m_pTimerInfoHide == pTimerInfo && pToolTip->m_pTimerInfoHide) { |
| 211 pToolTip->SetStates(FWL_WGTSTATE_Invisible, true); | 199 pToolTip->SetStates(FWL_WGTSTATE_Invisible, true); |
| 212 pToolTip->m_pTimerInfoHide->StopTimer(); | 200 pToolTip->m_pTimerInfoHide->StopTimer(); |
| 213 pToolTip->m_pTimerInfoHide = nullptr; | 201 pToolTip->m_pTimerInfoHide = nullptr; |
| 214 } | 202 } |
| 215 } | 203 } |
| OLD | NEW |