X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c7f49f569dcabe360a3a51a94eff77225b39d69..8f2b1cfd3942412889d9f7e2fd2efe27e2d049c1:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 3a758b2ccd..6674b681f6 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -23,7 +23,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "listctrl.h" #pragma implementation "listctrlbase.h" #endif @@ -255,7 +255,7 @@ WX_DECLARE_LIST(wxListItemData, wxListItemDataList); #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxListItemDataList); -class WXDLLEXPORT wxListLineData +class wxListLineData { public: // the list of subitems: only may have more than one item in report mode @@ -476,7 +476,7 @@ WX_DECLARE_LIST(wxListHeaderData, wxListHeaderDataList); #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxListHeaderDataList); -class WXDLLEXPORT wxListMainWindow : public wxScrolledWindow +class wxListMainWindow : public wxScrolledWindow { public: wxListMainWindow(); @@ -1214,7 +1214,7 @@ void wxListLineData::CalculateSize( wxDC *dc, int spacing ) } void wxListLineData::SetPosition( int x, int y, - int window_width, + int WXUNUSED(window_width), int spacing ) { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); @@ -3778,6 +3778,13 @@ void wxListMainWindow::GetItemRect( long index, wxRect &rect ) const wxCHECK_RET( index >= 0 && (size_t)index < GetItemCount(), _T("invalid index in GetItemRect") ); + // ensure that we're laid out, otherwise we could return nonsense + if ( m_dirty ) + { + wxConstCast(this, wxListMainWindow)-> + RecalculatePositions(TRUE /* no refresh */); + } + rect = GetLineRect((size_t)index); CalcScrolledPosition(rect.x, rect.y, &rect.x, &rect.y);