]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/dnd.cpp
fix wxDataObjectComposite::GetFormatCount and add some comments to explain the reason...
[wxWidgets.git] / src / osx / carbon / dnd.cpp
index baf0e8885d4220df7012e6d80eb16cfce98c8ffc..bc0f7e5485c6e1f408af1d0f6542a6cc2a565b34 100644 (file)
@@ -57,6 +57,12 @@ wxDragResult wxDropTarget::OnDragOver(
     return CurrentDragHasSupportedFormat() ? def : wxDragNone;
 }
 
+wxDataFormat wxDropTarget::GetMatchingPair()
+{
+    wxFAIL_MSG("wxDropTarget::GetMatchingPair() not implemented in src/osx/carbon/dnd.cpp"); 
+    return wxDF_INVALID;
+}
+
 bool wxDropTarget::OnDrop( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y) )
 {
     if (m_dataObject == NULL)
@@ -109,12 +115,7 @@ bool wxDropTarget::CurrentDragHasSupportedFormat()
 
     if ( !supported )
     {
-        PasteboardRef   pasteboard;
-
-        if ( GetDragPasteboard( (DragReference)m_currentDrag, &pasteboard ) == noErr )
-        {
-            supported = m_dataObject->HasDataInPasteboard( pasteboard );
-        }
+        supported = m_dataObject->HasDataInPasteboard( m_currentDragPasteboard );
     }
 
     return supported;
@@ -166,12 +167,7 @@ bool wxDropTarget::GetData()
 
     if ( !transferred )
     {
-        PasteboardRef   pasteboard;
-
-        if ( GetDragPasteboard(  (DragReference)m_currentDrag, &pasteboard ) == noErr )
-        {
-            transferred = m_dataObject->GetFromPasteboard( pasteboard );
-        }
+        transferred = m_dataObject->GetFromPasteboard( m_currentDragPasteboard );
     }
 
     return transferred;
@@ -231,6 +227,7 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
     if ((m_data == NULL) || (m_data->GetFormatCount() == 0))
         return (wxDragResult)wxDragNone;
 
+#if wxOSX_USE_CARBON
     DragReference theDrag;
     RgnHandle dragRegion;
     OSStatus err = noErr;
@@ -305,6 +302,7 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
     DisposeDrag( theDrag );
     CFRelease( pasteboard );
     gTrackingGlobals.m_currentSource = NULL;
+#endif
 
     return gTrackingGlobals.m_result;
 }
@@ -325,15 +323,18 @@ bool gTrackingGlobalsInstalled = false;
 // passing the globals via refcon is not needed by the CFM and later architectures anymore
 // but I'll leave it in there, just in case...
 
+#if wxOSX_USE_CARBON
 pascal OSErr wxMacWindowDragTrackingHandler(
     DragTrackingMessage theMessage, WindowPtr theWindow,
     void *handlerRefCon, DragReference theDrag );
 pascal OSErr wxMacWindowDragReceiveHandler(
     WindowPtr theWindow, void *handlerRefCon,
     DragReference theDrag );
+#endif
 
 void wxMacEnsureTrackingHandlersInstalled()
 {
+#if wxOSX_USE_CARBON
     if ( !gTrackingGlobalsInstalled )
     {
         OSStatus err;
@@ -346,8 +347,10 @@ void wxMacEnsureTrackingHandlersInstalled()
 
         gTrackingGlobalsInstalled = true;
     }
+#endif
 }
 
+#if wxOSX_USE_CARBON
 pascal OSErr wxMacWindowDragTrackingHandler(
     DragTrackingMessage theMessage, WindowPtr theWindow,
     void *handlerRefCon, DragReference theDrag )
@@ -358,7 +361,8 @@ pascal OSErr wxMacWindowDragTrackingHandler(
     DragAttributes attributes;
 
     GetDragAttributes( theDrag, &attributes );
-
+    PasteboardRef   pasteboard = 0;
+    GetDragPasteboard( theDrag, &pasteboard );
     wxNonOwnedWindow* toplevel = wxNonOwnedWindow::GetFromWXWindow( (WXWindow) theWindow );
 
     bool optionDown = GetCurrentKeyModifiers() & optionKey;
@@ -416,7 +420,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(
 #ifndef __LP64__
                             HideDragHilite( theDrag );
 #endif
-                            trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag );
+                            trackingGlobals->m_currentTarget->SetCurrentDragPasteboard( pasteboard );
                             trackingGlobals->m_currentTarget->OnLeave();
                             trackingGlobals->m_currentTarget = NULL;
                             trackingGlobals->m_currentTargetWindow = NULL;
@@ -431,7 +435,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(
                         {
                             if ( trackingGlobals->m_currentTarget )
                             {
-                                trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag );
+                                trackingGlobals->m_currentTarget->SetCurrentDragPasteboard( pasteboard );
                                 result = trackingGlobals->m_currentTarget->OnEnter( localx, localy, result );
                             }
 
@@ -456,7 +460,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(
                 {
                     if ( trackingGlobals->m_currentTarget )
                     {
-                        trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag );
+                        trackingGlobals->m_currentTarget->SetCurrentDragPasteboard( pasteboard );
                         result = trackingGlobals->m_currentTarget->OnDragOver( localx, localy, result );
                     }
                 }
@@ -466,7 +470,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(
                 {
                   if ( !trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) )
                   {
-                      int cursorID = wxCURSOR_NONE;
+                      wxStockCursor cursorID = wxCURSOR_NONE;
 
                       switch (result)
                       {
@@ -506,7 +510,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(
 
             if (trackingGlobals->m_currentTarget)
             {
-                trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag );
+                trackingGlobals->m_currentTarget->SetCurrentDragPasteboard( pasteboard );
                 trackingGlobals->m_currentTarget->OnLeave();
 #ifndef __LP64__
                 HideDragHilite( theDrag );
@@ -534,7 +538,9 @@ pascal OSErr wxMacWindowDragReceiveHandler(
         Point mouse, localMouse;
         int localx, localy;
 
-        trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag );
+        PasteboardRef   pasteboard = 0;
+        GetDragPasteboard( theDrag, &pasteboard );
+        trackingGlobals->m_currentTarget->SetCurrentDragPasteboard( pasteboard );
         GetDragMouse( theDrag, &mouse, 0L );
         localMouse = mouse;
         localx = localMouse.h;
@@ -562,6 +568,7 @@ pascal OSErr wxMacWindowDragReceiveHandler(
 
     return noErr;
 }
+#endif
 
 #endif // wxUSE_DRAG_AND_DROP