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/cfwl_scrollbar.h" | 7 #include "xfa/fwl/cfwl_scrollbar.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 param.m_rtPart = m_rtThumb; | 150 param.m_rtPart = m_rtThumb; |
151 pTheme->DrawBackground(¶m); | 151 pTheme->DrawBackground(¶m); |
152 } | 152 } |
153 | 153 |
154 void CFWL_ScrollBar::Layout() { | 154 void CFWL_ScrollBar::Layout() { |
155 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 155 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
156 CFWL_ThemePart part; | 156 CFWL_ThemePart part; |
157 part.m_pWidget = this; | 157 part.m_pWidget = this; |
158 m_fMinThumb = *static_cast<FX_FLOAT*>( | 158 m_fMinThumb = *static_cast<FX_FLOAT*>( |
159 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Size)); | 159 pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Size)); |
160 GetClientRect(m_rtClient); | 160 m_rtClient = GetClientRect(); |
161 CalcButtonLen(); | 161 CalcButtonLen(); |
162 CalcMinButtonRect(m_rtMinBtn); | 162 CalcMinButtonRect(m_rtMinBtn); |
163 CalcMaxButtonRect(m_rtMaxBtn); | 163 CalcMaxButtonRect(m_rtMaxBtn); |
164 CalcThumbButtonRect(m_rtThumb); | 164 CalcThumbButtonRect(m_rtThumb); |
165 CalcMinTrackRect(m_rtMinTrack); | 165 CalcMinTrackRect(m_rtMinTrack); |
166 CalcMaxTrackRect(m_rtMaxTrack); | 166 CalcMaxTrackRect(m_rtMaxTrack); |
167 } | 167 } |
168 | 168 |
169 void CFWL_ScrollBar::CalcButtonLen() { | 169 void CFWL_ScrollBar::CalcButtonLen() { |
170 m_fButtonLen = IsVertical() ? m_rtClient.width : m_rtClient.height; | 170 m_fButtonLen = IsVertical() ? m_rtClient.width : m_rtClient.height; |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 const CFX_RectF& rtItem, | 426 const CFX_RectF& rtItem, |
427 int32_t& iState, | 427 int32_t& iState, |
428 FX_FLOAT fx, | 428 FX_FLOAT fx, |
429 FX_FLOAT fy) { | 429 FX_FLOAT fy) { |
430 if (!rtItem.Contains(fx, fy)) | 430 if (!rtItem.Contains(fx, fy)) |
431 return; | 431 return; |
432 if (iState == CFWL_PartState_Pressed) | 432 if (iState == CFWL_PartState_Pressed) |
433 return; | 433 return; |
434 | 434 |
435 iState = CFWL_PartState_Pressed; | 435 iState = CFWL_PartState_Pressed; |
436 Repaint(&rtItem); | 436 RepaintRect(rtItem); |
437 } | 437 } |
438 | 438 |
439 void CFWL_ScrollBar::DoMouseUp(int32_t iItem, | 439 void CFWL_ScrollBar::DoMouseUp(int32_t iItem, |
440 const CFX_RectF& rtItem, | 440 const CFX_RectF& rtItem, |
441 int32_t& iState, | 441 int32_t& iState, |
442 FX_FLOAT fx, | 442 FX_FLOAT fx, |
443 FX_FLOAT fy) { | 443 FX_FLOAT fy) { |
444 int32_t iNewState = | 444 int32_t iNewState = |
445 rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered : CFWL_PartState_Normal; | 445 rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered : CFWL_PartState_Normal; |
446 if (iState == iNewState) | 446 if (iState == iNewState) |
447 return; | 447 return; |
448 | 448 |
449 iState = iNewState; | 449 iState = iNewState; |
450 Repaint(&rtItem); | 450 RepaintRect(rtItem); |
451 OnScroll(CFWL_EventScroll::Code::EndScroll, m_fTrackPos); | 451 OnScroll(CFWL_EventScroll::Code::EndScroll, m_fTrackPos); |
452 } | 452 } |
453 | 453 |
454 void CFWL_ScrollBar::DoMouseMove(int32_t iItem, | 454 void CFWL_ScrollBar::DoMouseMove(int32_t iItem, |
455 const CFX_RectF& rtItem, | 455 const CFX_RectF& rtItem, |
456 int32_t& iState, | 456 int32_t& iState, |
457 FX_FLOAT fx, | 457 FX_FLOAT fx, |
458 FX_FLOAT fy) { | 458 FX_FLOAT fy) { |
459 if (!m_bMouseDown) { | 459 if (!m_bMouseDown) { |
460 int32_t iNewState = rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered | 460 int32_t iNewState = rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered |
461 : CFWL_PartState_Normal; | 461 : CFWL_PartState_Normal; |
462 if (iState == iNewState) | 462 if (iState == iNewState) |
463 return; | 463 return; |
464 | 464 |
465 iState = iNewState; | 465 iState = iNewState; |
466 Repaint(&rtItem); | 466 RepaintRect(rtItem); |
467 } else if ((2 == iItem) && (m_iThumbButtonState == CFWL_PartState_Pressed)) { | 467 } else if ((2 == iItem) && (m_iThumbButtonState == CFWL_PartState_Pressed)) { |
468 FX_FLOAT fPos = GetTrackPointPos(fx, fy); | 468 FX_FLOAT fPos = GetTrackPointPos(fx, fy); |
469 m_fTrackPos = fPos; | 469 m_fTrackPos = fPos; |
470 OnScroll(CFWL_EventScroll::Code::TrackPos, fPos); | 470 OnScroll(CFWL_EventScroll::Code::TrackPos, fPos); |
471 } | 471 } |
472 } | 472 } |
473 | 473 |
474 void CFWL_ScrollBar::DoMouseLeave(int32_t iItem, | 474 void CFWL_ScrollBar::DoMouseLeave(int32_t iItem, |
475 const CFX_RectF& rtItem, | 475 const CFX_RectF& rtItem, |
476 int32_t& iState) { | 476 int32_t& iState) { |
477 if (iState == CFWL_PartState_Normal) | 477 if (iState == CFWL_PartState_Normal) |
478 return; | 478 return; |
479 | 479 |
480 iState = CFWL_PartState_Normal; | 480 iState = CFWL_PartState_Normal; |
481 Repaint(&rtItem); | 481 RepaintRect(rtItem); |
482 } | 482 } |
483 | 483 |
484 void CFWL_ScrollBar::DoMouseHover(int32_t iItem, | 484 void CFWL_ScrollBar::DoMouseHover(int32_t iItem, |
485 const CFX_RectF& rtItem, | 485 const CFX_RectF& rtItem, |
486 int32_t& iState) { | 486 int32_t& iState) { |
487 if (iState == CFWL_PartState_Hovered) | 487 if (iState == CFWL_PartState_Hovered) |
488 return; | 488 return; |
489 | 489 |
490 iState = CFWL_PartState_Hovered; | 490 iState = CFWL_PartState_Hovered; |
491 Repaint(&rtItem); | 491 RepaintRect(rtItem); |
492 } | 492 } |
493 | 493 |
494 CFWL_ScrollBar::Timer::Timer(CFWL_ScrollBar* pToolTip) : CFWL_Timer(pToolTip) {} | 494 CFWL_ScrollBar::Timer::Timer(CFWL_ScrollBar* pToolTip) : CFWL_Timer(pToolTip) {} |
495 | 495 |
496 void CFWL_ScrollBar::Timer::Run(CFWL_TimerInfo* pTimerInfo) { | 496 void CFWL_ScrollBar::Timer::Run(CFWL_TimerInfo* pTimerInfo) { |
497 CFWL_ScrollBar* pButton = static_cast<CFWL_ScrollBar*>(m_pWidget); | 497 CFWL_ScrollBar* pButton = static_cast<CFWL_ScrollBar*>(m_pWidget); |
498 | 498 |
499 if (pButton->m_pTimerInfo) | 499 if (pButton->m_pTimerInfo) |
500 pButton->m_pTimerInfo->StopTimer(); | 500 pButton->m_pTimerInfo->StopTimer(); |
501 | 501 |
502 if (!pButton->SendEvent()) | 502 if (!pButton->SendEvent()) |
503 pButton->m_pTimerInfo = StartTimer(0, true); | 503 pButton->m_pTimerInfo = StartTimer(0, true); |
504 } | 504 } |
OLD | NEW |