From 3039ade95dbad1ee5a5ed03c25e3ed9241907850 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Dec 2008 10:34:04 +0000 Subject: [PATCH] renamed GetColHeader() to GetGridColHeader() for consistency with the other existing accessors (even if this is redundant) and made it public/documented (also documented the others) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57353 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/grid.h | 21 +++++++------ interface/wx/grid.h | 65 +++++++++++++++++++++++++++++++++++++++ src/generic/grid.cpp | 24 +++++++-------- 3 files changed, 88 insertions(+), 22 deletions(-) diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index eb0932154c..8a0e20eb1d 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -1747,6 +1747,17 @@ public: wxWindow* GetGridColLabelWindow() const { return m_colWindow; } wxWindow* GetGridCornerLabelWindow() const { return (wxWindow*)m_cornerLabelWin; } + // This one can only be called if we are using the native header window + wxHeaderCtrl *GetGridColHeader() const + { + wxASSERT_MSG( m_useNativeHeader, "no column header window" ); + + // static_cast<> doesn't work without the full class declaration in + // view and we prefer to avoid adding more compile-time dependencies + // even at the cost of using reinterpret_cast<> + return reinterpret_cast(m_colWindow); + } + // Allow adjustment of scroll increment. The default is (15, 15). void SetScrollLineX(int x) { m_scrollLineX = x; } void SetScrollLineY(int y) { m_scrollLineY = y; } @@ -1970,16 +1981,6 @@ protected: // wxGridColLabelWindow, use accessors below when the real type matters wxWindow *m_colWindow; - wxHeaderCtrl *GetColHeader() const - { - wxASSERT_MSG( m_useNativeHeader, "no column header window" ); - - // static_cast<> doesn't work without the full class declaration in - // view and we prefer to avoid adding more compile-time dependencies - // even at the cost of using reinterpret_cast<> - return reinterpret_cast(m_colWindow); - } - wxGridColLabelWindow *GetColLabelWindow() const { wxASSERT_MSG( !m_useNativeHeader, "no column label window" ); diff --git a/interface/wx/grid.h b/interface/wx/grid.h index 9072c1992c..607f40c057 100644 --- a/interface/wx/grid.h +++ b/interface/wx/grid.h @@ -3166,6 +3166,71 @@ protected: */ void UnsetSortingColumn(); //@} + + /** + @name Accessors for component windows. + + Return the various child windows of wxGrid. + + wxGrid is an empty parent window for 4 children representing the column + labels window (top), the row labels window (left), the corner window + (top left) and the main grid window. It may be necessary to use these + individual windows and not the wxGrid window itself if you need to + handle events for them (this can be done using wxEvtHandler::Connect() + or wxWindow::PushEventHandler()) or do something else requiring the use + of the correct window pointer. Notice that you should not, however, + change these windows (e.g. reposition them or draw over them) because + they are managed by wxGrid itself. + */ + //@{ + + /** + Return the main grid window containing the grid cells. + + This window is always shown. + */ + wxWindow *GetGridWindow() const; + + /** + Return the row labels window. + + This window is not shown if the row labels were hidden using + HideRowLabels(). + */ + wxWindow *GetGridRowLabelWindow() const; + + /** + Return the column labels window. + + This window is not shown if the columns labels were hidden using + HideColLabels(). + + Depending on whether UseNativeColHeader() was called or not this can be + either a wxHeaderCtrl or a plain wxWindow. This function returns a valid + window pointer in either case but in the former case you can also use + GetGridColHeader() to access it if you need wxHeaderCtrl-specific + functionality. + */ + wxWindow *GetGridWindow() const; + + /** + Return the window in the top left grid corner. + + This window is shown only of both columns and row labels are shown and + normally doesn't contain anything. Clicking on it is handled by wxGrid + however and can be used to select the entire grid. + */ + wxWindow *GetGridCornerLabelWindow() const; + + /** + Return the header control used for column labels display. + + This function can only be called if UseNativeColHeader() had been + called. + */ + wxHeaderCtrl *GetGridColHeader() const; + + //@} }; diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 95ffe3cd00..7257f41aa0 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -4806,7 +4806,7 @@ wxGrid::SetTable(wxGridTableBase *table, m_numCols = table->GetNumberCols(); if ( m_useNativeHeader ) - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); m_table = table; m_table->SetView( this ); @@ -5279,7 +5279,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) m_numCols += numCols; if ( m_useNativeHeader ) - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); if ( !m_colAt.IsEmpty() ) { @@ -5347,7 +5347,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int oldNumCols = m_numCols; m_numCols += numCols; if ( m_useNativeHeader ) - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); if ( !m_colAt.IsEmpty() ) { @@ -5402,7 +5402,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) int numCols = msg.GetCommandInt2(); m_numCols -= numCols; if ( m_useNativeHeader ) - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); if ( !m_colAt.IsEmpty() ) { @@ -5863,7 +5863,7 @@ void wxGrid::UpdateColumnSortingIndicator(int col) wxCHECK_RET( col != wxNOT_FOUND, "invalid column index" ); if ( m_useNativeHeader ) - GetColHeader()->UpdateColumn(col); + GetGridColHeader()->UpdateColumn(col); else if ( m_nativeColumnLabels ) m_colWindow->Refresh(); //else: sorting indicator display not yet implemented in grid version @@ -6863,9 +6863,9 @@ void wxGrid::RefreshAfterColPosChange() if ( m_useNativeHeader ) { if ( m_colAt.empty() ) - GetColHeader()->ResetColumnsOrder(); + GetGridColHeader()->ResetColumnsOrder(); else - GetColHeader()->SetColumnsOrder(m_colAt); + GetGridColHeader()->SetColumnsOrder(m_colAt); } else { @@ -6904,7 +6904,7 @@ void wxGrid::EnableDragColMove( bool enable ) if ( m_useNativeHeader ) { // update all columns to make them [not] reorderable - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); } m_canDragColMove = enable; @@ -8189,7 +8189,7 @@ void wxGrid::UseNativeColHeader(bool native) CreateColumnWindow(); if ( m_useNativeHeader ) - GetColHeader()->SetColumnCount(m_numCols); + GetGridColHeader()->SetColumnCount(m_numCols); CalcWindowSizes(); } @@ -9573,7 +9573,7 @@ void wxGrid::SetColLabelValue( int col, const wxString& s ) { if ( m_useNativeHeader ) { - GetColHeader()->UpdateColumn(col); + GetGridColHeader()->UpdateColumn(col); } else { @@ -10414,7 +10414,7 @@ void wxGrid::SetColSize( int col, int width ) const int diff = width - m_colWidths[col]; m_colWidths[col] = width; if ( m_useNativeHeader ) - GetColHeader()->UpdateColumn(col); + GetGridColHeader()->UpdateColumn(col); //else: will be refreshed when the header is redrawn for ( int colPos = GetColPos(col); colPos < m_numCols; colPos++ ) @@ -10581,7 +10581,7 @@ wxGrid::AutoSizeColOrRow(int colOrRow, bool setAsMin, wxGridDirection direction) { if ( m_useNativeHeader ) { - GetColHeader()->UpdateColumn(col); + GetGridColHeader()->UpdateColumn(col); } else { -- 2.45.2