From 6e2f308461d54c1a8df63feff4a652c56f993801 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 15 Apr 2009 21:23:50 +0000 Subject: [PATCH] use wxUIntPtr instead of long for 3rd parameter of wxListCtrl::SortItems() to allow passing pointers to it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 4 ++++ include/wx/generic/listctrl.h | 2 +- include/wx/generic/private/listctrl.h | 2 +- include/wx/listbase.h | 3 ++- include/wx/msw/listctrl.h | 2 +- include/wx/osx/listctrl.h | 6 +++--- interface/wx/listctrl.h | 4 ++-- samples/listctrl/listtest.cpp | 3 ++- src/generic/filectrlg.cpp | 8 ++++---- src/generic/listctrl.cpp | 6 +++--- src/msw/listctrl.cpp | 8 ++++---- src/osx/carbon/listctrl_mac.cpp | 2 +- 12 files changed, 28 insertions(+), 22 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 72872f58b0..c25f3149a5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -226,6 +226,10 @@ Changes in behaviour which may result in compilation errors - wxEVT_GRID_CELL_CHANGE event renamed to wxEVT_GRID_CELL_CHANGED and shouldn't be vetoed any more, use the new wxEVT_GRID_CELL_CHANGING event to do it. +- wxListCtrlCompare function used with wxListCtrl::SortItems() must now declare + its third parameter as wxUIntPtr and not long (this allows passing pointers + to it under 64 bit platforms too). + - Global wxPendingEvents and wxPendingEventsLocker objects were removed. You may use wxEventLoopBase::SuspendProcessingOfPendingEvents instead of locking wxPendingEventsLocker now. diff --git a/include/wx/generic/listctrl.h b/include/wx/generic/listctrl.h index 1ecb908b33..3f0c175cb5 100644 --- a/include/wx/generic/listctrl.h +++ b/include/wx/generic/listctrl.h @@ -138,7 +138,7 @@ public: long InsertColumn( long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, int width = -1 ); bool ScrollList( int dx, int dy ); - bool SortItems( wxListCtrlCompare fn, long data ); + bool SortItems( wxListCtrlCompare fn, wxUIntPtr data ); bool Update( long item ); // Must provide overload to avoid hiding it (and warnings about it) virtual void Update() { wxControl::Update(); } diff --git a/include/wx/generic/private/listctrl.h b/include/wx/generic/private/listctrl.h index b204bb1f30..5ec6272b82 100644 --- a/include/wx/generic/private/listctrl.h +++ b/include/wx/generic/private/listctrl.h @@ -610,7 +610,7 @@ public: void InsertItem( wxListItem &item ); void InsertColumn( long col, wxListItem &item ); int GetItemWidthWithImage(wxListItem * item); - void SortItems( wxListCtrlCompare fn, long data ); + void SortItems( wxListCtrlCompare fn, wxUIntPtr data ); size_t GetItemCount() const; bool IsEmpty() const { return GetItemCount() == 0; } diff --git a/include/wx/listbase.h b/include/wx/listbase.h index ebbe946965..15221d940a 100644 --- a/include/wx/listbase.h +++ b/include/wx/listbase.h @@ -22,7 +22,8 @@ // ---------------------------------------------------------------------------- // type of compare function for wxListCtrl sort operation -typedef int (wxCALLBACK *wxListCtrlCompare)(long item1, long item2, long sortData); +typedef +int (wxCALLBACK *wxListCtrlCompare)(long item1, long item2, wxUIntPtr sortData); // ---------------------------------------------------------------------------- // wxListCtrl constants diff --git a/include/wx/msw/listctrl.h b/include/wx/msw/listctrl.h index eb5f7bbcdb..fa74009fc9 100644 --- a/include/wx/msw/listctrl.h +++ b/include/wx/msw/listctrl.h @@ -353,7 +353,7 @@ public: // or zero if the two items are equivalent. // data is arbitrary data to be passed to the sort function. - bool SortItems(wxListCtrlCompare fn, long data); + bool SortItems(wxListCtrlCompare fn, wxUIntPtr data); // IMPLEMENTATION virtual bool MSWCommand(WXUINT param, WXWORD id); diff --git a/include/wx/osx/listctrl.h b/include/wx/osx/listctrl.h index 98ea42e277..7c3b67cbdf 100644 --- a/include/wx/osx/listctrl.h +++ b/include/wx/osx/listctrl.h @@ -281,7 +281,7 @@ class WXDLLIMPEXP_CORE wxListCtrl: public wxControl // or zero if the two items are equivalent. // data is arbitrary data to be passed to the sort function. - bool SortItems(wxListCtrlCompare fn, long data); + bool SortItems(wxListCtrlCompare fn, wxUIntPtr data); wxMacDataBrowserListCtrlControl* GetListPeer() const; @@ -317,7 +317,7 @@ class WXDLLIMPEXP_CORE wxListCtrl: public wxControl void Command(wxCommandEvent& event) { ProcessCommand(event); }; wxListCtrlCompare GetCompareFunc() { return m_compareFunc; }; - long GetCompareFuncData() { return m_compareFuncData; }; + wxUIntPtr GetCompareFuncData() { return m_compareFuncData; }; // public overrides needed for pimpl approach @@ -391,7 +391,7 @@ protected: void* m_macListCtrlEventHandler; void* m_cgContext; wxListCtrlCompare m_compareFunc; - long m_compareFuncData; + wxUIntPtr m_compareFuncData; wxTextCtrl* m_textCtrl; // The control used for editing a label wxImageList * m_imageListNormal; // The image list for normal icons diff --git a/interface/wx/listctrl.h b/interface/wx/listctrl.h index 064313ce9b..2ba301aeec 100644 --- a/interface/wx/listctrl.h +++ b/interface/wx/listctrl.h @@ -842,7 +842,7 @@ public: using the specified @a fnSortCallBack function. This function must have the following prototype: @code - int wxCALLBACK wxListCompareFunction(long item1, long item2, long sortData) + int wxCALLBACK wxListCompareFunction(long item1, long item2, wxUIntPtr sortData) @endcode It is called each time when the two items must be compared and should return 0 @@ -860,7 +860,7 @@ public: Please see the @ref page_samples_listctrl for an example of using this function. */ - bool SortItems(wxListCtrlCompare fnSortCallBack, long data); + bool SortItems(wxListCtrlCompare fnSortCallBack, wxUIntPtr data); protected: diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 2f51db5f53..45d84e0596 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -71,7 +71,8 @@ static const int NUM_ITEMS = 10; // number of items in icon/small icon view static const int NUM_ICONS = 9; -int wxCALLBACK MyCompareFunction(long item1, long item2, long WXUNUSED(sortData)) +int wxCALLBACK +MyCompareFunction(long item1, long item2, wxUIntPtr WXUNUSED(sortData)) { // inverse the order if (item1 < item2) diff --git a/src/generic/filectrlg.cpp b/src/generic/filectrlg.cpp index f8b612952b..1de3b1ad83 100644 --- a/src/generic/filectrlg.cpp +++ b/src/generic/filectrlg.cpp @@ -52,7 +52,7 @@ // ---------------------------------------------------------------------------- static -int wxCALLBACK wxFileDataNameCompare( long data1, long data2, long sortOrder) +int wxCALLBACK wxFileDataNameCompare( long data1, long data2, wxUIntPtr sortOrder) { wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1); wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2); @@ -70,7 +70,7 @@ int wxCALLBACK wxFileDataNameCompare( long data1, long data2, long sortOrder) } static -int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, long sortOrder) +int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, wxUIntPtr sortOrder) { wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1); wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2); @@ -92,7 +92,7 @@ int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, long sortOrder) } static -int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, long sortOrder) +int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, wxUIntPtr sortOrder) { wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1); wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2); @@ -114,7 +114,7 @@ int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, long sortOrder) } static -int wxCALLBACK wxFileDataTimeCompare(long data1, long data2, long sortOrder) +int wxCALLBACK wxFileDataTimeCompare(long data1, long data2, wxUIntPtr sortOrder) { wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1); wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2); diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index dbc1eeec4d..5ca7580a98 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -4152,7 +4152,7 @@ int wxListMainWindow::GetItemWidthWithImage(wxListItem * item) // ---------------------------------------------------------------------------- static wxListCtrlCompare list_ctrl_compare_func_2; -static long list_ctrl_compare_data; +static wxUIntPtr list_ctrl_compare_data; int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData **arg2 ) { @@ -4166,7 +4166,7 @@ int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData return list_ctrl_compare_func_2( data1, data2, list_ctrl_compare_data ); } -void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data ) +void wxListMainWindow::SortItems( wxListCtrlCompare fn, wxUIntPtr data ) { // selections won't make sense any more after sorting the items so reset // them @@ -4918,7 +4918,7 @@ bool wxGenericListCtrl::ScrollList( int dx, int dy ) // or zero if the two items are equivalent. // data is arbitrary data to be passed to the sort function. -bool wxGenericListCtrl::SortItems( wxListCtrlCompare fn, long data ) +bool wxGenericListCtrl::SortItems( wxListCtrlCompare fn, wxUIntPtr data ) { m_mainWin->SortItems( fn, data ); return true; diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index b5bbc4a4be..31b1ef7054 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1865,12 +1865,12 @@ bool wxListCtrl::ScrollList(int dx, int dy) struct wxInternalDataSort { wxListCtrlCompare user_fn; - long data; + wxUIntPtr data; }; int CALLBACK wxInternalDataCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { - struct wxInternalDataSort *internalData = (struct wxInternalDataSort *) lParamSort; + wxInternalDataSort * const internalData = (wxInternalDataSort *) lParamSort; wxListItemInternalData *data1 = (wxListItemInternalData *) lParam1; wxListItemInternalData *data2 = (wxListItemInternalData *) lParam2; @@ -1882,9 +1882,9 @@ int CALLBACK wxInternalDataCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM l } -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) +bool wxListCtrl::SortItems(wxListCtrlCompare fn, wxUIntPtr data) { - struct wxInternalDataSort internalData; + wxInternalDataSort internalData; internalData.user_fn = fn; internalData.data = data; diff --git a/src/osx/carbon/listctrl_mac.cpp b/src/osx/carbon/listctrl_mac.cpp index 82a99344fc..7002c7abae 100644 --- a/src/osx/carbon/listctrl_mac.cpp +++ b/src/osx/carbon/listctrl_mac.cpp @@ -2205,7 +2205,7 @@ bool wxListCtrl::ScrollList(int dx, int dy) } -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) +bool wxListCtrl::SortItems(wxListCtrlCompare fn, wxUIntPtr data) { if (m_genericImpl) return m_genericImpl->SortItems(fn, data); -- 2.47.2