// 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"
// ============================================================================
// ----------------------------------------------------------------------------
-// convert between GTK+ and wxWindows DND constants
+// convert between GTK+ and wxWidgets DND constants
// ----------------------------------------------------------------------------
static wxDragResult ConvertFromGTK(long action)
// 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 ) )
{
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)
{
#endif
GdkAtom format = drop_target->GetMatchingPair();
- wxASSERT( format );
+
+ // this does happen somehow, see bug 555111
+ wxCHECK_MSG( format, FALSE, _T("no matching GdkAtom for format?") )
/*
GdkDragAction action = GDK_ACTION_MOVE;
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 ) ) )
{