X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29686ebc000a1d95ae56a58b9ff2a5a6f23eed84..11716cbe14313011016472f56edb51c55aabe852:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index ddd950997a..d76348f29b 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -342,12 +342,23 @@ bool wxListHeaderData::IsHit( int x, int y ) const void wxListHeaderData::GetItem( wxListItem& item ) { - item.m_mask = m_mask; - item.m_text = m_text; - item.m_image = m_image; - item.m_format = m_format; - item.m_width = m_width; - item.m_state = m_state; + long mask = item.m_mask; + if ( !mask ) + { + // by default, get everything for backwards compatibility + mask = -1; + } + + if ( mask & wxLIST_MASK_STATE ) + item.m_state = m_state; + if ( mask & wxLIST_MASK_TEXT ) + item.m_text = m_text; + if ( mask & wxLIST_MASK_IMAGE ) + item.m_image = m_image; + if ( mask & wxLIST_MASK_WIDTH ) + item.m_width = m_width; + if ( mask & wxLIST_MASK_FORMAT ) + item.m_format = m_format; } int wxListHeaderData::GetImage() const @@ -923,7 +934,6 @@ void wxListLineData::ReverseHighlight( void ) BEGIN_EVENT_TABLE(wxListHeaderWindow,wxWindow) EVT_PAINT (wxListHeaderWindow::OnPaint) EVT_MOUSE_EVENTS (wxListHeaderWindow::OnMouse) - EVT_SET_FOCUS (wxListHeaderWindow::OnSetFocus) END_EVENT_TABLE() void wxListHeaderWindow::Init() @@ -1330,12 +1340,6 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) } } -void wxListHeaderWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_owner->SetFocus(); - m_owner->Update(); -} - bool wxListHeaderWindow::SendListEvent(wxEventType type, const wxPoint& pos) { wxWindow *parent = GetParent(); @@ -2412,12 +2416,7 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event ) int command = event.RightIsDown() ? wxEVT_COMMAND_LIST_BEGIN_RDRAG : wxEVT_COMMAND_LIST_BEGIN_DRAG; - wxListEvent le( command, GetParent()->GetId() ); - le.SetEventObject( GetParent() ); - le.m_item.m_itemId = - le.m_itemIndex = m_lineLastClicked; - le.m_pointDrag = m_dragStart; - GetParent()->GetEventHandler()->ProcessEvent( le ); + SendNotify( m_lineLastClicked, command, m_dragStart ); return; } @@ -2754,18 +2753,6 @@ void wxListMainWindow::OnCharHook( wxKeyEvent &event ) void wxListMainWindow::OnChar( wxKeyEvent &event ) { -#ifdef __WXGTK__ - // Under GTK we get some keys (notably cursor arrows) even while the in - // place editing control is shown. Processing them here results in UI - // problems, e.g. we could change the current item on WXK_DOWN press but - // the edit control would remain on the item above. So we need to either - // cancel in-place editing or ignore any such keys while it's active. To - // avoid aggravating the user by losing his changes just because a cursor - // arrow key was mistakenly pressed, do nothing in this case. - if ( m_textctrlWrapper ) - return; -#endif // __WXGTK__ - wxWindow *parent = GetParent(); // propagate the char event upwards @@ -5160,18 +5147,10 @@ void wxGenericListCtrl::DoScreenToClient( int *x, int *y ) const wxListCtrlBase::DoScreenToClient(x, y); } -void wxGenericListCtrl::SetFocus() -{ - // The test in window.cpp fails as we are a composite - // window, so it checks against "this", but not m_mainWin. - if ( DoFindFocus() != this ) - m_mainWin->SetFocus(); -} - wxSize wxGenericListCtrl::DoGetBestClientSize() const { - // Something is better than nothing even if this is completely arbitrary. - wxSize sizeBest(100, 80); + // The base class version can compute the best size in report view only. + wxSize sizeBest = wxListCtrlBase::DoGetBestClientSize(); if ( !InReportView() ) {