+int wxListBox::DoListHitTest(const wxPoint& point) const
+{
+ //Yuck - there is no easy way to get a databrowseritem from a point
+ //so we need to iterate through our items to see which one this falls under
+
+ // TODO: binary search would be faster
+ int count = GetCount();
+ DataBrowserTableViewColumnID colId = 0;
+
+ //Get column property id (req. for call to itempartbounds)
+ GetDataBrowserTableViewColumnProperty(m_peer->GetControlRef(), 0, &colId);
+
+ for(int i = 1; i <= count; ++i)
+ {
+ Rect bounds;
+ GetDataBrowserItemPartBounds(m_peer->GetControlRef(), i, colId,
+ kDataBrowserPropertyEnclosingPart,
+ &bounds);
+
+ //translate to client coords
+ //
+ // TODO: it would probably be more efficient to translate point to
+ // screen coordinates once outside of the loop
+ MacRootWindowToWindow(&bounds.left, &bounds.top);
+ MacRootWindowToWindow(&bounds.right, &bounds.bottom);
+
+ //if point is within the bounds, return this item
+ if( (point.x >= bounds.left && point.x <= bounds.right) &&
+ (point.y >= bounds.top && point.y <= bounds.bottom) )
+ {
+ return i - 1; //found
+ }
+ }
+
+ return wxNOT_FOUND;
+}
+