]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dnd.cpp
Applied dir control token patch.
[wxWidgets.git] / src / gtk / dnd.cpp
index 3eaf282f59e079e7a71cee36d9f0028a331b4c6a..b8b6ecfb7f76de4eb897a2fd6da1e91eb4675b87 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
@@ -187,6 +187,9 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
     // only good if we don't have our own preferences - but also the actions
     // field
     wxDragResult result;
+    if (drop_target->GetDefaultAction() == wxDragNone)
+    {
+        // use default action set by wxDropSource::DoDragDrop()
     if ( (gs_flagsForDrag & wxDrag_DefaultMove) == wxDrag_DefaultMove &&
             (context->actions & GDK_ACTION_MOVE ) )
     {
@@ -204,6 +207,21 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
             result = wxDragCopy;
         }
     }
+    }
+    else if (drop_target->GetDefaultAction() == wxDragMove &&
+                (context->actions & GDK_ACTION_MOVE))
+    {
+       result = wxDragMove;
+    }
+    else
+    {
+        if (context->actions & GDK_ACTION_COPY)
+            result = wxDragCopy;
+        else if (context->actions & GDK_ACTION_MOVE)
+            result = wxDragMove;
+        else
+            result = wxDragNone;
+    }
 
     if (drop_target->m_firstMotion)
     {
@@ -371,7 +389,7 @@ static void target_drag_data_received( GtkWidget *WXUNUSED(widget),
        this is only valid for the duration of this call */
     drop_target->SetDragData( data );
 
-    wxDragResult result = ConvertFromGTK(context->suggested_action);
+    wxDragResult result = ConvertFromGTK(context->action);
 
     if ( wxIsDragResultOk( drop_target->OnData( x, y, result ) ) )
     {