From 355d2bbff0f27c9fb85ec0deb3370bafd48bc3cf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 22 Dec 2007 15:58:38 +0000 Subject: [PATCH] implement wxListCtrl::ScrollList() (in report view and vertical direction only) (slightly modified patch 1843647) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@50902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/generic/listctrl.cpp | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) 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.