+// GTK+ dnd iface
+
+gboolean wxDataViewCtrlInternal::row_draggable( GtkTreeDragSource *WXUNUSED(drag_source),
+ GtkTreePath *path )
+{
+ GtkTreeIter iter;
+ if (!get_iter( &iter, path )) return FALSE;
+
+ wxDataViewItem item( (void*) iter.user_data );
+
+ return m_wx_model->IsDraggable( item );
+}
+
+gboolean
+wxDataViewCtrlInternal::drag_data_delete(GtkTreeDragSource *WXUNUSED(drag_source),
+ GtkTreePath *WXUNUSED(path))
+{
+ return FALSE;
+}
+
+gboolean wxDataViewCtrlInternal::drag_data_get( GtkTreeDragSource *WXUNUSED(drag_source),
+ GtkTreePath *path, GtkSelectionData *selection_data )
+{
+ GtkTreeIter iter;
+ if (!get_iter( &iter, path )) return FALSE;
+
+ wxDataViewItem item( (void*) iter.user_data );
+
+ wxDataFormat format( selection_data->target );
+
+ size_t size = m_wx_model->GetDragDataSize( item, format );
+ if (size == 0) return FALSE;
+
+ void *data = malloc( size );
+
+ m_wx_model->GetDragData( item, format, data, size );
+
+ gtk_selection_data_set( selection_data, selection_data->target,
+ 8, (const guchar*) data, size );
+
+ free( data );
+
+ return TRUE;
+}
+
+gboolean
+wxDataViewCtrlInternal::drag_data_received(GtkTreeDragDest *WXUNUSED(drag_dest),
+ GtkTreePath *WXUNUSED(dest),
+ GtkSelectionData *WXUNUSED(selection_data))
+{
+ return FALSE;
+}
+
+gboolean
+wxDataViewCtrlInternal::row_drop_possible(GtkTreeDragDest *WXUNUSED(drag_dest),
+ GtkTreePath *WXUNUSED(dest_path),
+ GtkSelectionData *WXUNUSED(selection_data))
+{
+ return FALSE;
+}
+
+// notifications from wxDataViewModel
+