diff --git a/src/mainwindow.c b/src/mainwindow.c index ea6417e..b2996a9 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -261,7 +261,6 @@ static void mainWindow_configure_treeView(struct mainWindow *mainWindow) /* * Test entries for debugging only */ - GDateTime *dt; GList *list = NULL; @@ -308,11 +307,11 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow) g_signal_connect(mainWindow->dateStart, "changed", - (GCallback) mainWindow_dateChanged, + (GCallback) mainWindow_filterChanged, mainWindow); g_signal_connect(mainWindow->dateEnd, "changed", - (GCallback) mainWindow_dateChanged, + (GCallback) mainWindow_filterChanged, mainWindow); g_signal_connect(mainWindow->dateStart, @@ -323,6 +322,11 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow) "focus-out-event", (GCallback) mainWindow_checkDate, mainWindow); + + g_signal_connect(mainWindow->searchEntry, + "changed", + (GCallback) mainWindow_filterChanged, + mainWindow); } struct mainWindow *mainWindow_new() @@ -429,20 +433,34 @@ void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data) } } -void mainWindow_dateChanged(GtkWidget *widget, gpointer user_data) +/** + * @brief mainWindow_filterChanged updates the filter backend values + * @param widget The widget that caused the update request. Can be NULL to update all. + * @param user_data struct mainWindow * + */ +void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data) { GDateTime *datetime; struct mainWindow *mainWindow = (struct mainWindow *)user_data; - datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->dateStart))); - if (datetime) { - mainWindow->filterSettings.time_start = g_date_time_to_unix(datetime); - g_date_time_unref(datetime); + if (!widget || widget == mainWindow->dateStart) { + datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text( + GTK_ENTRY(mainWindow->dateStart))); + if (datetime) { + mainWindow->filterSettings.time_start = g_date_time_to_unix(datetime); + g_date_time_unref(datetime); + } } - datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->dateEnd))); - if (datetime) { - mainWindow->filterSettings.time_end = g_date_time_to_unix(datetime); - g_date_time_unref(datetime); + if (!widget || widget == mainWindow->dateEnd) { + datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text( + GTK_ENTRY(mainWindow->dateEnd))); + if (datetime) { + mainWindow->filterSettings.time_end = g_date_time_to_unix(datetime); + g_date_time_unref(datetime); + } + } + if (!widget || widget == mainWindow->searchEntry) { + NULL; } gtk_tree_model_filter_refilter(mainWindow->entryListFiltered); diff --git a/src/mainwindow.h b/src/mainwindow.h index 5c410b7..c7b6982 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -34,7 +34,7 @@ void mainWindow_showPopover(GtkWidget *widget, GdkEvent *event, gpointer user_da void mainWindow_chooseWorkspaceClicked(GtkWidget *widget, gint event, gpointer user_data); void mainWindow_calendarSelected(GtkWidget *widget, gpointer user_data); void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data); -void mainWindow_dateChanged(GtkWidget *widget, gpointer user_data); +void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data); void mainWindow_checkDate(GtkWidget *widget, gint event, gpointer user_data); #endif /* MAINWINDOW_H */