summaryrefslogtreecommitdiff
path: root/xfa/fwl/core/ifwl_scrollbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fwl/core/ifwl_scrollbar.cpp')
-rw-r--r--xfa/fwl/core/ifwl_scrollbar.cpp46
1 files changed, 25 insertions, 21 deletions
diff --git a/xfa/fwl/core/ifwl_scrollbar.cpp b/xfa/fwl/core/ifwl_scrollbar.cpp
index a8e277324f..27a131f45d 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);
+}