]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxListCtrl sort function take wxIntPtr, not long, arguments.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 13 May 2011 13:30:03 +0000 (13:30 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 13 May 2011 13:30:03 +0000 (13:30 +0000)
As the arguments to the sort function contain the client data associated with
the items, they may be pointers and hence of greater size than long in Win64
builds. Use wxIntPtr instead of long everywhere to fix this.

Notice that this doesn't break compatibility for 32 bit code where long can
still be used as it is the same as wxIntPtr there after the previous commit.

Closes #4309.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/listbase.h
interface/wx/listctrl.h
samples/listctrl/listtest.cpp
src/generic/filectrlg.cpp
src/msw/listctrl.cpp

index 34ae2764992c577b30ec113f6d080f3c5febe7cb..287ce790d6a623cf70790b0809c51b53e0187e3b 100644 (file)
@@ -23,7 +23,7 @@
 
 // type of compare function for wxListCtrl sort operation
 typedef
-int (wxCALLBACK *wxListCtrlCompare)(long item1, long item2, wxIntPtr sortData);
+int (wxCALLBACK *wxListCtrlCompare)(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData);
 
 // ----------------------------------------------------------------------------
 // wxListCtrl constants
index 11a852a3d947170ffa7a76c83551255902247654..90af91932b49a7795c8e1e025efb2d2777d3a83c 100644 (file)
@@ -953,7 +953,7 @@ public:
         using the specified @a fnSortCallBack function. This function must have the
         following prototype:
         @code
-        int wxCALLBACK wxListCompareFunction(long item1, long item2, wxIntPtr sortData)
+        int wxCALLBACK wxListCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData)
         @endcode
 
         It is called each time when the two items must be compared and should return 0
index dc715e643b031febd05c711656bed0165b306c38..b9539d55b08388b46efc540b5ff14d7c843f46b6 100644 (file)
@@ -70,7 +70,7 @@ const wxChar *SMALL_VIRTUAL_VIEW_ITEMS[][2] =
 static const int NUM_ICONS = 9;
 
 int wxCALLBACK
-MyCompareFunction(long item1, long item2, wxIntPtr WXUNUSED(sortData))
+MyCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr WXUNUSED(sortData))
 {
     // inverse the order
     if (item1 < item2)
index b5009721aaa6bdf45a14ecf7ac08b8a3623d6dad..0a697894dc60334e2fe1a64e7447e514e080ad07 100644 (file)
@@ -53,7 +53,7 @@
 // ----------------------------------------------------------------------------
 
 static
-int wxCALLBACK wxFileDataNameCompare( long data1, long data2, wxIntPtr sortOrder)
+int wxCALLBACK wxFileDataNameCompare( wxIntPtr data1, wxIntPtr data2, wxIntPtr sortOrder)
 {
      wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
      wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
@@ -71,7 +71,7 @@ int wxCALLBACK wxFileDataNameCompare( long data1, long data2, wxIntPtr sortOrder
 }
 
 static
-int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, wxIntPtr sortOrder)
+int wxCALLBACK wxFileDataSizeCompare(wxIntPtr data1, wxIntPtr data2, wxIntPtr sortOrder)
 {
      wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
      wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
@@ -93,7 +93,7 @@ int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, wxIntPtr sortOrder)
 }
 
 static
-int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, wxIntPtr sortOrder)
+int wxCALLBACK wxFileDataTypeCompare(wxIntPtr data1, wxIntPtr data2, wxIntPtr sortOrder)
 {
      wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
      wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
@@ -115,7 +115,7 @@ int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, wxIntPtr sortOrder)
 }
 
 static
-int wxCALLBACK wxFileDataTimeCompare(long data1, long data2, wxIntPtr sortOrder)
+int wxCALLBACK wxFileDataTimeCompare(wxIntPtr data1, wxIntPtr data2, wxIntPtr sortOrder)
 {
      wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
      wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
index b5913ea90cd59da2c4d7865419c0719759e83ba0..9d49a3be1031cf23610edcbe74f15372f8ca9b0c 100644 (file)
@@ -1821,8 +1821,8 @@ int CALLBACK wxInternalDataCompareFunc(LPARAM lParam1, LPARAM lParam2,  LPARAM l
     wxMSWListItemData *data1 = (wxMSWListItemData *) lParam1;
     wxMSWListItemData *data2 = (wxMSWListItemData *) lParam2;
 
-    long d1 = (data1 == NULL ? 0 : data1->lParam);
-    long d2 = (data2 == NULL ? 0 : data2->lParam);
+    wxIntPtr d1 = (data1 == NULL ? 0 : data1->lParam);
+    wxIntPtr d2 = (data2 == NULL ? 0 : data2->lParam);
 
     return internalData->user_fn(d1, d2, internalData->data);