X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/64894596ea0351499a68849cb17233d2f16f850d..a188ac2988b6fedeead7a809124b8eaa2290c020:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index dd735d5f19..b62c9cf1f8 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -56,6 +56,9 @@ #include #endif +#if defined(__WXMSW__) && !defined(__WXWINCE__) && !defined(__WXUNIVERSAL__) + #define "wx/msw/wrapwin.h" +#endif // NOTE: If using the wxListBox visual attributes works everywhere then this can // be removed, as well as the #else case below. @@ -803,6 +806,8 @@ void wxListLineData::DrawInReportMode( wxDC *dc, #if ( !defined(__WXGTK20__) && !defined(__WXMAC__) ) { dc->DrawRectangle( rectHL ); + + wxUnusedVar(current); } #else { @@ -1222,7 +1227,7 @@ void wxListHeaderWindow::DrawCurrent() wxScreenDC dc; dc.SetLogicalFunction( wxINVERT ); - dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) ); + dc.SetPen( wxPen(*wxBLACK, 2) ); dc.SetBrush( *wxTRANSPARENT_BRUSH ); AdjustDC(dc); @@ -1550,7 +1555,7 @@ void wxListTextCtrlWrapper::OnKillFocus( wxFocusEvent &event ) // wxListMainWindow //----------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledCanvas) +BEGIN_EVENT_TABLE(wxListMainWindow, wxWindow) EVT_PAINT (wxListMainWindow::OnPaint) EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse) EVT_CHAR (wxListMainWindow::OnChar) @@ -2238,6 +2243,9 @@ wxTextCtrl *wxListMainWindow::EditLabel(long item, wxClassInfo* textControlClass // been added and no screen update taken place. if ( m_dirty ) { + // TODO: use wxTheApp->SafeYieldFor(NULL, wxEVT_CATEGORY_UI) instead + // so that no pending events may change the item count (see below) + // IMPORTANT: needs to be tested! wxSafeYield(); // Pending events dispatched by wxSafeYield might have changed the item @@ -4144,7 +4152,7 @@ int wxListMainWindow::GetItemWidthWithImage(wxListItem * item) // ---------------------------------------------------------------------------- static wxListCtrlCompare list_ctrl_compare_func_2; -static long list_ctrl_compare_data; +static wxIntPtr list_ctrl_compare_data; int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData **arg2 ) { @@ -4158,7 +4166,7 @@ int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData return list_ctrl_compare_func_2( data1, data2, list_ctrl_compare_data ); } -void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data ) +void wxListMainWindow::SortItems( wxListCtrlCompare fn, wxIntPtr data ) { // selections won't make sense any more after sorting the items so reset // them @@ -4297,13 +4305,9 @@ void wxGenericListCtrl::CreateOrDestroyHeaderWindowAsNeeded() wxTAB_TRAVERSAL ); -#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON +#if defined( __WXMAC__ ) wxFont font; -#if wxOSX_USE_ATSU_TEXT - font.MacCreateFromThemeFont( kThemeSmallSystemFont ); -#else - font.MacCreateFromUIFont( kCTFontSystemFontType ); -#endif + font.CreateSystemFont( wxOSX_SYSTEM_FONT_SMALL ); m_headerWin->SetFont( font ); #endif @@ -4361,24 +4365,22 @@ wxBorder wxGenericListCtrl::GetDefaultBorder() const return wxBORDER_THEME; } -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXWINCE__) && !defined(__WXUNIVERSAL__) WXLRESULT wxGenericListCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { WXLRESULT rc = wxControl::MSWWindowProc(nMsg, wParam, lParam); -#ifndef __WXWINCE__ // we need to process arrows ourselves for scrolling if ( nMsg == WM_GETDLGCODE ) { rc |= DLGC_WANTARROWS; } -#endif return rc; } -#endif +#endif // __WXMSW__ wxSize wxGenericListCtrl::GetSizeAvailableForScrollTarget(const wxSize& size) { @@ -4916,7 +4918,7 @@ bool wxGenericListCtrl::ScrollList( int dx, int dy ) // or zero if the two items are equivalent. // data is arbitrary data to be passed to the sort function. -bool wxGenericListCtrl::SortItems( wxListCtrlCompare fn, long data ) +bool wxGenericListCtrl::SortItems( wxListCtrlCompare fn, wxIntPtr data ) { m_mainWin->SortItems( fn, data ); return true; @@ -5196,4 +5198,18 @@ void wxGenericListCtrl::Refresh(bool eraseBackground, const wxRect *rect) } } +void wxGenericListCtrl::Update() +{ + if ( m_mainWin ) + { + if ( m_mainWin->m_dirty ) + m_mainWin->RecalculatePositions(); + + m_mainWin->Update(); + } + + if ( m_headerWin ) + m_headerWin->Update(); +} + #endif // wxUSE_LISTCTRL