diff --git a/src/mainwindow.c b/src/mainwindow.c index fbed465..49b0463 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -147,9 +147,9 @@ static gint mainWindow_sort_date_compare_func(GtkTreeModel *model, return -1; } -static void mainWindow_add_recent_workspace(struct mainWindow *mainWindow, gchar *path) +void mainWindow_add_recent_workspace(struct mainWindow *mainWindow, gchar *path) { - GtkTreeIter iter; + GtkTreeIter iter, iter2; GRegex *regex; GMatchInfo *match_info; gchar *temp; @@ -163,12 +163,20 @@ static void mainWindow_add_recent_workspace(struct mainWindow *mainWindow, gchar temp = g_strdup_printf("%s\n%s", g_match_info_fetch(match_info, 2), g_match_info_fetch(match_info, 1)); - gtk_list_store_append(mainWindow->workspaceListStore, &iter); + gtk_list_store_prepend(mainWindow->workspaceListStore, &iter); gtk_list_store_set(mainWindow->workspaceListStore, &iter, WSCOL_LABEL, temp, WSCOL_PATH, path, -1); g_free(temp); + + if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(mainWindow->workspaceListStore), NULL) + > FILE_LIST_MAX_LEN) { + while (gtk_tree_model_iter_next(GTK_TREE_MODEL(mainWindow->workspaceListStore), &iter)) { + memcpy(&iter2, &iter, sizeof(iter)); /* TODO: A bit of a hack if you ask me... */ + } + gtk_list_store_remove(mainWindow->workspaceListStore, &iter2); + } } g_regex_unref(regex); @@ -188,9 +196,9 @@ static void mainWindow_configure_workspaceTreeView(struct mainWindow *mainWindow G_TYPE_STRING); mainWindow->workspaceListFiltered = GTK_TREE_MODEL_FILTER( - gtk_tree_model_filter_new( - GTK_TREE_MODEL(mainWindow->workspaceListStore), - NULL)); + gtk_tree_model_filter_new( + GTK_TREE_MODEL(mainWindow->workspaceListStore), + NULL)); gtk_tree_model_filter_set_visible_func(mainWindow->workspaceListFiltered, (GtkTreeModelFilterVisibleFunc) mainWindow_workspace_entry_visible, @@ -201,10 +209,6 @@ static void mainWindow_configure_workspaceTreeView(struct mainWindow *mainWindow renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(mainWindow->workspaceListView, -1, "", renderer, "markup", WSCOL_LABEL, NULL); - - /* Test only */ - mainWindow_add_recent_workspace(mainWindow, "/home/user/Document/diary"); - mainWindow_add_recent_workspace(mainWindow, "/home/user/Document/workfoo"); } /** @@ -602,13 +606,13 @@ void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data) } mainWindow->filterSettings.search_title = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(mainWindow->checkSearchTitle)); + GTK_TOGGLE_BUTTON(mainWindow->checkSearchTitle)); mainWindow->filterSettings.search_tags = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(mainWindow->checkSearchTags)); + GTK_TOGGLE_BUTTON(mainWindow->checkSearchTags)); mainWindow->filterSettings.search_text = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(mainWindow->checkSearchText)); + GTK_TOGGLE_BUTTON(mainWindow->checkSearchText)); mainWindow->filterSettings.search_summary = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(mainWindow->checkSearchSummary)); + GTK_TOGGLE_BUTTON(mainWindow->checkSearchSummary)); gtk_tree_model_filter_refilter(mainWindow->entryListFiltered); } @@ -752,9 +756,9 @@ void mainWindow_otherWorkspaceClicked(GtkWidget *widget, gpointer user_data) if (res == GTK_RESPONSE_ACCEPT) { char *directory; - directory = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); + directory = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); mainWindow_switch_workspace(mainWindow, directory); - g_free (directory); + g_free(directory); } gtk_widget_destroy (dialog);