X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5b98eb2fa6602cc9d1f19870c063c8f5e9cbe68f..e28b0102bd463b8a58ceae032c88096f3922966d:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index b68ffb85ae..22cf70aa38 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -1449,8 +1449,8 @@ void wxListLineData::SetPosition( int x, int y, if ( item->HasImage() ) { - m_gi->m_rectIcon.x = m_gi->m_rectAll.x + 4 - + (spacing - m_gi->m_rectIcon.width)/2; + m_gi->m_rectIcon.x = m_gi->m_rectAll.x + 4 + + (m_gi->m_rectAll.width - m_gi->m_rectIcon.width) / 2; m_gi->m_rectIcon.y = m_gi->m_rectAll.y + 4; } @@ -3772,6 +3772,14 @@ void wxListMainWindow::SetItemState( long litem, long state, long stateMask ) { ResetCurrent(); + if ( IsSingleSel() ) + { + // we must unselect the old current item as well or we + // might end up with more than one selected item in a + // single selection control + HighlightLine(oldCurrent, FALSE); + } + RefreshLine( oldCurrent ); } } @@ -4492,38 +4500,6 @@ void wxListMainWindow::GetVisibleLinesRange(size_t *from, size_t *to) IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) -wxListItem::wxListItem() -{ - m_attr = NULL; - - Clear(); -} - -void wxListItem::Clear() -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = -1; - m_data = 0; - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; - m_text.clear(); - - ClearAttributes(); -} - -void wxListItem::ClearAttributes() -{ - if (m_attr) - { - delete m_attr; - m_attr = NULL; - } -} - // ------------------------------------------------------------------------------------- // wxListCtrl // ------------------------------------------------------------------------------------- @@ -4980,6 +4956,13 @@ void wxListCtrl::ClearAll() bool wxListCtrl::DeleteColumn( int col ) { m_mainWin->DeleteColumn( col ); + + // if we don't have the header any longer, we need to relayout the window + if ( !GetColumnCount() ) + { + ResizeReportView(FALSE /* no header */); + } + return TRUE; } @@ -5051,8 +5034,17 @@ long wxListCtrl::InsertItem( long index, const wxString &label, int imageIndex ) long wxListCtrl::InsertColumn( long col, wxListItem &item ) { - wxASSERT( m_headerWin ); + wxCHECK_MSG( m_headerWin, -1, _T("can't add column in non report mode") ); + m_mainWin->InsertColumn( col, item ); + + // if we hadn't had header before and have it now we need to relayout the + // window + if ( GetColumnCount() == 1 ) + { + ResizeReportView(TRUE /* have header */); + } + m_headerWin->Refresh(); return 0; @@ -5099,7 +5091,7 @@ bool wxListCtrl::SortItems( wxListCtrlCompare fn, long data ) // event handlers // ---------------------------------------------------------------------------- -void wxListCtrl::OnSize(wxSizeEvent& event) +void wxListCtrl::OnSize(wxSizeEvent& WXUNUSED(event)) { if ( !m_mainWin ) return; @@ -5243,19 +5235,19 @@ void wxListCtrl::SetFocus() // virtual list control support // ---------------------------------------------------------------------------- -wxString wxListCtrl::OnGetItemText(long item, long col) const +wxString wxListCtrl::OnGetItemText(long WXUNUSED(item), long WXUNUSED(col)) const { // this is a pure virtual function, in fact - which is not really pure // because the controls which are not virtual don't need to implement it - wxFAIL_MSG( _T("not supposed to be called") ); + wxFAIL_MSG( _T("wxListCtrl::OnGetItemText not supposed to be called") ); return wxEmptyString; } -int wxListCtrl::OnGetItemImage(long item) const +int wxListCtrl::OnGetItemImage(long WXUNUSED(item)) const { // same as above - wxFAIL_MSG( _T("not supposed to be called") ); + wxFAIL_MSG( _T("wxListCtrl::OnGetItemImage not supposed to be called") ); return -1; }