From 1af67319a7c54373c85a15477f59a72f3e929268 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 24 Feb 2013 13:48:35 +0000 Subject: [PATCH] Make wxGenericDataViewCtrl::SetFont() really work. Do use the new font for the items display. Closes #15056. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/generic/dataview.h | 2 ++ src/generic/datavgen.cpp | 50 ++++++++++++++++++++++++++++------- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index e8aa7743e7..6371eedc05 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -622,6 +622,7 @@ All (GUI): - Add wxCheckListBox::GetCheckedItems() (hartwigw). - Add wxAUI_TB_PLAIN_BACKGROUND wxAuiToolBar style (Allann Jones). - Fix off by 1 error in wxGenericListCtrl::HitTest() (Daniel Hyams). +- Make wxGenericDataViewCtrl::SetFont() really work (Laurent Poujoulat). wxGTK: diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 9115dcb3ca..70ae97ca0a 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -182,6 +182,8 @@ public: virtual void SetFocus(); + virtual bool SetFont(const wxFont & font); + #if wxUSE_DRAG_AND_DROP virtual bool EnableDragSource( const wxDataFormat &format ); virtual bool EnableDropTarget( const wxDataFormat &format ); diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 565814cc7a..a640773ce3 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -678,6 +678,7 @@ public: void SetRowHeight( int lineHeight ) { m_lineHeight = lineHeight; } int GetRowHeight() const { return m_lineHeight; } + int GetDefaultRowHeight() const; // Some useful functions for row and item mapping wxDataViewItem GetItemByRow( unsigned int row ) const; @@ -1398,15 +1399,7 @@ wxDataViewMainWindow::wxDataViewMainWindow( wxDataViewCtrl *parent, wxWindowID i m_currentColSetByKeyboard = false; m_useCellFocus = false; m_currentRow = (unsigned)-1; - -#ifdef __WXMSW__ - // We would like to use the same line height that Explorer uses. This is - // different from standard ListView control since Vista. - if ( wxGetWinVersion() >= wxWinVersion_Vista ) - m_lineHeight = wxMax(16, GetCharHeight()) + 6; // 16 = mini icon height - else -#endif // __WXMSW__ - m_lineHeight = wxMax(16, GetCharHeight()) + 1; // 16 = mini icon height + m_lineHeight = GetDefaultRowHeight(); #if wxUSE_DRAG_AND_DROP m_dragCount = 0; @@ -1449,6 +1442,20 @@ wxDataViewMainWindow::~wxDataViewMainWindow() } +int wxDataViewMainWindow::GetDefaultRowHeight() const +{ +#ifdef __WXMSW__ + // We would like to use the same line height that Explorer uses. This is + // different from standard ListView control since Vista. + if ( wxGetWinVersion() >= wxWinVersion_Vista ) + return wxMax(16, GetCharHeight()) + 6; // 16 = mini icon height + else +#endif // __WXMSW__ + return wxMax(16, GetCharHeight()) + 1; // 16 = mini icon height +} + + + #if wxUSE_DRAG_AND_DROP bool wxDataViewMainWindow::EnableDragSource( const wxDataFormat &format ) { @@ -4543,6 +4550,31 @@ void wxDataViewCtrl::SetFocus() m_clientArea->SetFocus(); } +bool wxDataViewCtrl::SetFont(const wxFont & font) +{ + if (!wxControl::SetFont(font)) + return false; + + if (m_headerArea) + m_headerArea->SetFont(font); + + if (m_clientArea) + { + m_clientArea->SetFont(font); + m_clientArea->SetRowHeight(m_clientArea->GetDefaultRowHeight()); + } + + if (m_headerArea || m_clientArea) + { + InvalidateColBestWidths(); + Layout(); + } + + return true; +} + + + bool wxDataViewCtrl::AssociateModel( wxDataViewModel *model ) { if (!wxDataViewCtrlBase::AssociateModel( model )) -- 2.45.2