]> git.saurik.com Git - wxWidgets.git/commitdiff
FindItem() implementation (patch 950021)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jul 2004 12:32:59 +0000 (12:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jul 2004 12:32:59 +0000 (12:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/generic/listctrl.cpp

index 49816121ee9d645f00db73dbd546f4df598ba19e..3a5d5ca425e58735570bdea890095bd015124d39 100644 (file)
@@ -217,6 +217,7 @@ All (GUI):
 - wxTextCtrl::OnChar now inserts a tab character if wxTE_PROCESS_TAB is set
 - added wxKeyEvent::GetUnicodeKey()
 - added wxKeyEvent::CmdDown() and wxMouseEvent::CmdDown()
+- implemented wxListCtrl::FindItem() for non-MSW (Robin Stoll)
 
 Unix:
 
index f4ae560cececbbb43817ed7c2ac37e3952a16e0b..32f5bd7060a3ed120cd45c8ef0414ff191abfc8e 100644 (file)
@@ -76,6 +76,9 @@
     #include "wx/mac/private.h"
 #endif
 
+#include <math.h>
+
+
 // NOTE: If using the wxListBox visual attributes works everywhere then this can
 // be removed, as well as the #else case below.
 #define _USE_VISATTR 0
@@ -677,6 +680,7 @@ public:
     void EnsureVisible( long index );
     long FindItem( long start, const wxString& str, bool partial = false );
     long FindItem( long start, long data);
+    long FindItem( const wxPoint& pt );
     long HitTest( int x, int y, int &flags );
     void InsertItem( wxListItem &item );
     void InsertColumn( long col, wxListItem &item );
@@ -4284,6 +4288,21 @@ long wxListMainWindow::FindItem(long start, long data)
     return wxNOT_FOUND;
 }
 
+long wxListMainWindow::FindItem( const wxPoint& pt )
+{
+  wxPoint p;
+  long topItem = GetTopItem();
+
+  GetItemPosition( GetItemCount()-1, p );
+  if( p.y == 0 )
+    return topItem;
+  long id = (long) floor( pt.y*(GetItemCount()-topItem-1)/p.y+topItem );
+  if( id >= 0 && id < (long)GetItemCount() )
+    return id;
+
+  return wxNOT_FOUND;
+}
+
 long wxListMainWindow::HitTest( int x, int y, int &flags )
 {
     CalcUnscrolledPosition( x, y, &x, &y );
@@ -5059,10 +5078,10 @@ long wxGenericListCtrl::FindItem( long start, long data )
     return m_mainWin->FindItem( start, data );
 }
 
-long wxGenericListCtrl::FindItem( long WXUNUSED(start), const wxPoint& WXUNUSED(pt),
+long wxGenericListCtrl::FindItem( long WXUNUSED(start), const wxPoint& pt,
                            int WXUNUSED(direction))
 {
-    return 0;
+    return m_mainWin->FindItem( pt );
 }
 
 long wxGenericListCtrl::HitTest( const wxPoint &point, int &flags )