X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a4fec5b41e2109e2c4822d3015aa0e442754bfbb..b85b06e13d22e7fc1604ec1a49caa1227a1b3d36:/src/osx/carbon/listctrl_mac.cpp?ds=sidebyside diff --git a/src/osx/carbon/listctrl_mac.cpp b/src/osx/carbon/listctrl_mac.cpp index 915fd58aef..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); @@ -1385,10 +1401,10 @@ wxRect wxListCtrl::GetViewRect() const return rect; } -bool wxListCtrl::GetSubItemRect( long item, long WXUNUSED(subItem), wxRect& rect, int code ) const +bool wxListCtrl::GetSubItemRect( long item, long subItem, wxRect& rect, int code ) const { if (m_genericImpl) - return m_genericImpl->GetItemRect(item, rect, code); + return m_genericImpl->GetSubItemRect(item, subItem, rect, code); // TODO: implement for DataBrowser implementation return false; @@ -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(); @@ -2205,7 +2228,7 @@ bool wxListCtrl::ScrollList(int dx, int dy) } -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) +bool wxListCtrl::SortItems(wxListCtrlCompare fn, wxIntPtr data) { if (m_genericImpl) return m_genericImpl->SortItems(fn, data); @@ -2682,7 +2705,7 @@ void wxMacDataBrowserListCtrlControl::DrawItem( int imgIndex = -1; DataBrowserTableViewColumnIndex listColumn = 0; - OSStatus err = GetColumnPosition( property, &listColumn ); + GetColumnPosition( property, &listColumn ); wxListCtrl* list = wxDynamicCast( GetWXPeer() , wxListCtrl ); wxMacListCtrlItem* lcItem;