]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/dnd.cpp
Added setters for print and page data
[wxWidgets.git] / src / gtk1 / dnd.cpp
index d24aa7a952c6e3a47136c207991d027fac8897cc..2295ecef460d9e69b9818aa91d5def1105ec7688 100644 (file)
@@ -58,6 +58,10 @@ static long gs_flagsForDrag = 0;
 // (there are quite a few of them, so don't enable this by default)
 static const wxChar *TRACE_DND = _T("dnd");
 
+extern GdkEvent *g_lastMouseEvent;
+
+extern int g_lastButtonNumber;
+
 //----------------------------------------------------------------------------
 // standard icons
 //----------------------------------------------------------------------------
@@ -871,29 +875,8 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
     }
     delete[] array;
 
-    GdkEventMotion event;
-    event.window = m_widget->window;
-    int x = 0;
-    int y = 0;
-    GdkModifierType state;
-    gdk_window_get_pointer( event.window, &x, &y, &state );
-    event.x = x;
-    event.y = y;
-    event.state = state;
-    event.time = (guint32)GDK_CURRENT_TIME;
-
-    /* GTK wants to know which button was pressed which caused the dragging */
-    int button_number = 0;
-    if (event.state & GDK_BUTTON1_MASK) button_number = 1;
-    else if (event.state & GDK_BUTTON2_MASK) button_number = 2;
-    else if (event.state & GDK_BUTTON3_MASK) button_number = 3;
-
-#if wxUSE_THREADS
-    /* disable GUI threads */
-#endif
-
     /* don't start dragging if no button is down */
-    if (button_number)
+    if (g_lastButtonNumber)
     {
         int action = GDK_ACTION_COPY;
         if ( flags & wxDrag_AllowMove )
@@ -907,8 +890,8 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
         GdkDragContext *context = gtk_drag_begin( m_widget,
                 target_list,
                 (GdkDragAction)action,
-                button_number,  /* number of mouse button which started drag */
-                (GdkEvent*) &event );
+                g_lastButtonNumber,  // number of mouse button which started drag
+                (GdkEvent*) g_lastMouseEvent );
 
         m_dragContext = context;
 
@@ -922,22 +905,10 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
             m_retValue = wxDragCancel;
     }
 
-#if wxUSE_THREADS
-    /* re-enable GUI threads */
-#endif
-
     g_blockEventsOnDrag = false;
 
     UnregisterWindow();
 
-    // this shouldn't be needed but somehow, sometimes, without this the cursor
-    // stays grabbed even when the DND operation ends and the application
-    // becomes unresponsive and has to be killed resulting in loss of all
-    // unsaved data, so while this fix is ugly it's still better than
-    // alternative
-    if ( gdk_pointer_is_grabbed() )
-        gdk_pointer_ungrab(GDK_CURRENT_TIME);
-
     return m_retValue;
 }