if (!ret)
{
- wxLogDebug( wxT( "Drop target: OnDrop returned TRUE") );
+ wxLogDebug( wxT( "Drop target: OnDrop returned FALSE") );
/* cancel the whole thing */
gtk_drag_finish( context,
if (!m_dataObject->IsSupportedFormat( dragFormat ))
return FALSE;
- if (dragFormat.GetType() == wxDF_TEXT)
- {
- wxTextDataObject *text_object = (wxTextDataObject*)m_dataObject;
- text_object->SetText( (const char*)m_dragData->data );
- return TRUE;
- }
-
- if (dragFormat.GetType() == wxDF_FILENAME)
- {
- wxFileDataObject *file_object = (wxFileDataObject*)m_dataObject;
- file_object->SetData( 0, (const char*)m_dragData->data );
- return TRUE;
- }
-
m_dataObject->SetData( dragFormat, (size_t)m_dragData->length, (const void*)m_dragData->data );
return TRUE;
static void
source_drag_data_get (GtkWidget *WXUNUSED(widget),
- GdkDragContext *context,
+ GdkDragContext *WXUNUSED(context),
GtkSelectionData *selection_data,
guint WXUNUSED(info),
guint WXUNUSED(time),
gtk_drag_set_icon_widget( context, m_iconWindow, hot_x, hot_y );
}
-wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
+wxDragResult wxDropSource::DoDragDrop( bool allowMove )
{
- wxASSERT_MSG( m_data, wxT("wxDragSource: no data") );
+ wxASSERT_MSG( m_data, wxT("Drop source: no data") );
if (!m_data)
return (wxDragResult) wxDragNone;
for (size_t i = 0; i < m_data->GetFormatCount(); i++)
{
GdkAtom atom = array[i];
- wxLogDebug( wxT("Supported atom %s"), gdk_atom_name( atom ) );
+ wxLogDebug( wxT("Drop source: Supported atom %s"), gdk_atom_name( atom ) );
gtk_target_list_add( target_list, atom, 0, 0 );
}
delete[] array;
event.x = x;
event.y = y;
event.state = state;
- event.time = GDK_CURRENT_TIME;
+ event.time = (guint32)GDK_CURRENT_TIME;
/* GTK wants to know which button was pressed which caused the dragging */
int button_number = 0;
/* don't start dragging if no button is down */
if (button_number)
{
+ GdkDragAction action = GDK_ACTION_COPY;
+ if (allowMove) action = (GdkDragAction)(GDK_ACTION_MOVE|GDK_ACTION_COPY);
GdkDragContext *context = gtk_drag_begin( m_widget,
target_list,
- (GdkDragAction)(GDK_ACTION_COPY|GDK_ACTION_MOVE),
+ action,
button_number, /* number of mouse button which started drag */
(GdkEvent*) &event );
PrepareIcon( 0, 0, context );
while (m_waiting) gtk_main_iteration();;
+
+ if (context->action == GDK_ACTION_COPY)
+ return m_retValue = wxDragCopy;
+ if (context->action == GDK_ACTION_MOVE)
+ return m_retValue = wxDragMove;
}
#if wxUSE_THREADS