int32_t CFX_List::GetItemIndex(const CPDF_Point & point) const { CPDF_Point pt = OuterToInner(point); FX_BOOL bFirst = TRUE; FX_BOOL bLast = TRUE; for (int32_t i=0,sz=m_aListItems.GetSize(); i<sz; i++) { if (CFX_ListItem * pListItem = m_aListItems.GetAt(i)) { CLST_Rect rcListItem = pListItem->GetRect(); if (FX_EDIT_IsFloatBigger(pt.y, rcListItem.top)) { bFirst = FALSE; } if (FX_EDIT_IsFloatSmaller(pt.y, rcListItem.bottom)) { bLast = FALSE; } if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom) { return i; } } } if (bFirst) return 0; if (bLast) return m_aListItems.GetSize()-1; return -1; }
int32_t CFX_ListCtrl::GetItemIndex(const CFX_PointF& point) const { CFX_PointF pt = OuterToInner(OutToIn(point)); bool bFirst = true; bool bLast = true; for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) { if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) { CLST_Rect rcListItem = pListItem->GetRect(); if (IsFloatBigger(pt.y, rcListItem.top)) { bFirst = false; } if (IsFloatSmaller(pt.y, rcListItem.bottom)) { bLast = false; } if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom) { return i; } } } if (bFirst) return 0; if (bLast) return m_aListItems.GetSize() - 1; return -1; }