Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: xfa/fwl/core/cfwl_scrollbar.cpp

Issue 2530993002: Cleanup FWL Event and Message code. (Closed)
Patch Set: Review feedback Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/cfwl_scrollbar.h" 7 #include "xfa/fwl/core/cfwl_scrollbar.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 DrawThumb(pGraphics, pTheme, pMatrix); 108 DrawThumb(pGraphics, pTheme, pMatrix);
109 } 109 }
110 110
111 void CFWL_ScrollBar::SetTrackPos(FX_FLOAT fTrackPos) { 111 void CFWL_ScrollBar::SetTrackPos(FX_FLOAT fTrackPos) {
112 m_fTrackPos = fTrackPos; 112 m_fTrackPos = fTrackPos;
113 CalcThumbButtonRect(m_rtThumb); 113 CalcThumbButtonRect(m_rtThumb);
114 CalcMinTrackRect(m_rtMinTrack); 114 CalcMinTrackRect(m_rtMinTrack);
115 CalcMaxTrackRect(m_rtMaxTrack); 115 CalcMaxTrackRect(m_rtMaxTrack);
116 } 116 }
117 117
118 bool CFWL_ScrollBar::DoScroll(FWL_SCBCODE dwCode, FX_FLOAT fPos) { 118 bool CFWL_ScrollBar::DoScroll(CFWL_EvtScroll::Code dwCode, FX_FLOAT fPos) {
119 if (dwCode == FWL_SCBCODE::None) 119 if (dwCode == CFWL_EvtScroll::Code::None)
120 return false; 120 return false;
121 return OnScroll(dwCode, fPos); 121 return OnScroll(dwCode, fPos);
122 } 122 }
123 123
124 void CFWL_ScrollBar::DrawTrack(CFX_Graphics* pGraphics, 124 void CFWL_ScrollBar::DrawTrack(CFX_Graphics* pGraphics,
125 IFWL_ThemeProvider* pTheme, 125 IFWL_ThemeProvider* pTheme,
126 bool bLower, 126 bool bLower,
127 const CFX_Matrix* pMatrix) { 127 const CFX_Matrix* pMatrix) {
128 CFWL_ThemeBackground param; 128 CFWL_ThemeBackground param;
129 param.m_pWidget = this; 129 param.m_pWidget = this;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 } 344 }
345 345
346 FX_FLOAT fMaxTrackWidth = m_rtMaxTrack.width - fW - m_rtMaxBtn.width + 2; 346 FX_FLOAT fMaxTrackWidth = m_rtMaxTrack.width - fW - m_rtMaxBtn.width + 2;
347 fMaxTrackWidth = (fMaxTrackWidth >= 0.0f) ? fMaxTrackWidth : 0.0f; 347 fMaxTrackWidth = (fMaxTrackWidth >= 0.0f) ? fMaxTrackWidth : 0.0f;
348 rect.Set(m_rtMaxTrack.left + fW, m_rtMaxTrack.top, fMaxTrackWidth, 348 rect.Set(m_rtMaxTrack.left + fW, m_rtMaxTrack.top, fMaxTrackWidth,
349 m_rtMaxTrack.height); 349 m_rtMaxTrack.height);
350 } 350 }
351 351
352 bool CFWL_ScrollBar::SendEvent() { 352 bool CFWL_ScrollBar::SendEvent() {
353 if (m_iMinButtonState == CFWL_PartState_Pressed) { 353 if (m_iMinButtonState == CFWL_PartState_Pressed) {
354 DoScroll(FWL_SCBCODE::StepBackward, m_fTrackPos); 354 DoScroll(CFWL_EvtScroll::Code::StepBackward, m_fTrackPos);
355 return false; 355 return false;
356 } 356 }
357 if (m_iMaxButtonState == CFWL_PartState_Pressed) { 357 if (m_iMaxButtonState == CFWL_PartState_Pressed) {
358 DoScroll(FWL_SCBCODE::StepForward, m_fTrackPos); 358 DoScroll(CFWL_EvtScroll::Code::StepForward, m_fTrackPos);
359 return false; 359 return false;
360 } 360 }
361 if (m_iMinTrackState == CFWL_PartState_Pressed) { 361 if (m_iMinTrackState == CFWL_PartState_Pressed) {
362 DoScroll(FWL_SCBCODE::PageBackward, m_fTrackPos); 362 DoScroll(CFWL_EvtScroll::Code::PageBackward, m_fTrackPos);
363 return m_rtThumb.Contains(m_cpTrackPointX, m_cpTrackPointY); 363 return m_rtThumb.Contains(m_cpTrackPointX, m_cpTrackPointY);
364 } 364 }
365 if (m_iMaxTrackState == CFWL_PartState_Pressed) { 365 if (m_iMaxTrackState == CFWL_PartState_Pressed) {
366 DoScroll(FWL_SCBCODE::PageForward, m_fTrackPos); 366 DoScroll(CFWL_EvtScroll::Code::PageForward, m_fTrackPos);
367 return m_rtThumb.Contains(m_cpTrackPointX, m_cpTrackPointY); 367 return m_rtThumb.Contains(m_cpTrackPointX, m_cpTrackPointY);
368 } 368 }
369 if (m_iMouseWheel) { 369 if (m_iMouseWheel) {
370 FWL_SCBCODE dwCode = m_iMouseWheel < 0 ? FWL_SCBCODE::StepForward 370 CFWL_EvtScroll::Code dwCode = m_iMouseWheel < 0
371 : FWL_SCBCODE::StepBackward; 371 ? CFWL_EvtScroll::Code::StepForward
372 : CFWL_EvtScroll::Code::StepBackward;
372 DoScroll(dwCode, m_fTrackPos); 373 DoScroll(dwCode, m_fTrackPos);
373 } 374 }
374 return true; 375 return true;
375 } 376 }
376 377
377 bool CFWL_ScrollBar::OnScroll(FWL_SCBCODE dwCode, FX_FLOAT fPos) { 378 bool CFWL_ScrollBar::OnScroll(CFWL_EvtScroll::Code dwCode, FX_FLOAT fPos) {
378 bool bRet = true; 379 CFWL_EvtScroll ev(this);
379 CFWL_EvtScroll ev;
380 ev.m_iScrollCode = dwCode; 380 ev.m_iScrollCode = dwCode;
381 ev.m_pSrcTarget = this;
382 ev.m_fPos = fPos; 381 ev.m_fPos = fPos;
383 ev.m_pRet = &bRet;
384 DispatchEvent(&ev); 382 DispatchEvent(&ev);
385 return bRet; 383 return true;
386 } 384 }
387 385
388 void CFWL_ScrollBar::OnProcessMessage(CFWL_Message* pMessage) { 386 void CFWL_ScrollBar::OnProcessMessage(CFWL_Message* pMessage) {
389 if (!pMessage) 387 if (!pMessage)
390 return; 388 return;
391 389
392 CFWL_MessageType dwMsgCode = pMessage->GetClassID(); 390 CFWL_Message::Type type = pMessage->GetType();
393 if (dwMsgCode == CFWL_MessageType::Mouse) { 391 if (type == CFWL_Message::Type::Mouse) {
394 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); 392 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage);
395 switch (pMsg->m_dwCmd) { 393 switch (pMsg->m_dwCmd) {
396 case FWL_MouseCommand::LeftButtonDown: 394 case FWL_MouseCommand::LeftButtonDown:
397 OnLButtonDown(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy); 395 OnLButtonDown(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy);
398 break; 396 break;
399 case FWL_MouseCommand::LeftButtonUp: 397 case FWL_MouseCommand::LeftButtonUp:
400 OnLButtonUp(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy); 398 OnLButtonUp(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy);
401 break; 399 break;
402 case FWL_MouseCommand::Move: 400 case FWL_MouseCommand::Move:
403 OnMouseMove(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy); 401 OnMouseMove(pMsg->m_dwFlags, pMsg->m_fx, pMsg->m_fy);
404 break; 402 break;
405 case FWL_MouseCommand::Leave: 403 case FWL_MouseCommand::Leave:
406 OnMouseLeave(); 404 OnMouseLeave();
407 break; 405 break;
408 default: 406 default:
409 break; 407 break;
410 } 408 }
411 } else if (dwMsgCode == CFWL_MessageType::MouseWheel) { 409 } else if (type == CFWL_Message::Type::MouseWheel) {
412 CFWL_MsgMouseWheel* pMsg = static_cast<CFWL_MsgMouseWheel*>(pMessage); 410 CFWL_MsgMouseWheel* pMsg = static_cast<CFWL_MsgMouseWheel*>(pMessage);
413 OnMouseWheel(pMsg->m_fx, pMsg->m_fy, pMsg->m_dwFlags, pMsg->m_fDeltaX, 411 OnMouseWheel(pMsg->m_fx, pMsg->m_fy, pMsg->m_dwFlags, pMsg->m_fDeltaX,
414 pMsg->m_fDeltaY); 412 pMsg->m_fDeltaY);
415 } 413 }
416 } 414 }
417 415
418 void CFWL_ScrollBar::OnDrawWidget(CFX_Graphics* pGraphics, 416 void CFWL_ScrollBar::OnDrawWidget(CFX_Graphics* pGraphics,
419 const CFX_Matrix* pMatrix) { 417 const CFX_Matrix* pMatrix) {
420 DrawWidget(pGraphics, pMatrix); 418 DrawWidget(pGraphics, pMatrix);
421 } 419 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 int32_t& iState, 498 int32_t& iState,
501 FX_FLOAT fx, 499 FX_FLOAT fx,
502 FX_FLOAT fy) { 500 FX_FLOAT fy) {
503 int32_t iNewState = 501 int32_t iNewState =
504 rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered : CFWL_PartState_Normal; 502 rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered : CFWL_PartState_Normal;
505 if (iState == iNewState) 503 if (iState == iNewState)
506 return; 504 return;
507 505
508 iState = iNewState; 506 iState = iNewState;
509 Repaint(&rtItem); 507 Repaint(&rtItem);
510 OnScroll(FWL_SCBCODE::EndScroll, m_fTrackPos); 508 OnScroll(CFWL_EvtScroll::Code::EndScroll, m_fTrackPos);
511 } 509 }
512 510
513 void CFWL_ScrollBar::DoMouseMove(int32_t iItem, 511 void CFWL_ScrollBar::DoMouseMove(int32_t iItem,
514 const CFX_RectF& rtItem, 512 const CFX_RectF& rtItem,
515 int32_t& iState, 513 int32_t& iState,
516 FX_FLOAT fx, 514 FX_FLOAT fx,
517 FX_FLOAT fy) { 515 FX_FLOAT fy) {
518 if (!m_bMouseDown) { 516 if (!m_bMouseDown) {
519 int32_t iNewState = rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered 517 int32_t iNewState = rtItem.Contains(fx, fy) ? CFWL_PartState_Hovered
520 : CFWL_PartState_Normal; 518 : CFWL_PartState_Normal;
521 if (iState == iNewState) 519 if (iState == iNewState)
522 return; 520 return;
523 521
524 iState = iNewState; 522 iState = iNewState;
525 Repaint(&rtItem); 523 Repaint(&rtItem);
526 } else if ((2 == iItem) && (m_iThumbButtonState == CFWL_PartState_Pressed)) { 524 } else if ((2 == iItem) && (m_iThumbButtonState == CFWL_PartState_Pressed)) {
527 FX_FLOAT fPos = GetTrackPointPos(fx, fy); 525 FX_FLOAT fPos = GetTrackPointPos(fx, fy);
528 m_fTrackPos = fPos; 526 m_fTrackPos = fPos;
529 OnScroll(FWL_SCBCODE::TrackPos, fPos); 527 OnScroll(CFWL_EvtScroll::Code::TrackPos, fPos);
530 } 528 }
531 } 529 }
532 530
533 void CFWL_ScrollBar::DoMouseLeave(int32_t iItem, 531 void CFWL_ScrollBar::DoMouseLeave(int32_t iItem,
534 const CFX_RectF& rtItem, 532 const CFX_RectF& rtItem,
535 int32_t& iState) { 533 int32_t& iState) {
536 if (iState == CFWL_PartState_Normal) 534 if (iState == CFWL_PartState_Normal)
537 return; 535 return;
538 536
539 iState = CFWL_PartState_Normal; 537 iState = CFWL_PartState_Normal;
(...skipping 14 matching lines...) Expand all
554 552
555 void CFWL_ScrollBar::Timer::Run(CFWL_TimerInfo* pTimerInfo) { 553 void CFWL_ScrollBar::Timer::Run(CFWL_TimerInfo* pTimerInfo) {
556 CFWL_ScrollBar* pButton = static_cast<CFWL_ScrollBar*>(m_pWidget); 554 CFWL_ScrollBar* pButton = static_cast<CFWL_ScrollBar*>(m_pWidget);
557 555
558 if (pButton->m_pTimerInfo) 556 if (pButton->m_pTimerInfo)
559 pButton->m_pTimerInfo->StopTimer(); 557 pButton->m_pTimerInfo->StopTimer();
560 558
561 if (!pButton->SendEvent()) 559 if (!pButton->SendEvent())
562 pButton->m_pTimerInfo = StartTimer(0, true); 560 pButton->m_pTimerInfo = StartTimer(0, true);
563 } 561 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698