]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/dnd.cpp
improved memory liberation (explicitly set to NULL after delete)
[wxWidgets.git] / src / mac / dnd.cpp
index 2965b50d5c15cf5ea60bfefa16c368365efeeea4..5369a1cf3471f3c88857debb8051484ebac96487 100644 (file)
@@ -22,6 +22,7 @@
 #include "wx/toplevel.h"
 #include "wx/app.h"
 #include "wx/gdicmn.h"
 #include "wx/toplevel.h"
 #include "wx/app.h"
 #include "wx/gdicmn.h"
+#include "wx/mac/private.h"
 
 // ----------------------------------------------------------------------------
 // global
 
 // ----------------------------------------------------------------------------
 // global
@@ -85,7 +86,7 @@ bool wxDropTarget::CurrentDragHasSupportedFormat()
       
       if ( data )
       {
       
       if ( data )
       {
-        int formatcount = data->GetFormatCount() ;
+        size_t formatcount = data->GetFormatCount() ;
         wxDataFormat *array = new wxDataFormat[ formatcount  ];
         data->GetAllFormats( array );
         for (size_t i = 0; !supported && i < formatcount ; i++)
         wxDataFormat *array = new wxDataFormat[ formatcount  ];
         data->GetAllFormats( array );
         for (size_t i = 0; !supported && i < formatcount ; i++)
@@ -104,17 +105,17 @@ bool wxDropTarget::CurrentDragHasSupportedFormat()
     {
       UInt16 items ;
       OSErr result;
     {
       UInt16 items ;
       OSErr result;
-      CountDragItems(m_currentDrag, &items);
+      CountDragItems((DragReference)m_currentDrag, &items);
       for (UInt16 index = 1; index <= items && supported == false ; ++index) 
       {
           ItemReference theItem;
           FlavorType theType ;
           UInt16 flavors = 0 ;
       for (UInt16 index = 1; index <= items && supported == false ; ++index) 
       {
           ItemReference theItem;
           FlavorType theType ;
           UInt16 flavors = 0 ;
-          GetDragItemReferenceNumber(m_currentDrag, index, &theItem);
-          CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ;
+          GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
+          CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
           for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
           {
           for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
           {
-            result = GetFlavorType(m_currentDrag, theItem, flavor , &theType);
+            result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
             if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) )
             {
               supported = true ;
             if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) )
             {
               supported = true ;
@@ -141,7 +142,7 @@ bool wxDropTarget::GetData()
       
       if ( data )
       {
       
       if ( data )
       {
-        int formatcount = data->GetFormatCount() ;
+        size_t formatcount = data->GetFormatCount() ;
         wxDataFormat *array = new wxDataFormat[ formatcount  ];
         data->GetAllFormats( array );
         for (size_t i = 0; !transferred && i < formatcount ; i++)
         wxDataFormat *array = new wxDataFormat[ formatcount  ];
         data->GetAllFormats( array );
         for (size_t i = 0; !transferred && i < formatcount ; i++)
@@ -172,31 +173,31 @@ bool wxDropTarget::GetData()
     {
       UInt16 items ;
       OSErr result;
     {
       UInt16 items ;
       OSErr result;
-      CountDragItems(m_currentDrag, &items);
+      CountDragItems((DragReference)m_currentDrag, &items);
       for (UInt16 index = 1; index <= items; ++index) 
       {
           ItemReference theItem;
           FlavorType theType ;
           UInt16 flavors = 0 ;
       for (UInt16 index = 1; index <= items; ++index) 
       {
           ItemReference theItem;
           FlavorType theType ;
           UInt16 flavors = 0 ;
-          GetDragItemReferenceNumber(m_currentDrag, index, &theItem);
-          CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ;
+          GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
+          CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
           for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
           {
           for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
           {
-            result = GetFlavorType(m_currentDrag, theItem, flavor , &theType);
+            result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
             wxDataFormat format(theType) ;
             if ( m_dataObject->IsSupportedFormat( format ) )
             {
               FlavorFlags theFlags;
             wxDataFormat format(theType) ;
             if ( m_dataObject->IsSupportedFormat( format ) )
             {
               FlavorFlags theFlags;
-              result = GetFlavorFlags(m_currentDrag, theItem, theType, &theFlags);
+              result = GetFlavorFlags((DragReference)m_currentDrag, theItem, theType, &theFlags);
               if (result == noErr) 
               {
                   Size dataSize ;
                   Ptr theData ;
               if (result == noErr) 
               {
                   Size dataSize ;
                   Ptr theData ;
-                  GetFlavorDataSize(m_currentDrag, theItem, theType, &dataSize);
+                  GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize);
                                  if ( theType == 'TEXT' )
                                    dataSize++ ;
                   theData = new char[dataSize];
                                  if ( theType == 'TEXT' )
                                    dataSize++ ;
                   theData = new char[dataSize];
-                  GetFlavorData(m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); 
+                  GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); 
                   if( theType == 'TEXT' )
                   {
                     theData[dataSize]=0 ;       
                   if( theType == 'TEXT' )
                   {
                     theData[dataSize]=0 ;       
@@ -210,7 +211,7 @@ bool wxDropTarget::GetData()
                   {
                     HFSFlavor* theFile = (HFSFlavor*) theData ;
                     wxString name = wxMacFSSpec2MacFilename( &theFile->fileSpec ) ;
                   {
                     HFSFlavor* theFile = (HFSFlavor*) theData ;
                     wxString name = wxMacFSSpec2MacFilename( &theFile->fileSpec ) ;
-                    m_dataObject->SetData( format , name.Length() + 1, name ) ;
+                    ((wxFileDataObject*)m_dataObject)->AddFile( name ) ;
                   }
                   else
                   {
                   }
                   else
                   {
@@ -258,7 +259,7 @@ wxDropSource::~wxDropSource()
 }
 
 
 }
 
 
-wxDragResult wxDropSource::DoDragDrop( bool allowMove )
+wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags))
 {
     wxASSERT_MSG( m_data, wxT("Drop source: no data") );
 
 {
     wxASSERT_MSG( m_data, wxT("Drop source: no data") );
 
@@ -271,7 +272,7 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
     OSErr result;
     DragReference theDrag;
     RgnHandle dragRegion;
     OSErr result;
     DragReference theDrag;
     RgnHandle dragRegion;
-    if (result = NewDrag(&theDrag)) 
+    if ((result = NewDrag(&theDrag)))
     {
         return wxDragNone ;
     }
     {
         return wxDragNone ;
     }
@@ -280,7 +281,7 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
     wxDataFormat *formats = new wxDataFormat[formatCount] ;
     m_data->GetAllFormats( formats ) ;
     ItemReference theItem = 1 ;
     wxDataFormat *formats = new wxDataFormat[formatCount] ;
     m_data->GetAllFormats( formats ) ;
     ItemReference theItem = 1 ;
-    for ( int i = 0 ; i < formatCount ; ++i )
+    for ( size_t i = 0 ; i < formatCount ; ++i )
     {
         size_t dataSize = m_data->GetDataSize( formats[i] ) ;
         Ptr dataPtr = new char[dataSize] ;
     {
         size_t dataSize = m_data->GetDataSize( formats[i] ) ;
         Ptr dataPtr = new char[dataSize] ;
@@ -335,7 +336,7 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
     dragRegion = NewRgn();
     RgnHandle tempRgn = NewRgn() ;
     
     dragRegion = NewRgn();
     RgnHandle tempRgn = NewRgn() ;
     
-    EventRecord* ev = wxTheApp->MacGetCurrentEvent() ;
+    EventRecord* ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;
     const short dragRegionOuterBoundary = 10 ;
     const short dragRegionInnerBoundary = 9 ;
     
     const short dragRegionOuterBoundary = 10 ;
     const short dragRegionInnerBoundary = 9 ;
     
@@ -395,7 +396,6 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
     MacTrackingGlobals* trackingGlobals = (MacTrackingGlobals*) handlerRefCon;
     Point mouse, localMouse;
     DragAttributes attributes;
     MacTrackingGlobals* trackingGlobals = (MacTrackingGlobals*) handlerRefCon;
     Point mouse, localMouse;
     DragAttributes attributes;
-    RgnHandle hiliteRgn;
     GetDragAttributes(theDrag, &attributes);
     wxTopLevelWindowMac* toplevel = wxFindWinFromMacWindow( theWindow ) ; 
     switch(theMessage) 
     GetDragAttributes(theDrag, &attributes);
     wxTopLevelWindowMac* toplevel = wxFindWinFromMacWindow( theWindow ) ; 
     switch(theMessage) 
@@ -490,8 +490,9 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
     return(noErr);
 }
 
     return(noErr);
 }
 
-pascal OSErr wxMacWindowDragReceiveHandler(WindowPtr theWindow, void *handlerRefCon,
-DragReference theDrag)
+pascal OSErr wxMacWindowDragReceiveHandler(WindowPtr theWindow,
+                                           void *handlerRefCon,
+                                           DragReference theDrag)
 { 
     MacTrackingGlobals* trackingGlobals = (MacTrackingGlobals*) handlerRefCon;
     if ( trackingGlobals->m_currentTarget )
 { 
     MacTrackingGlobals* trackingGlobals = (MacTrackingGlobals*) handlerRefCon;
     if ( trackingGlobals->m_currentTarget )