# HG changeset patch # User nadvornik # Date 1236511932 0 # Node ID e86d8facbdae604239505e1e08f475c922a5f882 # Parent bec57fa486f45fa6135f6a96382e3d6853c5b0b5 dnd fixes diff -r bec57fa486f4 -r e86d8facbdae src/bar_keywords.c --- a/src/bar_keywords.c Sun Mar 08 10:38:51 2009 +0000 +++ b/src/bar_keywords.c Sun Mar 08 11:32:12 2009 +0000 @@ -572,6 +572,11 @@ gtk_tree_path_free(tpath); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &dest_kw_iter, &dest_iter); + if (src_valid && gtk_tree_store_is_ancestor(GTK_TREE_STORE(keyword_tree), &src_kw_iter, &dest_kw_iter)) + { + /* can't move to it's own child */ + return; + } if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) && !gtk_tree_model_iter_has_child(keyword_tree, &dest_kw_iter)) @@ -640,7 +645,12 @@ gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(tree_view), tpath, pos); gtk_tree_path_free(tpath); - gdk_drag_status(context, GDK_ACTION_COPY, time); + + if (tree_view == gtk_drag_get_source_widget(context)) + gdk_drag_status(context, GDK_ACTION_MOVE, time); + else + gdk_drag_status(context, GDK_ACTION_COPY, time); + return TRUE; }