diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 96afe78e75..ba3e871b45 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -1117,8 +1117,8 @@ void MyListCtrl::OnListKeyDown(wxListEvent& event) } break; - case '1': // show sub item bounding rectangle - case '2': + case '1': // show sub item bounding rectangle for the given column + case '2': // (and icon/label rectangle if Shift/Ctrl is pressed) case '3': case '4': // this column is invalid but we want to test it too if ( InReportView() ) @@ -1126,7 +1126,14 @@ void MyListCtrl::OnListKeyDown(wxListEvent& event) int subItem = event.GetKeyCode() - '1'; item = event.GetIndex(); wxRect r; - if ( !GetSubItemRect(item, subItem, r) ) + + int code = wxLIST_RECT_BOUNDS; + if ( wxGetKeyState(WXK_SHIFT) ) + code = wxLIST_RECT_ICON; + else if ( wxGetKeyState(WXK_CONTROL) ) + code = wxLIST_RECT_LABEL; + + if ( !GetSubItemRect(item, subItem, r, code) ) { wxLogError(wxT("Failed to retrieve rect of item %ld column %d"), item, subItem + 1); break; diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 52bf721d5e..8efb534922 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1183,7 +1183,7 @@ bool wxListCtrl::GetSubItemRect(long item, long subItem, wxRect& rect, int code) // there is no way to retrieve the first sub item bounding rectangle using // wxGetListCtrlSubItemRect() as 0 means the whole item, so we need to // truncate it at first column ourselves - if ( subItem == 0 ) + if ( subItem == 0 && code == wxLIST_RECT_BOUNDS ) rect.width = GetColumnWidth(0); return true;