Mercurial > geeqie.yaz
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 { |