OTHER CHANGES
=============
+2.5.1
+-----
+
+wxMSW:
+
+- fixed wxTE_*WRAP styles handling
+
+All (GUI):
+
+- added wxListCtrl::GetViewRect()
+
+
2.5.0
-----
Gets the index of the topmost visible item when in
list or report view.
+
+\membersection{wxRect}{wxListCtrl::GetViewRect}\label{wxlistctrlgetviewrect}
+
+\constfunc{wxRect}{GetViewRect}{\void}
+
+Returns the rectangle taken by all items in the control. In other words, if the
+controls client size were equal to the size of this rectangle, no scrollbars
+would be needed and no free space would be left.
+
+Note that this function only works in the icon and small icon views, not in
+list or report views (this is a limitation of the native Win32 control).
+
+
\membersection{wxListCtrl::HitTest}\label{wxlistctrlhittest}
\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}}
int GetColumnWidth( int col ) const;
bool SetColumnWidth( int col, int width);
int GetCountPerPage() const; // not the same in wxGLC as in Windows, I think
+ wxRect GetViewRect() const;
bool GetItem( wxListItem& info ) const;
bool SetItem( wxListItem& info ) ;
// or small icon view)
int GetCountPerPage() const;
+ // return the total area occupied by all the items (icon/small icon only)
+ wxRect GetViewRect() const;
+
// Gets the edit control for editing labels.
wxTextCtrl* GetEditControl() const;
// item position/size
// ----------------------------------------------------------------------------
+wxRect wxListMainWindow::GetViewRect() const
+{
+ wxASSERT_MSG( !HasFlag(wxLC_REPORT | wxLC_LIST),
+ _T("wxListCtrl::GetViewRect() only works in icon mode") );
+
+ // 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++ )
+ {
+ wxRect r;
+ GetItemRect(i, r);
+
+ wxCoord x = r.GetRight(),
+ y = r.GetBottom();
+
+ if ( x > xMax )
+ xMax = x;
+ if ( y > yMax )
+ yMax = y;
+ }
+ }
+
+#if 0
+ // account for the scrollbar
+ yMax += wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y);
+ xMax += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
+#endif
+
+ return wxRect(0, 0, xMax, yMax);
+}
+
void wxListMainWindow::GetItemRect( long index, wxRect &rect ) const
{
wxCHECK_RET( index >= 0 && (size_t)index < GetItemCount(),
return TRUE;
}
+wxRect wxGenericListCtrl::GetViewRect() const
+{
+ return m_mainWin->GetViewRect();
+}
+
bool wxGenericListCtrl::GetItemRect( long item, wxRect &rect, int WXUNUSED(code) ) const
{
m_mainWin->GetItemRect( item, rect );
return SetItem(info);
}
+wxRect wxListCtrl::GetViewRect() const
+{
+ wxASSERT_MSG( !HasFlag(wxLC_REPORT | wxLC_LIST),
+ _T("wxListCtrl::GetViewRect() only works in icon mode") );
+
+ RECT rc;
+ if ( !ListView_GetViewRect(GetHwnd(), &rc) )
+ {
+ wxLogDebug(_T("ListView_GetViewRect() failed."));
+
+ wxZeroMemory(rc);
+ }
+ else
+ {
+ // VZ: I have no idea why is this needed but without it the listbook
+ // control shows a tiny vertical scrollbar, make sure that it works
+ // correctly if you decide to change this
+ rc.bottom += 5;
+ }
+
+ wxRect rect;
+ wxCopyRECTToRect(rc, rect);
+
+ return rect;
+}
+
// Gets the item rectangle
bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const
{