Index: xfa/fwl/core/ifwl_scrollbar.cpp |
diff --git a/xfa/fwl/core/ifwl_scrollbar.cpp b/xfa/fwl/core/ifwl_scrollbar.cpp |
index a8e277324f350d81870f528d54207b55d5500196..27a131f45d985945012d91c3d0a8dc8963c50d12 100644 |
--- a/xfa/fwl/core/ifwl_scrollbar.cpp |
+++ b/xfa/fwl/core/ifwl_scrollbar.cpp |
@@ -16,9 +16,10 @@ |
#define FWL_SCROLLBAR_Elapse 500 |
#define FWL_SCROLLBAR_MinThumb 5 |
-IFWL_ScrollBar::IFWL_ScrollBar(const CFWL_WidgetImpProperties& properties, |
+IFWL_ScrollBar::IFWL_ScrollBar(const IFWL_App* app, |
+ const CFWL_WidgetImpProperties& properties, |
IFWL_Widget* pOuter) |
- : IFWL_Widget(properties, pOuter), |
+ : IFWL_Widget(app, properties, pOuter), |
m_pTimerInfo(nullptr), |
m_fRangeMin(0), |
m_fRangeMax(-1), |
@@ -42,7 +43,8 @@ IFWL_ScrollBar::IFWL_ScrollBar(const CFWL_WidgetImpProperties& properties, |
m_fButtonLen(0), |
m_bMinSize(FALSE), |
m_bCustomLayout(false), |
- m_fMinThumb(FWL_SCROLLBAR_MinThumb) { |
+ m_fMinThumb(FWL_SCROLLBAR_MinThumb), |
+ m_Timer(this) { |
m_rtClient.Reset(); |
m_rtThumb.Reset(); |
m_rtMinBtn.Reset(); |
@@ -53,16 +55,9 @@ IFWL_ScrollBar::IFWL_ScrollBar(const CFWL_WidgetImpProperties& properties, |
IFWL_ScrollBar::~IFWL_ScrollBar() {} |
-FWL_Type IFWL_ScrollBar::GetClassID() const { |
- return FWL_Type::ScrollBar; |
-} |
- |
-FWL_Error IFWL_ScrollBar::Initialize() { |
- if (IFWL_Widget::Initialize() != FWL_Error::Succeeded) |
- return FWL_Error::Indefinite; |
- |
+void IFWL_ScrollBar::Initialize() { |
+ IFWL_Widget::Initialize(); |
m_pDelegate = new CFWL_ScrollBarImpDelegate(this); |
- return FWL_Error::Succeeded; |
} |
void IFWL_ScrollBar::Finalize() { |
@@ -71,6 +66,10 @@ void IFWL_ScrollBar::Finalize() { |
IFWL_Widget::Finalize(); |
} |
+FWL_Type IFWL_ScrollBar::GetClassID() const { |
+ return FWL_Type::ScrollBar; |
+} |
+ |
FWL_Error IFWL_ScrollBar::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { |
if (bAutoSize) { |
rect.Set(0, 0, 0, 0); |
@@ -196,14 +195,6 @@ FX_BOOL IFWL_ScrollBar::DoScroll(uint32_t dwCode, FX_FLOAT fPos) { |
return OnScroll(dwCode, fPos); |
} |
-void IFWL_ScrollBar::Run(IFWL_TimerInfo* pTimerInfo) { |
- if (m_pTimerInfo) |
- m_pTimerInfo->StopTimer(); |
- |
- if (!SendEvent()) |
- m_pTimerInfo = StartTimer(0, true); |
-} |
- |
FWL_Error IFWL_ScrollBar::SetOuter(IFWL_Widget* pOuter) { |
m_pOuter = pOuter; |
return FWL_Error::Succeeded; |
@@ -660,7 +651,8 @@ void CFWL_ScrollBarImpDelegate::OnLButtonDown(uint32_t dwFlags, |
} |
} |
if (!m_pOwner->SendEvent()) |
- m_pOwner->m_pTimerInfo = m_pOwner->StartTimer(FWL_SCROLLBAR_Elapse, true); |
+ m_pOwner->m_pTimerInfo = |
+ m_pOwner->m_Timer.StartTimer(FWL_SCROLLBAR_Elapse, true); |
} |
void CFWL_ScrollBarImpDelegate::OnLButtonUp(uint32_t dwFlags, |
@@ -774,3 +766,15 @@ void CFWL_ScrollBarImpDelegate::DoMouseHover(int32_t iItem, |
iState = CFWL_PartState_Hovered; |
m_pOwner->Repaint(&rtItem); |
} |
+ |
+IFWL_ScrollBar::Timer::Timer(IFWL_ScrollBar* pToolTip) : IFWL_Timer(pToolTip) {} |
+ |
+void IFWL_ScrollBar::Timer::Run(IFWL_TimerInfo* pTimerInfo) { |
+ IFWL_ScrollBar* pButton = static_cast<IFWL_ScrollBar*>(m_pWidget); |
+ |
+ if (pButton->m_pTimerInfo) |
+ pButton->m_pTimerInfo->StopTimer(); |
+ |
+ if (!pButton->SendEvent()) |
+ pButton->m_pTimerInfo = StartTimer(0, true); |
+} |