X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c03690057badbed595fa465685496b0efb558199..9cc62fc819e1b2b01af9732a3ad218aeec13e4d4:/src/gtk/dnd.cpp diff --git a/src/gtk/dnd.cpp b/src/gtk/dnd.cpp index 93f307cf8e..02701c7a54 100644 --- a/src/gtk/dnd.cpp +++ b/src/gtk/dnd.cpp @@ -7,10 +7,13 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "dnd.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/dnd.h" #include "wx/log.h" @@ -112,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) @@ -217,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; @@ -368,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 ) ) ) {