From 66a9201df8b0179ed8031412778e636f97b44e50 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/trunk@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 9ed01b58af..8a29459d4f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -299,6 +299,7 @@ All (GUI): - Added wxWindow::GetNextSibling() and GetPrevSibling() - Improve wximage::ResampleBox() (Mihai Ciocarlie) +- Implemented ScrollList() in generic wxListCtrl (Tim Kosse) wxMSW: diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index a5b504235f..7a63129ecd 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -580,6 +580,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); } @@ -3314,6 +3316,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 // ---------------------------------------------------------------------------- @@ -5570,9 +5600,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. -- 2.45.2