+ wxASSERT_MSG( !HasFlag(wxLC_LIST), "not implemented for list view" );
+
+ // we need to find the longest/tallest label
+ wxCoord xMax = 0, yMax = 0;
+ const int count = GetItemCount();
+ if ( count )
+ {
+ for ( int i = 0; i < count; i++ )
+ {
+ // we need logical, not physical, coordinates here, so use
+ // GetLineRect() instead of GetItemRect()
+ wxRect r = GetLineRect(i);
+
+ wxCoord x = r.GetRight(),
+ y = r.GetBottom();
+
+ if ( x > xMax )
+ xMax = x;
+ if ( y > yMax )
+ yMax = y;
+ }
+ }
+
+ // some fudge needed to make it look prettier
+ xMax += 2 * EXTRA_BORDER_X;
+ yMax += 2 * EXTRA_BORDER_Y;
+
+ // account for the scrollbars if necessary
+ const wxSize sizeAll = GetClientSize();
+ if ( xMax > sizeAll.x )
+ yMax += wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y);
+ if ( yMax > sizeAll.y )
+ xMax += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
+
+ return wxRect(0, 0, xMax, yMax);
+}
+
+bool
+wxListMainWindow::GetSubItemRect(long item, long subItem, wxRect& rect) const
+{
+ wxCHECK_MSG( subItem == wxLIST_GETSUBITEMRECT_WHOLEITEM || InReportView(),
+ false,
+ _T("GetSubItemRect only meaningful in report view") );
+ wxCHECK_MSG( item >= 0 && (size_t)item < GetItemCount(), false,
+ _T("invalid item in GetSubItemRect") );