X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0698ed3ca89d0e7d8bf01df1d7e7973798b89768..b85b06e13d22e7fc1604ec1a49caa1227a1b3d36:/src/osx/carbon/listctrl_mac.cpp diff --git a/src/osx/carbon/listctrl_mac.cpp b/src/osx/carbon/listctrl_mac.cpp index 62b4566386..668d141a0a 100644 --- a/src/osx/carbon/listctrl_mac.cpp +++ b/src/osx/carbon/listctrl_mac.cpp @@ -300,6 +300,9 @@ wxMacListCtrlEventDelegate::wxMacListCtrlEventDelegate( wxListCtrl* list, int id bool wxMacListCtrlEventDelegate::ProcessEvent( wxEvent& event ) { + int id = event.GetId(); + wxObject* obj = event.GetEventObject(); + // even though we use a generic list ctrl underneath, make sure // we present ourselves as wxListCtrl. event.SetEventObject( m_list ); @@ -307,10 +310,20 @@ bool wxMacListCtrlEventDelegate::ProcessEvent( wxEvent& event ) if ( !event.IsKindOf( CLASSINFO( wxCommandEvent ) ) ) { - if (m_list->HandleWindowEvent( event )) + if (m_list->GetEventHandler()->ProcessEvent( event )) + { + event.SetId(id); + event.SetEventObject(obj); return true; + } } - return wxEvtHandler::ProcessEvent(event); + // Also try with the original id + bool success = wxEvtHandler::ProcessEvent(event); + event.SetId(id); + event.SetEventObject(obj); + if (!success && id != m_id) + success = wxEvtHandler::ProcessEvent(event); + return success; } //----------------------------------------------------------------------------- @@ -616,7 +629,8 @@ void wxListCtrl::OnLeftDown(wxMouseEvent& event) void wxListCtrl::OnDblClick(wxMouseEvent& event) { - m_current = -1; + if ( m_renameTimer->IsRunning() ) + m_renameTimer->Stop(); event.Skip(); } @@ -1128,6 +1142,8 @@ bool wxListCtrl::GetItem(wxListItem& info) const if (info.m_itemId >= 0 && info.m_itemId < GetItemCount()) { m_dbImpl->MacGetColumnInfo(info.m_itemId, info.m_col, info); + // MacGetColumnInfo returns erroneous information in the state field, so zero it. + info.SetState(0); if (info.GetMask() & wxLIST_MASK_STATE) { DataBrowserItemID id = (DataBrowserItemID)m_dbImpl->GetItemFromLine(info.m_itemId); @@ -1654,6 +1670,9 @@ long wxListCtrl::GetNextItem(long item, int geom, int state) const if ( !IsVirtual() ) id = (DataBrowserItemID)m_dbImpl->GetItemFromLine(line); + if ( (state & wxLIST_STATE_FOCUSED) && (m_current == line)) + return line; + if ( (state == wxLIST_STATE_DONTCARE ) ) return line; @@ -1674,6 +1693,9 @@ long wxListCtrl::GetNextItem(long item, int geom, int state) const if ( !IsVirtual() ) id = (DataBrowserItemID)m_dbImpl->GetItemFromLine(line); + if ( (state & wxLIST_STATE_FOCUSED) && (m_current == line)) + return line; + if ( (state == wxLIST_STATE_DONTCARE ) ) return line; @@ -1785,6 +1807,7 @@ bool wxListCtrl::DeleteItem(long item) // Deletes all items bool wxListCtrl::DeleteAllItems() { + m_current = -1; if (m_genericImpl) return m_genericImpl->DeleteAllItems();