diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 8349a29082..e9c35940f7 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -30,6 +30,7 @@ class WXDLLIMPEXP_FWD_CORE wxImageList; class WXDLLIMPEXP_FWD_CORE wxItemAttr; +class WXDLLIMPEXP_FWD_CORE wxHeaderCtrl; #if !(defined(__WXGTK20__) || defined(__WXOSX__) ) || defined(__WXUNIVERSAL__) // #if !(defined(__WXOSX__)) || defined(__WXUNIVERSAL__) diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 1f742e63c7..694ee8ffe6 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -263,6 +263,11 @@ public: wxColour GetAlternateRowColour() const { return m_alternateRowColour; } void SetAlternateRowColour(const wxColour& colour); + // The returned pointer is null if the control has wxDV_NO_HEADER style. + // + // This method is only available in the generic versions. + wxHeaderCtrl* GenericGetHeader() const; + protected: void EnsureVisibleRowCol( int row, int column ); diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index 89f0d66367..fca7630647 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -35,6 +35,10 @@ #include "wx/itemattr.h" #include "wx/notebook.h" +#ifdef wxHAS_GENERIC_DATAVIEWCTRL + #include "wx/headerctrl.h" +#endif // wxHAS_GENERIC_DATAVIEWCTRL + #include "mymodels.h" // ---------------------------------------------------------------------------- @@ -76,6 +80,9 @@ private: void OnStyleChange(wxCommandEvent& event); void OnSetBackgroundColour(wxCommandEvent& event); void OnCustomHeaderAttr(wxCommandEvent& event); +#ifdef wxHAS_GENERIC_DATAVIEWCTRL + void OnCustomHeaderHeight(wxCommandEvent& event); +#endif // wxHAS_GENERIC_DATAVIEWCTRL void OnSetForegroundColour(wxCommandEvent& event); void OnIncIndent(wxCommandEvent& event); void OnDecIndent(wxCommandEvent& event); @@ -293,6 +300,9 @@ enum ID_BACKGROUND_COLOUR, ID_FOREGROUND_COLOUR, ID_CUSTOM_HEADER_ATTR, +#ifdef wxHAS_GENERIC_DATAVIEWCTRL + ID_CUSTOM_HEADER_HEIGHT, +#endif // wxHAS_GENERIC_DATAVIEWCTRL ID_STYLE_MENU, ID_INC_INDENT, ID_DEC_INDENT, @@ -348,6 +358,9 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU( ID_FOREGROUND_COLOUR, MyFrame::OnSetForegroundColour ) EVT_MENU( ID_BACKGROUND_COLOUR, MyFrame::OnSetBackgroundColour ) EVT_MENU( ID_CUSTOM_HEADER_ATTR, MyFrame::OnCustomHeaderAttr ) +#ifdef wxHAS_GENERIC_DATAVIEWCTRL + EVT_MENU( ID_CUSTOM_HEADER_HEIGHT, MyFrame::OnCustomHeaderHeight ) +#endif // wxHAS_GENERIC_DATAVIEWCTRL EVT_MENU( ID_INC_INDENT, MyFrame::OnIncIndent ) EVT_MENU( ID_DEC_INDENT, MyFrame::OnDecIndent ) @@ -436,6 +449,9 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int file_menu->Append(ID_FOREGROUND_COLOUR, "Set &foreground colour...\tCtrl-S"); file_menu->Append(ID_BACKGROUND_COLOUR, "Set &background colour...\tCtrl-B"); file_menu->AppendCheckItem(ID_CUSTOM_HEADER_ATTR, "C&ustom header attributes"); +#ifdef wxHAS_GENERIC_DATAVIEWCTRL + file_menu->AppendCheckItem(ID_CUSTOM_HEADER_HEIGHT, "Custom header &height"); +#endif // wxHAS_GENERIC_DATAVIEWCTRL file_menu->Append(ID_STYLE_MENU, "&Style", style_menu); file_menu->Append(ID_INC_INDENT, "&Increase indent\tCtrl-I"); file_menu->Append(ID_DEC_INDENT, "&Decrease indent\tShift-Ctrl-I"); @@ -808,6 +824,26 @@ void MyFrame::OnCustomHeaderAttr(wxCommandEvent& event) wxLogMessage("Sorry, header attributes not supported on this platform"); } +#ifdef wxHAS_GENERIC_DATAVIEWCTRL +void MyFrame::OnCustomHeaderHeight(wxCommandEvent& event) +{ + wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()]; + wxHeaderCtrl* const header = dvc->GenericGetHeader(); + if ( !header ) + { + wxLogMessage("No header"); + return; + } + + // Use a big height to show that this works. + wxSize size = event.IsChecked() ? FromDIP(wxSize(0, 80)) : wxDefaultSize; + header->SetMinSize(size); + header->Refresh(); + + dvc->Layout(); +} +#endif // wxHAS_GENERIC_DATAVIEWCTRL + void MyFrame::OnIncIndent(wxCommandEvent& WXUNUSED(event)) { wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()]; diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 90c921b5b5..95d235e91d 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -4625,6 +4625,11 @@ wxBorder wxDataViewCtrl::GetDefaultBorder() const return wxBORDER_THEME; } +wxHeaderCtrl* wxDataViewCtrl::GenericGetHeader() const +{ + return m_headerArea; +} + #ifdef __WXMSW__ WXLRESULT wxDataViewCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam,