X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b72aa48cdeca3530ffb6ac5af438835d58bf79d9..9da00e91b4ad147584297b1a64cc1abfa50ee010:/src/gtk/dnd.cpp

diff --git a/src/gtk/dnd.cpp b/src/gtk/dnd.cpp
index d8487a913b..02701c7a54 100644
--- a/src/gtk/dnd.cpp
+++ b/src/gtk/dnd.cpp
@@ -7,12 +7,17 @@
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "dnd.h"
 #endif
 
-#include "wx/dnd.h"
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
 
+#include "wx/dnd.h"
+#include "wx/log.h"
+									       
+									        
 #if wxUSE_DRAG_AND_DROP
 
 #include "wx/window.h"
@@ -110,7 +115,7 @@ static const char * page_xpm[] = {
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// convert between GTK+ and wxWindows DND constants
+// convert between GTK+ and wxWidgets DND constants
 // ----------------------------------------------------------------------------
 
 static wxDragResult ConvertFromGTK(long action)
@@ -215,7 +220,9 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
     if (ret)
     {
         GdkDragAction action;
-        if (result == wxDragCopy)
+        if ((result == wxDragCopy) && (context->actions & GDK_ACTION_COPY) ||
+            (result == wxDragMove) && !(context->actions & GDK_ACTION_MOVE) ||
+            (result == wxDragLink) && !(context->actions & GDK_ACTION_LINK))
             action = GDK_ACTION_COPY;
         else if (result == wxDragLink)
             action = GDK_ACTION_LINK;
@@ -366,7 +373,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 ) ) )
     {