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

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

Issue 2556873004: Convert GetWidgetRect to return rect. (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
« no previous file with comments | « xfa/fwl/core/cfwl_combobox.h ('k') | xfa/fwl/core/cfwl_comboboxproxy.cpp » ('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_combobox.h" 7 #include "xfa/fwl/core/cfwl_combobox.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 SetStates(m_pProperties->m_dwStates); 66 SetStates(m_pProperties->m_dwStates);
67 } 67 }
68 68
69 CFWL_ComboBox::~CFWL_ComboBox() {} 69 CFWL_ComboBox::~CFWL_ComboBox() {}
70 70
71 FWL_Type CFWL_ComboBox::GetClassID() const { 71 FWL_Type CFWL_ComboBox::GetClassID() const {
72 return FWL_Type::ComboBox; 72 return FWL_Type::ComboBox;
73 } 73 }
74 74
75 void CFWL_ComboBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
76 if (!bAutoSize) {
77 rect = m_pProperties->m_rtWidget;
78 return;
79 }
80
81 rect.Reset();
82 if (IsDropDownStyle() && m_pEdit) {
83 m_pEdit->GetWidgetRect(rect, true);
84 } else {
85 rect.width = 100;
86 rect.height = 16;
87 }
88 if (!m_pProperties->m_pThemeProvider)
89 ResetTheme();
90
91 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>(
92 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth));
93 if (!pFWidth)
94 return;
95
96 rect.Inflate(0, 0, *pFWidth, 0);
97 InflateWidgetRect(rect);
98 }
99
100 void CFWL_ComboBox::AddString(const CFX_WideStringC& wsText) { 75 void CFWL_ComboBox::AddString(const CFX_WideStringC& wsText) {
101 m_pListBox->AddString(wsText); 76 m_pListBox->AddString(wsText);
102 } 77 }
103 78
104 bool CFWL_ComboBox::RemoveAt(int32_t iIndex) { 79 bool CFWL_ComboBox::RemoveAt(int32_t iIndex) {
105 return m_pListBox->RemoveAt(iIndex); 80 return m_pListBox->RemoveAt(iIndex);
106 } 81 }
107 82
108 void CFWL_ComboBox::RemoveAll() { 83 void CFWL_ComboBox::RemoveAll() {
109 m_pListBox->DeleteAll(); 84 m_pListBox->DeleteAll();
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 } 288 }
314 289
315 CFX_RectF CFWL_ComboBox::GetBBox() const { 290 CFX_RectF CFWL_ComboBox::GetBBox() const {
316 if (m_pWidgetMgr->IsFormDisabled()) 291 if (m_pWidgetMgr->IsFormDisabled())
317 return DisForm_GetBBox(); 292 return DisForm_GetBBox();
318 293
319 CFX_RectF rect = m_pProperties->m_rtWidget; 294 CFX_RectF rect = m_pProperties->m_rtWidget;
320 if (!m_pListBox || !IsDropListVisible()) 295 if (!m_pListBox || !IsDropListVisible())
321 return rect; 296 return rect;
322 297
323 CFX_RectF rtList; 298 CFX_RectF rtList = m_pListBox->GetWidgetRect();
324 m_pListBox->GetWidgetRect(rtList, false);
325 rtList.Offset(rect.left, rect.top); 299 rtList.Offset(rect.left, rect.top);
326 rect.Union(rtList); 300 rect.Union(rtList);
327 return rect; 301 return rect;
328 } 302 }
329 303
330 void CFWL_ComboBox::EditModifyStylesEx(uint32_t dwStylesExAdded, 304 void CFWL_ComboBox::EditModifyStylesEx(uint32_t dwStylesExAdded,
331 uint32_t dwStylesExRemoved) { 305 uint32_t dwStylesExRemoved) {
332 if (m_pEdit) 306 if (m_pEdit)
333 m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); 307 m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved);
334 } 308 }
(...skipping 28 matching lines...) Expand all
363 SetFocus(true); 337 SetFocus(true);
364 return; 338 return;
365 } 339 }
366 340
367 m_pListBox->ChangeSelected(m_iCurSel); 341 m_pListBox->ChangeSelected(m_iCurSel);
368 ResetListItemAlignment(); 342 ResetListItemAlignment();
369 343
370 uint32_t dwStyleAdd = m_pProperties->m_dwStyleExes & 344 uint32_t dwStyleAdd = m_pProperties->m_dwStyleExes &
371 (FWL_STYLEEXT_CMB_Sort | FWL_STYLEEXT_CMB_OwnerDraw); 345 (FWL_STYLEEXT_CMB_Sort | FWL_STYLEEXT_CMB_OwnerDraw);
372 m_pListBox->ModifyStylesEx(dwStyleAdd, 0); 346 m_pListBox->ModifyStylesEx(dwStyleAdd, 0);
373 m_pListBox->GetWidgetRect(m_rtList, true); 347 m_rtList = m_pListBox->GetAutosizedWidgetRect();
374 348
375 CFX_RectF rtAnchor; 349 CFX_RectF rtAnchor;
376 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width, 350 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width,
377 m_pProperties->m_rtWidget.height); 351 m_pProperties->m_rtWidget.height);
378 352
379 m_rtList.width = std::max(m_rtList.width, m_rtClient.width); 353 m_rtList.width = std::max(m_rtList.width, m_rtClient.width);
380 m_rtProxy = m_rtList; 354 m_rtProxy = m_rtList;
381 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_ListDrag) 355 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_ListDrag)
382 m_rtProxy.height += m_fComboFormHandler; 356 m_rtProxy.height += m_fComboFormHandler;
383 357
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 } 613 }
640 614
641 if (bActivate) { 615 if (bActivate) {
642 m_pListBox->RemoveStates(FWL_WGTSTATE_Invisible); 616 m_pListBox->RemoveStates(FWL_WGTSTATE_Invisible);
643 CFWL_Event postEvent(CFWL_Event::Type::PostDropDown, this); 617 CFWL_Event postEvent(CFWL_Event::Type::PostDropDown, this);
644 DispatchEvent(&postEvent); 618 DispatchEvent(&postEvent);
645 } else { 619 } else {
646 m_pListBox->SetStates(FWL_WGTSTATE_Invisible); 620 m_pListBox->SetStates(FWL_WGTSTATE_Invisible);
647 } 621 }
648 622
649 CFX_RectF rect; 623 CFX_RectF rect = m_pListBox->GetWidgetRect();
650 m_pListBox->GetWidgetRect(rect, false);
651 rect.Inflate(2, 2); 624 rect.Inflate(2, 2);
652 Repaint(&rect); 625 Repaint(&rect);
653 } 626 }
654 627
655 void CFWL_ComboBox::DisForm_ModifyStylesEx(uint32_t dwStylesExAdded, 628 void CFWL_ComboBox::DisForm_ModifyStylesEx(uint32_t dwStylesExAdded,
656 uint32_t dwStylesExRemoved) { 629 uint32_t dwStylesExRemoved) {
657 if (!m_pEdit) 630 if (!m_pEdit)
658 DisForm_InitComboEdit(); 631 DisForm_InitComboEdit();
659 632
660 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown); 633 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown);
(...skipping 20 matching lines...) Expand all
681 654
682 FWL_WidgetHit CFWL_ComboBox::DisForm_HitTest(FX_FLOAT fx, FX_FLOAT fy) { 655 FWL_WidgetHit CFWL_ComboBox::DisForm_HitTest(FX_FLOAT fx, FX_FLOAT fy) {
683 CFX_RectF rect; 656 CFX_RectF rect;
684 rect.Set(0, 0, m_pProperties->m_rtWidget.width - m_rtBtn.width, 657 rect.Set(0, 0, m_pProperties->m_rtWidget.width - m_rtBtn.width,
685 m_pProperties->m_rtWidget.height); 658 m_pProperties->m_rtWidget.height);
686 if (rect.Contains(fx, fy)) 659 if (rect.Contains(fx, fy))
687 return FWL_WidgetHit::Edit; 660 return FWL_WidgetHit::Edit;
688 if (m_rtBtn.Contains(fx, fy)) 661 if (m_rtBtn.Contains(fx, fy))
689 return FWL_WidgetHit::Client; 662 return FWL_WidgetHit::Client;
690 if (DisForm_IsDropListVisible()) { 663 if (DisForm_IsDropListVisible()) {
691 m_pListBox->GetWidgetRect(rect, false); 664 rect = m_pListBox->GetWidgetRect();
692 if (rect.Contains(fx, fy)) 665 if (rect.Contains(fx, fy))
693 return FWL_WidgetHit::Client; 666 return FWL_WidgetHit::Client;
694 } 667 }
695 return FWL_WidgetHit::Unknown; 668 return FWL_WidgetHit::Unknown;
696 } 669 }
697 670
698 void CFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics, 671 void CFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics,
699 const CFX_Matrix* pMatrix) { 672 const CFX_Matrix* pMatrix) {
700 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 673 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider;
701 CFX_Matrix mtOrg; 674 CFX_Matrix mtOrg;
702 mtOrg.Set(1, 0, 0, 1, 0, 0); 675 mtOrg.Set(1, 0, 0, 1, 0, 0);
703 if (pMatrix) 676 if (pMatrix)
704 mtOrg = *pMatrix; 677 mtOrg = *pMatrix;
705 678
706 pGraphics->SaveGraphState(); 679 pGraphics->SaveGraphState();
707 pGraphics->ConcatMatrix(&mtOrg); 680 pGraphics->ConcatMatrix(&mtOrg);
708 if (!m_rtBtn.IsEmpty(0.1f)) { 681 if (!m_rtBtn.IsEmpty(0.1f)) {
709 CFWL_ThemeBackground param; 682 CFWL_ThemeBackground param;
710 param.m_pWidget = this; 683 param.m_pWidget = this;
711 param.m_iPart = CFWL_Part::DropDownButton; 684 param.m_iPart = CFWL_Part::DropDownButton;
712 param.m_dwStates = m_iBtnState; 685 param.m_dwStates = m_iBtnState;
713 param.m_pGraphics = pGraphics; 686 param.m_pGraphics = pGraphics;
714 param.m_rtPart = m_rtBtn; 687 param.m_rtPart = m_rtBtn;
715 pTheme->DrawBackground(&param); 688 pTheme->DrawBackground(&param);
716 } 689 }
717 pGraphics->RestoreGraphState(); 690 pGraphics->RestoreGraphState();
718 691
719 if (m_pEdit) { 692 if (m_pEdit) {
720 CFX_RectF rtEdit; 693 CFX_RectF rtEdit = m_pEdit->GetWidgetRect();
721 m_pEdit->GetWidgetRect(rtEdit, false);
722 CFX_Matrix mt; 694 CFX_Matrix mt;
723 mt.Set(1, 0, 0, 1, rtEdit.left, rtEdit.top); 695 mt.Set(1, 0, 0, 1, rtEdit.left, rtEdit.top);
724 mt.Concat(mtOrg); 696 mt.Concat(mtOrg);
725 m_pEdit->DrawWidget(pGraphics, &mt); 697 m_pEdit->DrawWidget(pGraphics, &mt);
726 } 698 }
727 if (m_pListBox && DisForm_IsDropListVisible()) { 699 if (m_pListBox && DisForm_IsDropListVisible()) {
728 CFX_RectF rtList; 700 CFX_RectF rtList = m_pListBox->GetWidgetRect();
729 m_pListBox->GetWidgetRect(rtList, false);
730 CFX_Matrix mt; 701 CFX_Matrix mt;
731 mt.Set(1, 0, 0, 1, rtList.left, rtList.top); 702 mt.Set(1, 0, 0, 1, rtList.left, rtList.top);
732 mt.Concat(mtOrg); 703 mt.Concat(mtOrg);
733 m_pListBox->DrawWidget(pGraphics, &mt); 704 m_pListBox->DrawWidget(pGraphics, &mt);
734 } 705 }
735 } 706 }
736 707
737 CFX_RectF CFWL_ComboBox::DisForm_GetBBox() const { 708 CFX_RectF CFWL_ComboBox::DisForm_GetBBox() const {
738 CFX_RectF rect = m_pProperties->m_rtWidget; 709 CFX_RectF rect = m_pProperties->m_rtWidget;
739 if (!m_pListBox || !DisForm_IsDropListVisible()) 710 if (!m_pListBox || !DisForm_IsDropListVisible())
740 return rect; 711 return rect;
741 712
742 CFX_RectF rtList; 713 CFX_RectF rtList = m_pListBox->GetWidgetRect();
743 m_pListBox->GetWidgetRect(rtList, false);
744 rtList.Offset(rect.left, rect.top); 714 rtList.Offset(rect.left, rect.top);
745 rect.Union(rtList); 715 rect.Union(rtList);
746 return rect; 716 return rect;
747 } 717 }
748 718
749 void CFWL_ComboBox::DisForm_Layout() { 719 void CFWL_ComboBox::DisForm_Layout() {
750 GetClientRect(m_rtClient); 720 GetClientRect(m_rtClient);
751 m_rtContent = m_rtClient; 721 m_rtContent = m_rtClient;
752 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( 722 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>(
753 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); 723 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth));
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 else 1069 else
1100 iCurSel++; 1070 iCurSel++;
1101 } 1071 }
1102 m_iCurSel = iCurSel; 1072 m_iCurSel = iCurSel;
1103 SyncEditText(m_iCurSel); 1073 SyncEditText(m_iCurSel);
1104 return; 1074 return;
1105 } 1075 }
1106 if (m_pEdit) 1076 if (m_pEdit)
1107 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); 1077 m_pEdit->GetDelegate()->OnProcessMessage(pMsg);
1108 } 1078 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/cfwl_combobox.h ('k') | xfa/fwl/core/cfwl_comboboxproxy.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698