]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/dnd.cpp
Correct orientation of splitter sash again.
[wxWidgets.git] / src / gtk1 / dnd.cpp
index 93f307cf8e8db008bf36713a8ca3acb766a0cf12..b8b6ecfb7f76de4eb897a2fd6da1e91eb4675b87 100644 (file)
@@ -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)
@@ -184,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 ) )
     {
@@ -201,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)
     {
@@ -368,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 ) ) )
     {