X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/470caaf9df1fe6796e6efc7ec17b627bb0180aff..0834112f89c4c5da7864e17e6f483ce296798ce6:/src/generic/listctrl.cpp?ds=inline diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 032bb8344b..e19e1ac69c 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -295,7 +295,7 @@ void wxListLineData::CalculateSize( wxDC *dc, int spacing ) { wxListItemData *item = (wxListItemData*)node->Data(); wxString s = item->GetText(); - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( s, &lw, &lh ); if (lw > m_spacing) m_bound_all.width = lw; } @@ -308,14 +308,14 @@ void wxListLineData::CalculateSize( wxDC *dc, int spacing ) { wxListItemData *item = (wxListItemData*)node->Data(); wxString s = item->GetText(); - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( s, &lw, &lh ); m_bound_all.width = lw; m_bound_all.height = lh; if (item->HasImage()) { - int w = 0; - int h = 0; + wxCoord w = 0; + wxCoord h = 0; m_owner->GetImageSize( item->GetImage(), w, h ); m_bound_all.width += 4 + w; if (h > m_bound_all.height) m_bound_all.height = h; @@ -334,7 +334,7 @@ void wxListLineData::CalculateSize( wxDC *dc, int spacing ) wxString s; item->GetText( s ); if (s.IsNull()) s = "H"; - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( s, &lw, &lh ); item->SetSize( item->GetWidth(), lh ); m_bound_all.width += lw; @@ -384,7 +384,7 @@ void wxListLineData::SetPosition( wxDC *dc, int x, int y, int window_width ) { wxString s; item->GetText( s ); - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( s, &lw, &lh ); if (m_bound_all.width > m_spacing) m_bound_label.x = m_bound_all.x; @@ -432,7 +432,7 @@ void wxListLineData::SetPosition( wxDC *dc, int x, int y, int window_width ) } case wxLC_REPORT: { - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( "H", &lw, &lh ); m_bound_all.x = 0; m_bound_all.y -= 0; @@ -448,7 +448,7 @@ void wxListLineData::SetPosition( wxDC *dc, int x, int y, int window_width ) wxString s; item->GetText( s ); if (s.IsEmpty()) s = wxT("H"); - long lw,lh; + wxCoord lw,lh; dc->GetTextExtent( s, &lw, &lh ); m_bound_label.width = lw; m_bound_label.height = lh; @@ -710,11 +710,11 @@ void wxListLineData::DoDraw( wxDC *dc, bool hilight, bool paintBG ) void wxListLineData::Hilight( bool on ) { if (on == m_hilighted) return; + m_hilighted = on; if (on) m_owner->SelectLine( this ); else m_owner->DeselectLine( this ); - m_hilighted = on; } void wxListLineData::ReverseHilight( void ) @@ -1168,6 +1168,8 @@ wxListMainWindow::~wxListMainWindow() void wxListMainWindow::RefreshLine( wxListLineData *line ) { + if (m_dirty) return; + int x = 0; int y = 0; int w = 0; @@ -1258,8 +1260,8 @@ void wxListMainWindow::SendNotify( wxListLineData *line, wxEventType command ) le.SetEventObject( GetParent() ); le.m_itemIndex = GetIndexOfLine( line ); line->GetItem( 0, le.m_item ); -// GetParent()->GetEventHandler()->ProcessEvent( le ); - GetParent()->GetEventHandler()->AddPendingEvent( le ); + GetParent()->GetEventHandler()->ProcessEvent( le ); +// GetParent()->GetEventHandler()->AddPendingEvent( le ); } void wxListMainWindow::FocusLine( wxListLineData *WXUNUSED(line) ) @@ -1828,8 +1830,8 @@ void wxListMainWindow::GetImageSize( int index, int &width, int &height ) int wxListMainWindow::GetTextLength( wxString &s ) { wxClientDC dc( this ); - long lw = 0; - long lh = 0; + wxCoord lw = 0; + wxCoord lh = 0; dc.GetTextExtent( s, &lw, &lh ); return lw + 6; } @@ -1909,7 +1911,7 @@ void wxListMainWindow::SetColumnWidth( int col, int width ) { wxListItemData *item = (wxListItemData*)n->Data(); int current = 0, ix = 0, iy = 0; - long lx = 0, ly = 0; + wxCoord lx = 0, ly = 0; if (item->HasImage()) { GetImageSize( item->GetImage(), ix, iy ); @@ -2674,12 +2676,15 @@ wxListCtrl::~wxListCtrl() { } -bool wxListCtrl::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, +bool wxListCtrl::Create(wxWindow *parent, + wxWindowID id, + const wxPoint &pos, + const wxSize &size, + long style, #if wxUSE_VALIDATORS - long style, const wxValidator &validator, + const wxValidator &validator, #endif - const wxString &name ) + const wxString &name) { m_imageListNormal = (wxImageList *) NULL; m_imageListSmall = (wxImageList *) NULL; @@ -2687,32 +2692,29 @@ bool wxListCtrl::Create( wxWindow *parent, wxWindowID id, m_mainWin = (wxListMainWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL; - long s = style; - -#ifdef __VMS__ -#pragma message disable codcauunr - // VMS reports on this part the warning: - // statement either is unreachable or causes unreachable code -#endif - if ((s & wxLC_REPORT == 0) && - (s & wxLC_LIST == 0) && - (s & wxLC_ICON == 0)) + if ( !(style & (wxLC_REPORT | wxLC_LIST | wxLC_ICON)) ) { - s = s | wxLC_LIST; + style = style | wxLC_LIST; } -#ifdef __VMS__ -#pragma message enable codcauunr -#endif - bool ret = wxControl::Create( parent, id, pos, size, s, name ); + bool ret = wxControl::Create( parent, + id, + pos, + size, + style, +#if wxUSE_VALIDATORS + validator, +#endif + name ); #if wxUSE_VALIDATORS SetValidator( validator ); #endif - if (s & wxSUNKEN_BORDER) s -= wxSUNKEN_BORDER; + if (style & wxSUNKEN_BORDER) + style -= wxSUNKEN_BORDER; - m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, s ); + m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, style ); if (HasFlag(wxLC_REPORT)) m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(size.x,23), wxTAB_TRAVERSAL ); @@ -3098,7 +3100,10 @@ long wxListCtrl::InsertItem( long index, const wxString &label, int imageIndex ) long wxListCtrl::InsertColumn( long col, wxListItem &item ) { + wxASSERT( m_headerWin ); m_mainWin->InsertColumn( col, item ); + m_headerWin->Refresh(); + return 0; }