comparison src/bar_keywords.c @ 1395:e86d8facbdae

dnd fixes
author nadvornik
date Sun, 08 Mar 2009 11:32:12 +0000
parents bec57fa486f4
children 58f0b4586c8c
comparison
equal deleted inserted replaced
1394:bec57fa486f4 1395:e86d8facbdae
570 GtkTreeIter dest_iter; 570 GtkTreeIter dest_iter;
571 gtk_tree_model_get_iter(model, &dest_iter, tpath); 571 gtk_tree_model_get_iter(model, &dest_iter, tpath);
572 gtk_tree_path_free(tpath); 572 gtk_tree_path_free(tpath);
573 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &dest_kw_iter, &dest_iter); 573 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &dest_kw_iter, &dest_iter);
574 574
575 if (src_valid && gtk_tree_store_is_ancestor(GTK_TREE_STORE(keyword_tree), &src_kw_iter, &dest_kw_iter))
576 {
577 /* can't move to it's own child */
578 return;
579 }
575 580
576 if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) && 581 if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) &&
577 !gtk_tree_model_iter_has_child(keyword_tree, &dest_kw_iter)) 582 !gtk_tree_model_iter_has_child(keyword_tree, &dest_kw_iter))
578 { 583 {
579 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &dest_kw_iter); 584 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &dest_kw_iter);
638 pos = GTK_TREE_VIEW_DROP_AFTER; 643 pos = GTK_TREE_VIEW_DROP_AFTER;
639 } 644 }
640 645
641 gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(tree_view), tpath, pos); 646 gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(tree_view), tpath, pos);
642 gtk_tree_path_free(tpath); 647 gtk_tree_path_free(tpath);
643 gdk_drag_status(context, GDK_ACTION_COPY, time); 648
649 if (tree_view == gtk_drag_get_source_widget(context))
650 gdk_drag_status(context, GDK_ACTION_MOVE, time);
651 else
652 gdk_drag_status(context, GDK_ACTION_COPY, time);
653
644 return TRUE; 654 return TRUE;
645 } 655 }
646 656
647 657
648 void bar_pane_keywords_close(GtkWidget *bar) 658 void bar_pane_keywords_close(GtkWidget *bar)