git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51776
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// utility used by wxListCtrl::MSWOnNotify and by wxDataViewHeaderWindowMSW::MSWOnNotify
int WXDLLIMPEXP_CORE wxMSWGetColumnClicked(NMHDR *nmhdr, POINT *ptClick)
{
// utility used by wxListCtrl::MSWOnNotify and by wxDataViewHeaderWindowMSW::MSWOnNotify
int WXDLLIMPEXP_CORE wxMSWGetColumnClicked(NMHDR *nmhdr, POINT *ptClick)
{
- wxASSERT(nmhdr && ptClick);
-
- // find the column clicked: we have to search for it
- // ourselves as the notification message doesn't provide
- // this info
+ // find the column clicked: we have to search for it ourselves as the
+ // notification message doesn't provide this info
// where did the click occur?
#if defined(__WXWINCE__) && !defined(__HANDHELDPC__) && _WIN32_WCE < 400
// where did the click occur?
#if defined(__WXWINCE__) && !defined(__HANDHELDPC__) && _WIN32_WCE < 400
- if (nmhdr->code == GN_CONTEXTMENU)
+ if ( nmhdr->code == GN_CONTEXTMENU )
{
*ptClick = ((NMRGINFO*)nmhdr)->ptAction;
}
{
*ptClick = ((NMRGINFO*)nmhdr)->ptAction;
}
wxLogLastError(_T("GetCursorPos"));
}
wxLogLastError(_T("GetCursorPos"));
}
- if ( !::ScreenToClient(nmhdr->hwndFrom, ptClick) )
+ // we need to use listctrl coordinates for the event point so this is what
+ // we return in ptClick, but for comparison with Header_GetItemRect()
+ // result below we need to use header window coordinates
+ POINT ptClickHeader = *ptClick;
+ if ( !::ScreenToClient(nmhdr->hwndFrom, &ptClickHeader) )
- wxLogLastError(_T("ScreenToClient(header)"));
+ wxLogLastError(_T("ScreenToClient(listctrl header)"));
- int colCount = Header_GetItemCount(nmhdr->hwndFrom);
+ if ( !::ScreenToClient(::GetParent(nmhdr->hwndFrom), ptClick) )
+ {
+ wxLogLastError(_T("ScreenToClient(listctrl)"));
+ }
+ const int colCount = Header_GetItemCount(nmhdr->hwndFrom);
for ( int col = 0; col < colCount; col++ )
{
for ( int col = 0; col < colCount; col++ )
{
if ( Header_GetItemRect(nmhdr->hwndFrom, col, &rect) )
{
if ( Header_GetItemRect(nmhdr->hwndFrom, col, &rect) )
{
- if ( ::PtInRect(&rect, *ptClick) )
+ if ( ::PtInRect(&rect, ptClickHeader) )