Restore compilation with --enable-stl, fix SetFocus with the generic control, and re-instate the use of ids to sort when a specific sort function isn't being used.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
ff1bd293e1
commit
bc63f2c969
@ -341,6 +341,8 @@ class WXDLLEXPORT wxListCtrl: public wxControl
|
||||
|
||||
virtual int GetScrollPos(int orient) const;
|
||||
|
||||
virtual void SetFocus();
|
||||
|
||||
virtual void SetDropTarget( wxDropTarget *dropTarget );
|
||||
virtual wxDropTarget* GetDropTarget() const;
|
||||
|
||||
|
@ -38,6 +38,8 @@
|
||||
#include "wx/sysopt.h"
|
||||
#include "wx/timer.h"
|
||||
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
#define wxMAC_ALWAYS_USE_GENERIC_LISTCTRL wxT("mac.listctrl.always_use_generic")
|
||||
|
||||
#if wxUSE_EXTENDED_RTTI
|
||||
@ -113,9 +115,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject)
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent)
|
||||
|
||||
WX_DECLARE_EXPORTED_LIST(wxListItem, wxListItemList);
|
||||
WX_DECLARE_HASH_MAP( int, wxListItem*, wxIntegerHash, wxIntegerEqual, wxListItemList );
|
||||
|
||||
#include "wx/listimpl.cpp"
|
||||
WX_DEFINE_LIST(wxListItemList)
|
||||
WX_DEFINE_LIST(wxColumnList)
|
||||
|
||||
// so we can check for column clicks
|
||||
@ -2198,6 +2200,17 @@ wxDropTarget *wxListCtrl::GetDropTarget() const
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void wxListCtrl::SetFocus()
|
||||
{
|
||||
if (m_genericImpl)
|
||||
{
|
||||
m_genericImpl->SetFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
wxWindow::SetFocus();
|
||||
}
|
||||
|
||||
// wxMac internal data structures
|
||||
|
||||
wxMacListCtrlItem::~wxMacListCtrlItem()
|
||||
@ -2848,10 +2861,16 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
bool retval = false;
|
||||
wxString itemText;
|
||||
wxString otherItemText;
|
||||
long itemOrder;
|
||||
long otherItemOrder;
|
||||
|
||||
int colId = sortProperty - kMinColumnId;
|
||||
|
||||
wxListCtrl* list = wxDynamicCast( GetPeer() , wxListCtrl );
|
||||
|
||||
DataBrowserSortOrder sort;
|
||||
verify_noerr(GetSortOrder(&sort));
|
||||
|
||||
if (colId >= 0)
|
||||
{
|
||||
if (!m_isVirtual)
|
||||
@ -2872,13 +2891,25 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
if (item1 > -1 && item2 > -1)
|
||||
{
|
||||
int result = func(item1, item2, list->GetCompareFuncData());
|
||||
return result >= 0;
|
||||
if (sort == kDataBrowserOrderIncreasing)
|
||||
return result >= 0;
|
||||
else
|
||||
return result < 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (item->HasColumnInfo(colId))
|
||||
itemText = item->GetColumnInfo(colId)->GetText();
|
||||
{
|
||||
wxListItem* colItem = item->GetColumnInfo(colId);
|
||||
itemText = colItem->GetText();
|
||||
itemOrder = colItem->GetId();
|
||||
}
|
||||
if (otherItem->HasColumnInfo(colId))
|
||||
otherItemText = otherItem->GetColumnInfo(colId)->GetText();
|
||||
{
|
||||
wxListItem* colItem = otherItem->GetColumnInfo(colId);
|
||||
otherItemText = colItem->GetText();
|
||||
otherItemOrder = colItem->GetId();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2887,20 +2918,25 @@ Boolean wxMacDataBrowserListCtrlControl::CompareItems(DataBrowserItemID itemOneI
|
||||
long otherItemNum = (long)itemTwoID;
|
||||
itemText = list->OnGetItemText( itemNum-1, colId );
|
||||
otherItemText = list->OnGetItemText( otherItemNum-1, colId );
|
||||
|
||||
// virtual listctrls don't support sorting
|
||||
return itemNum < otherItemNum;
|
||||
|
||||
|
||||
}
|
||||
|
||||
DataBrowserSortOrder sort;
|
||||
verify_noerr(GetSortOrder(&sort));
|
||||
|
||||
if ( sort == kDataBrowserOrderIncreasing )
|
||||
if ( sort == kDataBrowserOrderIncreasing && !m_sortOrder == SortOrder_None )
|
||||
{
|
||||
retval = itemText.CmpNoCase( otherItemText ) > 0;
|
||||
}
|
||||
else if ( sort == kDataBrowserOrderDecreasing )
|
||||
else if ( sort == kDataBrowserOrderDecreasing && !m_sortOrder == SortOrder_None )
|
||||
{
|
||||
retval = itemText.CmpNoCase( otherItemText ) < 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
retval = itemOrder < otherItemOrder;
|
||||
}
|
||||
}
|
||||
else{
|
||||
// fallback for undefined cases
|
||||
@ -3009,7 +3045,7 @@ wxMacDataItem* wxMacDataBrowserListCtrlControl::CreateItem()
|
||||
|
||||
wxMacListCtrlItem::wxMacListCtrlItem()
|
||||
{
|
||||
m_rowItems = wxListItemList( wxKEY_INTEGER );
|
||||
m_rowItems = wxListItemList();
|
||||
}
|
||||
|
||||
int wxMacListCtrlItem::GetColumnImageValue( unsigned int column )
|
||||
@ -3049,15 +3085,13 @@ void wxMacListCtrlItem::SetColumnTextValue( unsigned int column, const wxString&
|
||||
|
||||
wxListItem* wxMacListCtrlItem::GetColumnInfo( unsigned int column )
|
||||
{
|
||||
wxListItemList::compatibility_iterator node = m_rowItems.Find( column );
|
||||
wxASSERT_MSG( node, _T("invalid column index in wxMacListCtrlItem") );
|
||||
|
||||
return node->GetData();
|
||||
wxASSERT_MSG( HasColumnInfo(column), _T("invalid column index in wxMacListCtrlItem") );
|
||||
return m_rowItems[column];
|
||||
}
|
||||
|
||||
bool wxMacListCtrlItem::HasColumnInfo( unsigned int column )
|
||||
{
|
||||
return m_rowItems.Find( column ) != NULL;
|
||||
return !(m_rowItems.find( column ) == m_rowItems.end());
|
||||
}
|
||||
|
||||
void wxMacListCtrlItem::SetColumnInfo( unsigned int column, wxListItem* item )
|
||||
@ -3066,7 +3100,7 @@ void wxMacListCtrlItem::SetColumnInfo( unsigned int column, wxListItem* item )
|
||||
if ( !HasColumnInfo(column) )
|
||||
{
|
||||
wxListItem* listItem = new wxListItem(*item);
|
||||
m_rowItems.Append( column, listItem );
|
||||
m_rowItems[column] = listItem;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user