comparison src/bar_keywords.c @ 1394:bec57fa486f4

allow dropping of multiple keywords
author nadvornik
date Sun, 08 Mar 2009 10:38:51 +0000
parents 79b32088ecc4
children e86d8facbdae
comparison
equal deleted inserted replaced
1393:79b32088ecc4 1394:bec57fa486f4
531 GtkTreeViewDropPosition pos; 531 GtkTreeViewDropPosition pos;
532 GtkTreeModel *model; 532 GtkTreeModel *model;
533 533
534 GtkTreeModel *keyword_tree; 534 GtkTreeModel *keyword_tree;
535 gboolean src_valid = FALSE; 535 gboolean src_valid = FALSE;
536 gchar *new_keyword = NULL; 536 GList *new_keywords = NULL;
537 GList *work;
537 538
538 /* iterators for keyword_tree */ 539 /* iterators for keyword_tree */
539 GtkTreeIter src_kw_iter; 540 GtkTreeIter src_kw_iter;
540 GtkTreeIter dest_kw_iter; 541 GtkTreeIter dest_kw_iter;
541 GtkTreeIter new_kw_iter; 542 GtkTreeIter new_kw_iter;
558 src_valid = keyword_tree_get_iter(keyword_tree, &src_kw_iter, path); 559 src_valid = keyword_tree_get_iter(keyword_tree, &src_kw_iter, path);
559 string_list_free(path); 560 string_list_free(path);
560 break; 561 break;
561 } 562 }
562 default: 563 default:
563 new_keyword = (gchar *)selection_data->data; 564 new_keywords = string_to_keywords_list((gchar *)selection_data->data);
564 break; 565 break;
565 } 566 }
566 567
567 if (tpath) 568 if (tpath)
568 { 569 {
601 if (src_valid) 602 if (src_valid)
602 { 603 {
603 keyword_move_recursive(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &src_kw_iter); 604 keyword_move_recursive(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &src_kw_iter);
604 } 605 }
605 606
606 if (new_keyword) 607 work = new_keywords;
607 { 608 while (work)
608 keyword_set(GTK_TREE_STORE(keyword_tree), &new_kw_iter, new_keyword, TRUE); 609 {
609 } 610 keyword_set(GTK_TREE_STORE(keyword_tree), &new_kw_iter, work->data, TRUE);
611 work = work->next;
612 if (work)
613 {
614 GtkTreeIter add;
615 gtk_tree_store_insert_after(GTK_TREE_STORE(keyword_tree), &add, NULL, &new_kw_iter);
616 new_kw_iter = add;
617 }
618 }
619 string_list_free(new_keywords);
610 } 620 }
611 621
612 static gint bar_pane_keywords_dnd_motion(GtkWidget *tree_view, GdkDragContext *context, 622 static gint bar_pane_keywords_dnd_motion(GtkWidget *tree_view, GdkDragContext *context,
613 gint x, gint y, guint time, gpointer data) 623 gint x, gint y, guint time, gpointer data)
614 { 624 {