diff --git a/ChangeLog b/ChangeLog index 94dc6d5..1b2fc2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,9 @@ -ClipIt-1.4.2-20110906001 ~ 2011-09-06 15:01:40 +0300 +ClipIt-1.4.2-20111015001 ~ 2011-10-15 12:29:14 +0300 + ++ Fixed: Fixed bug where wrong item was being selected for editing. + + +ClipIt-1.4.2-20110906001 - 2011-09-06 15:03:00 +0300 + Added: Added transifex config to repository. + Added: Added script for automatic translation updating. diff --git a/src/manage.c b/src/manage.c index 02a86e2..e89c5e2 100644 --- a/src/manage.c +++ b/src/manage.c @@ -35,6 +35,13 @@ GtkListStore *search_list; GtkWidget *search_entry; GtkWidget *treeview_search; +static void add_iter(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *piter, gpointer userdata) +{ + GArray *sel = (GArray*)userdata; + GtkTreeIter iter = *piter; + g_array_append_val(sel, iter); +} + /* Search through the history */ static void search_history() { @@ -115,17 +122,17 @@ static void edit_selected() if (selected_count > 0) { /* Create clipboard buffer and set its text */ gint selected_item_nr; - GList *selected_rows = gtk_tree_selection_get_selected_rows(search_selection, NULL); - GList *row_loop = g_list_first(selected_rows); - selected_item_nr = atoi((gchar*)gtk_tree_path_to_string(row_loop->data)); - g_list_foreach(selected_rows, (GFunc)gtk_tree_path_free, NULL); - g_list_free(selected_rows); - GList* element = g_list_nth(history, selected_item_nr); - GList* elementafter = element->next; + GArray *sel = g_array_new(FALSE, FALSE, sizeof(GtkTreeIter)); + gtk_tree_selection_selected_foreach(search_selection, add_iter, sel); + gtk_tree_selection_unselect_all(search_selection); + GtkTreeIter *iter = &g_array_index(sel, GtkTreeIter, 0); + gtk_tree_model_get((GtkTreeModel*)search_list, iter, 0, &selected_item_nr, -1); + g_array_free(sel, TRUE); + GList *element = g_list_nth(history, selected_item_nr); history_item *elem_data = element->data; - GString* s_selected_item = g_string_new((gchar*)elem_data->content); + GList* elementafter = element->next; GtkTextBuffer* clipboard_buffer = gtk_text_buffer_new(NULL); - gtk_text_buffer_set_text(clipboard_buffer, s_selected_item->str, -1); + gtk_text_buffer_set_text(clipboard_buffer, (gchar*)elem_data->content, -1); /* Create the dialog */ GtkWidget* dialog = gtk_dialog_new_with_buttons(_("Editing Clipboard"), NULL, (GTK_DIALOG_MODAL + GTK_DIALOG_NO_SEPARATOR), @@ -180,18 +187,10 @@ static void edit_selected() } } gtk_widget_destroy(dialog); - g_string_free(s_selected_item, TRUE); search_history(); } } -static void add_iter(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *piter, gpointer userdata) -{ - GArray *sel = (GArray*)userdata; - GtkTreeIter iter = *piter; - g_array_append_val(sel, iter); -} - /* Called when Remove is selected from Manage dialog */ static void remove_selected() {