diff --git a/docs/changes.txt b/docs/changes.txt index 9950f2adf0..f66c739910 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -107,6 +107,7 @@ All (GUI): works. - When focus is set to wxScrolledWindow child, scroll it into view. - Improve wximage::ResampleBox() (Mihai Ciocarlie) +- Implemented ScrollList() in generic wxListCtrl (Tim Kosse) All (Unix): diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 9f08a1a01e..6ffd8b465b 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -579,6 +579,8 @@ public: // bring the selected item into view, scrolling to it if necessary void MoveToItem(size_t item); + bool ScrollList( int WXUNUSED(dx), int dy ); + // bring the current item into view void MoveToFocus() { MoveToItem(m_current); } @@ -3319,6 +3321,34 @@ void wxListMainWindow::MoveToItem(size_t item) } } +bool wxListMainWindow::ScrollList(int WXUNUSED(dx), int dy) +{ + if ( !InReportView() ) + { + // TODO: this should work in all views but is not implemented now + return false; + } + + size_t top, bottom; + GetVisibleLinesRange(&top, &bottom); + + if ( bottom == (size_t)-1 ) + return 0; + + ResetVisibleLinesRange(); + + int hLine = GetLineHeight(); + + Scroll(-1, top + dy / hLine); + +#ifdef __WXMAC__ + // see comment in MoveToItem() for why we do this + ResetVisibleLinesRange(); +#endif + + return true; +} + // ---------------------------------------------------------------------------- // keyboard handling // ---------------------------------------------------------------------------- @@ -5581,9 +5611,9 @@ long wxGenericListCtrl::InsertColumn( long col, const wxString &heading, return InsertColumn( col, item ); } -bool wxGenericListCtrl::ScrollList( int WXUNUSED(dx), int WXUNUSED(dy) ) +bool wxGenericListCtrl::ScrollList( int dx, int dy ) { - return 0; + return m_mainWin->ScrollList(dx, dy); } // Sort items.