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);