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

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

Issue 2436103002: Remove FWL globals. (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/cfwl_widgetmgr.h ('k') | xfa/fwl/core/fwl_noteimp.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/cfwl_widgetmgr.h" 7 #include "xfa/fwl/core/cfwl_widgetmgr.h"
8 8
9 #include "xfa/fwl/core/cfwl_message.h" 9 #include "xfa/fwl/core/cfwl_message.h"
10 #include "xfa/fwl/core/fwl_noteimp.h" 10 #include "xfa/fwl/core/fwl_noteimp.h"
(...skipping 16 matching lines...) Expand all
27 } // namespace 27 } // namespace
28 28
29 FX_BOOL FWL_UseOffscreen(IFWL_Widget* pWidget) { 29 FX_BOOL FWL_UseOffscreen(IFWL_Widget* pWidget) {
30 #if (_FX_OS_ == _FX_MACOSX_) 30 #if (_FX_OS_ == _FX_MACOSX_)
31 return FALSE; 31 return FALSE;
32 #else 32 #else
33 return !!(pWidget->GetStyles() & FWL_WGTSTYLE_Offscreen); 33 return !!(pWidget->GetStyles() & FWL_WGTSTYLE_Offscreen);
34 #endif 34 #endif
35 } 35 }
36 36
37 // static
38 CFWL_WidgetMgr* CFWL_WidgetMgr::GetInstance() {
39 IFWL_App* pApp = FWL_GetApp();
40 return pApp ? pApp->GetWidgetMgr() : nullptr;
41 }
42
43 CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) 37 CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative)
44 : m_dwCapability(0), 38 : m_dwCapability(0),
45 m_pDelegate(new CFWL_WidgetMgrDelegate(this)), 39 m_pDelegate(new CFWL_WidgetMgrDelegate(this)),
46 m_pAdapter(pAdapterNative->GetWidgetMgr(m_pDelegate.get())) { 40 m_pAdapter(pAdapterNative->GetWidgetMgr(m_pDelegate.get())) {
47 ASSERT(m_pAdapter); 41 ASSERT(m_pAdapter);
48 m_mapWidgetItem[nullptr].reset(new CFWL_WidgetMgrItem); 42 m_mapWidgetItem[nullptr].reset(new CFWL_WidgetMgrItem);
49 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) 43 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
50 m_rtScreen.Reset(); 44 m_rtScreen.Reset();
51 #endif 45 #endif
52 } 46 }
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 void CFWL_WidgetMgr::NotifySizeChanged(IFWL_Widget* pForm, 379 void CFWL_WidgetMgr::NotifySizeChanged(IFWL_Widget* pForm,
386 FX_FLOAT fx, 380 FX_FLOAT fx,
387 FX_FLOAT fy) { 381 FX_FLOAT fy) {
388 if (FWL_UseOffscreen(pForm)) 382 if (FWL_UseOffscreen(pForm))
389 GetWidgetMgrItem(pForm)->pOffscreen.reset(); 383 GetWidgetMgrItem(pForm)->pOffscreen.reset();
390 } 384 }
391 385
392 IFWL_Widget* CFWL_WidgetMgr::nextTab(IFWL_Widget* parent, 386 IFWL_Widget* CFWL_WidgetMgr::nextTab(IFWL_Widget* parent,
393 IFWL_Widget* focus, 387 IFWL_Widget* focus,
394 FX_BOOL& bFind) { 388 FX_BOOL& bFind) {
395 CFWL_WidgetMgr* pMgr = CFWL_WidgetMgr::GetInstance(); 389 CFWL_WidgetMgr* pMgr = parent->GetOwnerApp()->GetWidgetMgr();
396 IFWL_Widget* child = pMgr->GetFirstChildWidget(parent); 390 IFWL_Widget* child = pMgr->GetFirstChildWidget(parent);
397 while (child) { 391 while (child) {
398 if (focus == child) 392 if (focus == child)
399 bFind = TRUE; 393 bFind = TRUE;
400 394
401 if ((child->GetStyles() & FWL_WGTSTYLE_TabStop) && 395 if ((child->GetStyles() & FWL_WGTSTYLE_TabStop) &&
402 (!focus || (focus != child && bFind))) { 396 (!focus || (focus != child && bFind))) {
403 return child; 397 return child;
404 } 398 }
405 IFWL_Widget* bRet = nextTab(child, focus, bFind); 399 IFWL_Widget* bRet = nextTab(child, focus, bFind);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 if (!pNext) 457 if (!pNext)
464 pNext = GetSiblingRadioButton(pFirst, TRUE); 458 pNext = GetSiblingRadioButton(pFirst, TRUE);
465 } while (pNext && ((pNext->GetStyles() & FWL_WGTSTYLE_Group) == 0)); 459 } while (pNext && ((pNext->GetStyles() & FWL_WGTSTYLE_Group) == 0));
466 } 460 }
467 IFWL_Widget* CFWL_WidgetMgr::GetDefaultButton(IFWL_Widget* pParent) { 461 IFWL_Widget* CFWL_WidgetMgr::GetDefaultButton(IFWL_Widget* pParent) {
468 if ((pParent->GetClassID() == FWL_Type::PushButton) && 462 if ((pParent->GetClassID() == FWL_Type::PushButton) &&
469 (pParent->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) { 463 (pParent->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) {
470 return pParent; 464 return pParent;
471 } 465 }
472 IFWL_Widget* child = 466 IFWL_Widget* child =
473 CFWL_WidgetMgr::GetInstance()->GetFirstChildWidget(pParent); 467 pParent->GetOwnerApp()->GetWidgetMgr()->GetFirstChildWidget(pParent);
474 while (child) { 468 while (child) {
475 if ((child->GetClassID() == FWL_Type::PushButton) && 469 if ((child->GetClassID() == FWL_Type::PushButton) &&
476 (child->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) { 470 (child->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) {
477 return child; 471 return child;
478 } 472 }
479 IFWL_Widget* find = GetDefaultButton(child); 473 IFWL_Widget* find = GetDefaultButton(child);
480 if (find) { 474 if (find) {
481 return find; 475 return find;
482 } 476 }
483 child = CFWL_WidgetMgr::GetInstance()->GetNextSiblingWidget(child); 477 child = child->GetOwnerApp()->GetWidgetMgr()->GetNextSiblingWidget(child);
484 } 478 }
485 return nullptr; 479 return nullptr;
486 } 480 }
487 void CFWL_WidgetMgr::AddRedrawCounts(IFWL_Widget* pWidget) { 481 void CFWL_WidgetMgr::AddRedrawCounts(IFWL_Widget* pWidget) {
488 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); 482 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget);
489 (pItem->iRedrawCounter)++; 483 (pItem->iRedrawCounter)++;
490 } 484 }
491 void CFWL_WidgetMgr::ResetRedrawCounts(IFWL_Widget* pWidget) { 485 void CFWL_WidgetMgr::ResetRedrawCounts(IFWL_Widget* pWidget) {
492 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); 486 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget);
493 pItem->iRedrawCounter = 0; 487 pItem->iRedrawCounter = 0;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 return FWL_Error::Succeeded; 560 return FWL_Error::Succeeded;
567 } 561 }
568 562
569 void CFWL_WidgetMgrDelegate::OnProcessMessageToForm(CFWL_Message* pMessage) { 563 void CFWL_WidgetMgrDelegate::OnProcessMessageToForm(CFWL_Message* pMessage) {
570 if (!pMessage) 564 if (!pMessage)
571 return; 565 return;
572 if (!pMessage->m_pDstTarget) 566 if (!pMessage->m_pDstTarget)
573 return; 567 return;
574 568
575 IFWL_Widget* pDstWidget = pMessage->m_pDstTarget; 569 IFWL_Widget* pDstWidget = pMessage->m_pDstTarget;
576 IFWL_App* pApp = pDstWidget->GetOwnerApp(); 570 const IFWL_App* pApp = pDstWidget->GetOwnerApp();
577 if (!pApp) 571 if (!pApp)
578 return; 572 return;
579 573
580 CFWL_NoteDriver* pNoteDriver = 574 CFWL_NoteDriver* pNoteDriver =
581 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); 575 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver());
582 if (!pNoteDriver) 576 if (!pNoteDriver)
583 return; 577 return;
584 578
585 if (m_pWidgetMgr->IsThreadEnabled()) 579 if (m_pWidgetMgr->IsThreadEnabled())
586 pMessage = static_cast<CFWL_Message*>(pMessage->Clone()); 580 pMessage = static_cast<CFWL_Message*>(pMessage->Clone());
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 return TRUE; 742 return TRUE;
749 } 743 }
750 CFX_RectF rtWidget; 744 CFX_RectF rtWidget;
751 pWidget->GetWidgetRect(rtWidget); 745 pWidget->GetWidgetRect(rtWidget);
752 rtWidget.left = rtWidget.top = 0; 746 rtWidget.left = rtWidget.top = 0;
753 pMatrix->TransformRect(rtWidget); 747 pMatrix->TransformRect(rtWidget);
754 if (!rtWidget.IntersectWith(rtDirty)) 748 if (!rtWidget.IntersectWith(rtDirty))
755 return FALSE; 749 return FALSE;
756 750
757 IFWL_Widget* pChild = 751 IFWL_Widget* pChild =
758 CFWL_WidgetMgr::GetInstance()->GetFirstChildWidget(pWidget); 752 pWidget->GetOwnerApp()->GetWidgetMgr()->GetFirstChildWidget(pWidget);
759 if (!pChild) 753 if (!pChild)
760 return TRUE; 754 return TRUE;
761 755
762 CFX_RectF rtChilds; 756 CFX_RectF rtChilds;
763 rtChilds.Empty(); 757 rtChilds.Empty();
764 FX_BOOL bChildIntersectWithDirty = FALSE; 758 FX_BOOL bChildIntersectWithDirty = FALSE;
765 FX_BOOL bOrginPtIntersectWidthChild = FALSE; 759 FX_BOOL bOrginPtIntersectWidthChild = FALSE;
766 FX_BOOL bOrginPtIntersectWidthDirty = 760 FX_BOOL bOrginPtIntersectWidthDirty =
767 rtDirty.Contains(rtWidget.left, rtWidget.top); 761 rtDirty.Contains(rtWidget.left, rtWidget.top);
768 static FWL_NEEDREPAINTHITDATA hitPoint[kNeedRepaintHitPoints]; 762 static FWL_NEEDREPAINTHITDATA hitPoint[kNeedRepaintHitPoints];
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 for (int32_t i = 0; i < kNeedRepaintHitPoints; i++) { 800 for (int32_t i = 0; i < kNeedRepaintHitPoints; i++) {
807 if (hitPoint[i].bNotContainByDirty || hitPoint[i].bNotNeedRepaint) 801 if (hitPoint[i].bNotContainByDirty || hitPoint[i].bNotNeedRepaint)
808 continue; 802 continue;
809 if (!rtDirty.Contains(hitPoint[i].hitPoint)) { 803 if (!rtDirty.Contains(hitPoint[i].hitPoint)) {
810 hitPoint[i].bNotContainByDirty = true; 804 hitPoint[i].bNotContainByDirty = true;
811 continue; 805 continue;
812 } 806 }
813 if (r.Contains(hitPoint[i].hitPoint)) 807 if (r.Contains(hitPoint[i].hitPoint))
814 hitPoint[i].bNotNeedRepaint = true; 808 hitPoint[i].bNotNeedRepaint = true;
815 } 809 }
816 pChild = CFWL_WidgetMgr::GetInstance()->GetNextSiblingWidget(pChild); 810 pChild =
811 pChild->GetOwnerApp()->GetWidgetMgr()->GetNextSiblingWidget(pChild);
817 } while (pChild); 812 } while (pChild);
818 813
819 if (!bChildIntersectWithDirty) 814 if (!bChildIntersectWithDirty)
820 return TRUE; 815 return TRUE;
821 if (bOrginPtIntersectWidthDirty && !bOrginPtIntersectWidthChild) 816 if (bOrginPtIntersectWidthDirty && !bOrginPtIntersectWidthChild)
822 return TRUE; 817 return TRUE;
823 if (rtChilds.IsEmpty()) 818 if (rtChilds.IsEmpty())
824 return TRUE; 819 return TRUE;
825 820
826 int32_t repaintPoint = kNeedRepaintHitPoints; 821 int32_t repaintPoint = kNeedRepaintHitPoints;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 pWidget(widget), 864 pWidget(widget),
870 iRedrawCounter(0) 865 iRedrawCounter(0)
871 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) 866 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
872 , 867 ,
873 bOutsideChanged(FALSE) 868 bOutsideChanged(FALSE)
874 #endif 869 #endif
875 { 870 {
876 } 871 }
877 872
878 CFWL_WidgetMgrItem::~CFWL_WidgetMgrItem() {} 873 CFWL_WidgetMgrItem::~CFWL_WidgetMgrItem() {}
OLDNEW
« no previous file with comments | « xfa/fwl/core/cfwl_widgetmgr.h ('k') | xfa/fwl/core/fwl_noteimp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698