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

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

Issue 2491103002: IFWL method and param cleanup (Closed)
Patch Set: Review feedback Created 4 years, 1 month 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
« no previous file with comments | « xfa/fwl/core/ifwl_form.h ('k') | xfa/fxfa/app/xfa_fftextedit.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/ifwl_form.h" 7 #include "xfa/fwl/core/ifwl_form.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 23 matching lines...) Expand all
34 } // namespace 34 } // namespace
35 35
36 RestoreInfo::RestoreInfo() {} 36 RestoreInfo::RestoreInfo() {}
37 37
38 RestoreInfo::~RestoreInfo() {} 38 RestoreInfo::~RestoreInfo() {}
39 39
40 IFWL_Form::IFWL_Form(const IFWL_App* app, 40 IFWL_Form::IFWL_Form(const IFWL_App* app,
41 std::unique_ptr<CFWL_WidgetProperties> properties, 41 std::unique_ptr<CFWL_WidgetProperties> properties,
42 IFWL_Widget* pOuter) 42 IFWL_Widget* pOuter)
43 : IFWL_Widget(app, std::move(properties), pOuter), 43 : IFWL_Widget(app, std::move(properties), pOuter),
44 #if (_FX_OS_ == _FX_MACOSX_)
45 m_bMouseIn(false),
46 #endif
44 m_pCloseBox(nullptr), 47 m_pCloseBox(nullptr),
45 m_pMinBox(nullptr), 48 m_pMinBox(nullptr),
46 m_pMaxBox(nullptr), 49 m_pMaxBox(nullptr),
47 m_pCaptionBox(nullptr), 50 m_pCaptionBox(nullptr),
48 m_pSubFocus(nullptr), 51 m_pSubFocus(nullptr),
49 m_fCXBorder(0), 52 m_fCXBorder(0),
50 m_fCYBorder(0), 53 m_fCYBorder(0),
51 m_iCaptureBtn(-1), 54 m_iCaptureBtn(-1),
52 m_iSysBox(0), 55 m_iSysBox(0),
53 m_eResizeType(FORM_RESIZETYPE_None), 56 m_eResizeType(FORM_RESIZETYPE_None),
54 m_bLButtonDown(false), 57 m_bLButtonDown(false),
55 m_bMaximized(false), 58 m_bMaximized(false),
56 m_bSetMaximize(false), 59 m_bSetMaximize(false),
57 m_bCustomizeLayout(false), 60 m_bCustomizeLayout(false),
58 m_eFormSize(FWL_FORMSIZE_Manual),
59 m_bDoModalFlag(false), 61 m_bDoModalFlag(false),
60 m_pBigIcon(nullptr), 62 m_pBigIcon(nullptr),
61 m_pSmallIcon(nullptr), 63 m_pSmallIcon(nullptr) {
62 m_bMouseIn(false) {
63 m_rtRelative.Reset(); 64 m_rtRelative.Reset();
64 m_rtCaption.Reset(); 65 m_rtCaption.Reset();
65 m_rtRestore.Reset(); 66 m_rtRestore.Reset();
66 m_rtCaptionText.Reset(); 67 m_rtCaptionText.Reset();
67 m_rtIcon.Reset(); 68 m_rtIcon.Reset();
68 69
69 RegisterForm(); 70 RegisterForm();
70 RegisterEventTarget(); 71 RegisterEventTarget();
71 } 72 }
72 73
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (m_pMinBox) { 313 if (m_pMinBox) {
313 param.m_iPart = CFWL_Part::MinimizeBox; 314 param.m_iPart = CFWL_Part::MinimizeBox;
314 param.m_dwStates = m_pMinBox->GetPartState(); 315 param.m_dwStates = m_pMinBox->GetPartState();
315 param.m_rtPart = m_pMinBox->m_rtBtn; 316 param.m_rtPart = m_pMinBox->m_rtBtn;
316 pTheme->DrawBackground(&param); 317 pTheme->DrawBackground(&param);
317 } 318 }
318 } 319 }
319 #endif 320 #endif
320 } 321 }
321 322
322 FWL_FORMSIZE IFWL_Form::GetFormSize() {
323 return m_eFormSize;
324 }
325
326 FWL_Error IFWL_Form::SetFormSize(FWL_FORMSIZE eFormSize) {
327 m_eFormSize = eFormSize;
328 return FWL_Error::Succeeded;
329 }
330
331 IFWL_Widget* IFWL_Form::DoModal() { 323 IFWL_Widget* IFWL_Form::DoModal() {
332 const IFWL_App* pApp = GetOwnerApp(); 324 const IFWL_App* pApp = GetOwnerApp();
333 if (!pApp) 325 if (!pApp)
334 return nullptr; 326 return nullptr;
335 327
336 CFWL_NoteDriver* pDriver = pApp->GetNoteDriver(); 328 CFWL_NoteDriver* pDriver = pApp->GetNoteDriver();
337 if (!pDriver) 329 if (!pDriver)
338 return nullptr; 330 return nullptr;
339 331
340 m_pNoteLoop.reset(new CFWL_NoteLoop(this)); 332 m_pNoteLoop.reset(new CFWL_NoteLoop(this));
341 pDriver->PushNoteLoop(m_pNoteLoop.get()); 333 pDriver->PushNoteLoop(m_pNoteLoop.get());
342 m_bDoModalFlag = true; 334 m_bDoModalFlag = true;
343 SetStates(FWL_WGTSTATE_Invisible, false); 335 SetStates(FWL_WGTSTATE_Invisible, false);
344 pDriver->Run(); 336 pDriver->Run();
345 #if (_FX_OS_ == _FX_MACOSX_) 337 #if (_FX_OS_ == _FX_MACOSX_)
346 #else 338 #else
347 pDriver->PopNoteLoop(); 339 pDriver->PopNoteLoop();
348 #endif 340 #endif
349 m_pNoteLoop.reset(); 341 m_pNoteLoop.reset();
350 return nullptr; 342 return nullptr;
351 } 343 }
352 344
353 IFWL_Widget* IFWL_Form::DoModal(uint32_t& dwCommandID) { 345 void IFWL_Form::EndDoModal() {
354 return DoModal();
355 }
356
357 FWL_Error IFWL_Form::EndDoModal() {
358 if (!m_pNoteLoop) 346 if (!m_pNoteLoop)
359 return FWL_Error::Indefinite; 347 return;
360 m_bDoModalFlag = false; 348 m_bDoModalFlag = false;
361 #if (_FX_OS_ == _FX_MACOSX_) 349 #if (_FX_OS_ == _FX_MACOSX_)
362 m_pNoteLoop->EndModalLoop(); 350 m_pNoteLoop->EndModalLoop();
363 const IFWL_App* pApp = GetOwnerApp(); 351 const IFWL_App* pApp = GetOwnerApp();
364 if (!pApp) 352 if (!pApp)
365 return FWL_Error::Indefinite; 353 return;
366 354
367 CFWL_NoteDriver* pDriver = 355 CFWL_NoteDriver* pDriver =
368 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); 356 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver());
369 if (!pDriver) 357 if (!pDriver)
370 return FWL_Error::Indefinite; 358 return;
371 359
372 pDriver->PopNoteLoop(); 360 pDriver->PopNoteLoop();
373 SetStates(FWL_WGTSTATE_Invisible, true); 361 SetStates(FWL_WGTSTATE_Invisible, true);
374 return FWL_Error::Succeeded;
375 #else 362 #else
376 SetStates(FWL_WGTSTATE_Invisible, true); 363 SetStates(FWL_WGTSTATE_Invisible, true);
377 return m_pNoteLoop->EndModalLoop(); 364 m_pNoteLoop->EndModalLoop();
378 #endif 365 #endif
379 } 366 }
380 367
381 FWL_Error IFWL_Form::SetBorderRegion(CFX_Path* pPath) {
382 return FWL_Error::Succeeded;
383 }
384 void IFWL_Form::DrawBackground(CFX_Graphics* pGraphics, 368 void IFWL_Form::DrawBackground(CFX_Graphics* pGraphics,
385 IFWL_ThemeProvider* pTheme) { 369 IFWL_ThemeProvider* pTheme) {
386 CFWL_ThemeBackground param; 370 CFWL_ThemeBackground param;
387 param.m_pWidget = this; 371 param.m_pWidget = this;
388 param.m_iPart = CFWL_Part::Background; 372 param.m_iPart = CFWL_Part::Background;
389 param.m_pGraphics = pGraphics; 373 param.m_pGraphics = pGraphics;
390 param.m_rtPart = m_rtRelative; 374 param.m_rtPart = m_rtRelative;
391 param.m_rtPart.Deflate(m_fCYBorder, m_rtCaption.height, m_fCYBorder, 375 param.m_rtPart.Deflate(m_fCYBorder, m_rtCaption.height, m_fCYBorder,
392 m_fCXBorder); 376 m_fCXBorder);
393 pTheme->DrawBackground(&param); 377 pTheme->DrawBackground(&param);
394 } 378 }
395 IFWL_Widget* IFWL_Form::GetSubFocus() {
396 return m_pSubFocus;
397 }
398 void IFWL_Form::SetSubFocus(IFWL_Widget* pWidget) {
399 m_pSubFocus = pWidget;
400 }
401
402 void IFWL_Form::ShowChildWidget(IFWL_Widget* pParent) {
403 const IFWL_App* pApp = pParent->GetOwnerApp();
404 if (!pApp)
405 return;
406
407 CFWL_WidgetMgr* pWidgetMgr = pApp->GetWidgetMgr();
408 if (!pWidgetMgr)
409 return;
410
411 IFWL_Widget* pChild = pWidgetMgr->GetFirstChildWidget(pParent);
412 while (pChild) {
413 ShowChildWidget(pChild);
414 pChild = pWidgetMgr->GetNextSiblingWidget(pChild);
415 }
416 }
417 379
418 void IFWL_Form::RemoveSysButtons() { 380 void IFWL_Form::RemoveSysButtons() {
419 m_rtCaption.Reset(); 381 m_rtCaption.Reset();
420 delete m_pCloseBox; 382 delete m_pCloseBox;
421 m_pCloseBox = nullptr; 383 m_pCloseBox = nullptr;
422 delete m_pMinBox; 384 delete m_pMinBox;
423 m_pMinBox = nullptr; 385 m_pMinBox = nullptr;
424 delete m_pMaxBox; 386 delete m_pMaxBox;
425 m_pMaxBox = nullptr; 387 m_pMaxBox = nullptr;
426 delete m_pCaptionBox; 388 delete m_pCaptionBox;
427 m_pCaptionBox = nullptr; 389 m_pCaptionBox = nullptr;
428 } 390 }
429 391
430 void IFWL_Form::CalcContentRect(CFX_RectF& rtContent) {
431 #ifdef FWL_UseMacSystemBorder
432 rtContent = m_rtRelative;
433 #else
434 GetEdgeRect(rtContent);
435 if (HasEdge()) {
436 FX_FLOAT fEdge = GetEdgeWidth();
437 rtContent.Deflate(fEdge, fEdge);
438 }
439 #endif
440 }
441 CFWL_SysBtn* IFWL_Form::GetSysBtnAtPoint(FX_FLOAT fx, FX_FLOAT fy) { 392 CFWL_SysBtn* IFWL_Form::GetSysBtnAtPoint(FX_FLOAT fx, FX_FLOAT fy) {
442 if (m_pCloseBox && m_pCloseBox->m_rtBtn.Contains(fx, fy)) { 393 if (m_pCloseBox && m_pCloseBox->m_rtBtn.Contains(fx, fy)) {
443 return m_pCloseBox; 394 return m_pCloseBox;
444 } 395 }
445 if (m_pMaxBox && m_pMaxBox->m_rtBtn.Contains(fx, fy)) { 396 if (m_pMaxBox && m_pMaxBox->m_rtBtn.Contains(fx, fy)) {
446 return m_pMaxBox; 397 return m_pMaxBox;
447 } 398 }
448 if (m_pMinBox && m_pMinBox->m_rtBtn.Contains(fx, fy)) { 399 if (m_pMinBox && m_pMinBox->m_rtBtn.Contains(fx, fy)) {
449 return m_pMinBox; 400 return m_pMinBox;
450 } 401 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 } 522 }
572 } 523 }
573 void IFWL_Form::SetWorkAreaRect() { 524 void IFWL_Form::SetWorkAreaRect() {
574 m_rtRestore = m_pProperties->m_rtWidget; 525 m_rtRestore = m_pProperties->m_rtWidget;
575 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr(); 526 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr();
576 if (!pWidgetMgr) 527 if (!pWidgetMgr)
577 return; 528 return;
578 m_bSetMaximize = true; 529 m_bSetMaximize = true;
579 Repaint(&m_rtRelative); 530 Repaint(&m_rtRelative);
580 } 531 }
581 void IFWL_Form::SetCursor(FX_FLOAT fx, FX_FLOAT fy) {} 532
582 void IFWL_Form::Layout() { 533 void IFWL_Form::Layout() {
583 GetRelativeRect(m_rtRelative); 534 GetRelativeRect(m_rtRelative);
584 #ifndef FWL_UseMacSystemBorder 535 #ifndef FWL_UseMacSystemBorder
585 ReSetSysBtn(); 536 ResetSysBtn();
586 #endif 537 #endif
587 } 538 }
588 void IFWL_Form::ReSetSysBtn() { 539 void IFWL_Form::ResetSysBtn() {
589 m_fCXBorder = 540 m_fCXBorder =
590 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CXBorder)); 541 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CXBorder));
591 m_fCYBorder = 542 m_fCYBorder =
592 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CYBorder)); 543 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CYBorder));
593 RemoveSysButtons(); 544 RemoveSysButtons();
594 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 545 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider;
595 m_bCustomizeLayout = pTheme->IsCustomizedLayout(this); 546 m_bCustomizeLayout = pTheme->IsCustomizedLayout(this);
596 FX_FLOAT fCapHeight = GetCaptionHeight(); 547 FX_FLOAT fCapHeight = GetCaptionHeight();
597 if (fCapHeight > 0) { 548 if (fCapHeight > 0) {
598 m_rtCaption = m_rtRelative; 549 m_rtCaption = m_rtRelative;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 if (!pApp) 620 if (!pApp)
670 return; 621 return;
671 622
672 CFWL_NoteDriver* pDriver = 623 CFWL_NoteDriver* pDriver =
673 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); 624 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver());
674 if (!pDriver) 625 if (!pDriver)
675 return; 626 return;
676 627
677 pDriver->UnRegisterForm(this); 628 pDriver->UnRegisterForm(this);
678 } 629 }
679 bool IFWL_Form::IsDoModal() { 630
680 return m_bDoModalFlag;
681 }
682 void IFWL_Form::SetThemeData() { 631 void IFWL_Form::SetThemeData() {
683 m_fSmallIconSz = 632 m_fSmallIconSz =
684 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::SmallIcon)); 633 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::SmallIcon));
685 m_fBigIconSz = 634 m_fBigIconSz =
686 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::BigIcon)); 635 *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::BigIcon));
687 } 636 }
688 bool IFWL_Form::HasIcon() { 637 bool IFWL_Form::HasIcon() {
689 IFWL_FormDP* pData = 638 IFWL_FormDP* pData =
690 static_cast<IFWL_FormDP*>(m_pProperties->m_pDataProvider); 639 static_cast<IFWL_FormDP*>(m_pProperties->m_pDataProvider);
691 return !!pData->GetIcon(this, false); 640 return !!pData->GetIcon(this, false);
(...skipping 14 matching lines...) Expand all
706 void IFWL_Form::UpdateCaption() { 655 void IFWL_Form::UpdateCaption() {
707 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr(); 656 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr();
708 if (!pWidgetMgr) 657 if (!pWidgetMgr)
709 return; 658 return;
710 IFWL_DataProvider* pData = m_pProperties->m_pDataProvider; 659 IFWL_DataProvider* pData = m_pProperties->m_pDataProvider;
711 if (!pData) 660 if (!pData)
712 return; 661 return;
713 CFX_WideString text; 662 CFX_WideString text;
714 pData->GetCaption(this, text); 663 pData->GetCaption(this, text);
715 } 664 }
716 void IFWL_Form::DoWidthLimit(FX_FLOAT& fLeft,
717 FX_FLOAT& fWidth,
718 FX_FLOAT fCurX,
719 FX_FLOAT fSpace,
720 FX_FLOAT fLimitMin,
721 FX_FLOAT fLimitMax,
722 bool bLeft) {
723 FX_FLOAT fx = fCurX;
724 FX_FLOAT fy = 0;
725 TransformTo(nullptr, fx, fy);
726 FX_FLOAT fTemp =
727 bLeft ? (fWidth - fx + fLeft + fSpace) : (fx - fLeft + fSpace);
728 if (fTemp >= fLimitMin && fTemp <= fLimitMax) {
729 fWidth = fTemp;
730 fLeft += bLeft ? (fx - fLeft - fSpace) : 0;
731 } else {
732 if (fTemp < fLimitMin && fWidth > fLimitMin) {
733 fLeft += bLeft ? (fWidth - fLimitMin) : 0;
734 fWidth = fLimitMin;
735 } else if (fTemp > fLimitMax && fWidth < fLimitMax) {
736 fLeft -= bLeft ? (fLimitMax - fWidth) : 0;
737 fWidth = fLimitMax;
738 }
739 }
740 }
741 void IFWL_Form::DoHeightLimit(FX_FLOAT& fTop,
742 FX_FLOAT& fHeight,
743 FX_FLOAT fCurY,
744 FX_FLOAT fSpace,
745 FX_FLOAT fLimitMin,
746 FX_FLOAT fLimitMax,
747 bool bTop) {
748 FX_FLOAT fx = 0;
749 FX_FLOAT fy = fCurY;
750 TransformTo(nullptr, fx, fy);
751 FX_FLOAT fTemp = bTop ? (fHeight - fy + fTop + fSpace) : (fy - fTop + fSpace);
752 if (fTemp >= fLimitMin && fTemp <= fLimitMax) {
753 fHeight = fTemp;
754 fTop += bTop ? (fy - fTop - fSpace) : 0;
755 } else {
756 if (fTemp < fLimitMin && fHeight > fLimitMin) {
757 fTop += bTop ? (fHeight - fLimitMin) : 0;
758 fHeight = fLimitMin;
759 } else if (fTemp > fLimitMax && fHeight < fLimitMax) {
760 fTop -= bTop ? (fLimitMax - fHeight) : 0;
761 fHeight = fLimitMax;
762 }
763 }
764 }
765 665
766 #ifdef FWL_UseMacSystemBorder 666 #ifdef FWL_UseMacSystemBorder
767 void IFWL_Form::OnProcessMessage(CFWL_Message* pMessage) { 667 void IFWL_Form::OnProcessMessage(CFWL_Message* pMessage) {
768 if (!pMessage) 668 if (!pMessage)
769 return; 669 return;
770 670
771 switch (pMessage->GetClassID()) { 671 switch (pMessage->GetClassID()) {
772 case CFWL_MessageType::Activate: { 672 case CFWL_MessageType::Activate: {
773 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Deactivated; 673 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Deactivated;
774 Repaint(&m_rtRelative); 674 Repaint(&m_rtRelative);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 switch (pMsg->m_dwCmd) { 725 switch (pMsg->m_dwCmd) {
826 case FWL_MouseCommand::LeftButtonDown: 726 case FWL_MouseCommand::LeftButtonDown:
827 OnLButtonDown(pMsg); 727 OnLButtonDown(pMsg);
828 break; 728 break;
829 case FWL_MouseCommand::LeftButtonUp: 729 case FWL_MouseCommand::LeftButtonUp:
830 OnLButtonUp(pMsg); 730 OnLButtonUp(pMsg);
831 break; 731 break;
832 case FWL_MouseCommand::Move: 732 case FWL_MouseCommand::Move:
833 OnMouseMove(pMsg); 733 OnMouseMove(pMsg);
834 break; 734 break;
835 case FWL_MouseCommand::Hover:
836 OnMouseHover(pMsg);
837 break;
838 case FWL_MouseCommand::Leave: 735 case FWL_MouseCommand::Leave:
839 OnMouseLeave(pMsg); 736 OnMouseLeave(pMsg);
840 break; 737 break;
841 case FWL_MouseCommand::LeftButtonDblClk: 738 case FWL_MouseCommand::LeftButtonDblClk:
842 OnLButtonDblClk(pMsg); 739 OnLButtonDblClk(pMsg);
843 break; 740 break;
844 default: 741 default:
845 break; 742 break;
846 } 743 }
847 break; 744 break;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 CFX_RectF rtCap; 787 CFX_RectF rtCap;
891 rtCap.Set(m_rtCaption.left + m_fCYBorder, m_rtCaption.top + m_fCXBorder, 788 rtCap.Set(m_rtCaption.left + m_fCYBorder, m_rtCaption.top + m_fCXBorder,
892 m_rtCaption.width - kSystemButtonSize * m_iSysBox - 2 * m_fCYBorder, 789 m_rtCaption.width - kSystemButtonSize * m_iSysBox - 2 * m_fCYBorder,
893 m_rtCaption.height - m_fCXBorder); 790 m_rtCaption.height - m_fCXBorder);
894 791
895 if (pPressBtn) { 792 if (pPressBtn) {
896 pPressBtn->SetPressed(); 793 pPressBtn->SetPressed();
897 Repaint(&pPressBtn->m_rtBtn); 794 Repaint(&pPressBtn->m_rtBtn);
898 } else if (rtCap.Contains(pMsg->m_fx, pMsg->m_fy)) { 795 } else if (rtCap.Contains(pMsg->m_fx, pMsg->m_fy)) {
899 m_eResizeType = FORM_RESIZETYPE_Cap; 796 m_eResizeType = FORM_RESIZETYPE_Cap;
900 } else if ((m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border) &&
901 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_FRM_Resize) &&
902 !m_bMaximized) {
903 SetCursor(pMsg->m_fx, pMsg->m_fy);
904 } 797 }
905 m_InfoStart.m_ptStart = CFX_PointF(pMsg->m_fx, pMsg->m_fy); 798 m_InfoStart.m_ptStart = CFX_PointF(pMsg->m_fx, pMsg->m_fy);
906 m_InfoStart.m_szStart = CFX_SizeF(m_pProperties->m_rtWidget.width, 799 m_InfoStart.m_szStart = CFX_SizeF(m_pProperties->m_rtWidget.width,
907 m_pProperties->m_rtWidget.height); 800 m_pProperties->m_rtWidget.height);
908 } 801 }
909 802
910 void IFWL_Form::OnLButtonUp(CFWL_MsgMouse* pMsg) { 803 void IFWL_Form::OnLButtonUp(CFWL_MsgMouse* pMsg) {
911 SetGrab(false); 804 SetGrab(false);
912 m_bLButtonDown = false; 805 m_bLButtonDown = false;
913 CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy); 806 CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy);
(...skipping 16 matching lines...) Expand all
930 CFWL_EvtClose eClose; 823 CFWL_EvtClose eClose;
931 eClose.m_pSrcTarget = this; 824 eClose.m_pSrcTarget = this;
932 DispatchEvent(&eClose); 825 DispatchEvent(&eClose);
933 } 826 }
934 } 827 }
935 828
936 void IFWL_Form::OnMouseMove(CFWL_MsgMouse* pMsg) { 829 void IFWL_Form::OnMouseMove(CFWL_MsgMouse* pMsg) {
937 if (m_bLButtonDown) 830 if (m_bLButtonDown)
938 return; 831 return;
939 832
940 if ((m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border) &&
941 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_FRM_Resize) &&
942 !m_bMaximized) {
943 SetCursor(pMsg->m_fx, pMsg->m_fy);
944 }
945 CFX_RectF rtInvalidate; 833 CFX_RectF rtInvalidate;
946 rtInvalidate.Reset(); 834 rtInvalidate.Reset();
947 CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy); 835 CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy);
948 CFWL_SysBtn* pOldHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover); 836 CFWL_SysBtn* pOldHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover);
949 #if (_FX_OS_ == _FX_MACOSX_) 837 #if (_FX_OS_ == _FX_MACOSX_)
950 { 838 {
951 if (pOldHover && pPointBtn != pOldHover) 839 if (pOldHover && pPointBtn != pOldHover)
952 pOldHover->SetNormal(); 840 pOldHover->SetNormal();
953 if (pPointBtn && pPointBtn != pOldHover) 841 if (pPointBtn && pPointBtn != pOldHover)
954 pPointBtn->SetHover(); 842 pPointBtn->SetHover();
(...skipping 28 matching lines...) Expand all
983 rtInvalidate = pPointBtn->m_rtBtn; 871 rtInvalidate = pPointBtn->m_rtBtn;
984 else 872 else
985 rtInvalidate.Union(pPointBtn->m_rtBtn); 873 rtInvalidate.Union(pPointBtn->m_rtBtn);
986 } 874 }
987 } 875 }
988 #endif 876 #endif
989 if (!rtInvalidate.IsEmpty()) 877 if (!rtInvalidate.IsEmpty())
990 Repaint(&rtInvalidate); 878 Repaint(&rtInvalidate);
991 } 879 }
992 880
993 void IFWL_Form::OnMouseHover(CFWL_MsgMouse* pMsg) {
994 SetCursor(pMsg->m_fx, pMsg->m_fy);
995 }
996
997 void IFWL_Form::OnMouseLeave(CFWL_MsgMouse* pMsg) { 881 void IFWL_Form::OnMouseLeave(CFWL_MsgMouse* pMsg) {
998 CFWL_SysBtn* pHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover); 882 CFWL_SysBtn* pHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover);
999 if (pHover) { 883 if (pHover) {
1000 pHover->SetNormal(); 884 pHover->SetNormal();
1001 Repaint(&pHover->m_rtBtn); 885 Repaint(&pHover->m_rtBtn);
1002 } 886 }
1003 if (pMsg->m_dwCmd == FWL_MouseCommand::Leave && !m_bLButtonDown)
1004 SetCursor(pMsg->m_fx, pMsg->m_fy);
1005 } 887 }
1006 888
1007 void IFWL_Form::OnLButtonDblClk(CFWL_MsgMouse* pMsg) { 889 void IFWL_Form::OnLButtonDblClk(CFWL_MsgMouse* pMsg) {
1008 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_FRM_Resize) && 890 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_FRM_Resize) &&
1009 HitTest(pMsg->m_fx, pMsg->m_fy) == FWL_WidgetHit::Titlebar) { 891 HitTest(pMsg->m_fx, pMsg->m_fy) == FWL_WidgetHit::Titlebar) {
1010 if (m_bMaximized) 892 if (m_bMaximized)
1011 SetWidgetRect(m_rtRestore); 893 SetWidgetRect(m_rtRestore);
1012 else 894 else
1013 SetWorkAreaRect(); 895 SetWorkAreaRect();
1014 896
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 940
1059 uint32_t CFWL_SysBtn::GetPartState() const { 941 uint32_t CFWL_SysBtn::GetPartState() const {
1060 if (IsDisabled()) 942 if (IsDisabled())
1061 return CFWL_PartState_Disabled; 943 return CFWL_PartState_Disabled;
1062 if (m_dwState & FWL_SYSBUTTONSTATE_Pressed) 944 if (m_dwState & FWL_SYSBUTTONSTATE_Pressed)
1063 return CFWL_PartState_Pressed; 945 return CFWL_PartState_Pressed;
1064 if (m_dwState & FWL_SYSBUTTONSTATE_Hover) 946 if (m_dwState & FWL_SYSBUTTONSTATE_Hover)
1065 return CFWL_PartState_Hovered; 947 return CFWL_PartState_Hovered;
1066 return CFWL_PartState_Normal; 948 return CFWL_PartState_Normal;
1067 } 949 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/ifwl_form.h ('k') | xfa/fxfa/app/xfa_fftextedit.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698