diff --git a/glade/mainWindow.glade b/glade/mainWindow.glade index a34e856..41d8b4d 100644 --- a/glade/mainWindow.glade +++ b/glade/mainWindow.glade @@ -132,6 +132,8 @@ True 10 10 + gtk-clear + fg True @@ -157,6 +159,7 @@ True 10 10 + gtk-clear True diff --git a/src/mainwindow.c b/src/mainwindow.c index 8f348d7..afcb67a 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -236,6 +236,15 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow) "clicked", (GCallback) mainWindow_clearSearch, mainWindow); + + g_signal_connect(mainWindow->dateStart, + "icon-press", + (GCallback) mainWindow_dateIconPress, + mainWindow); + g_signal_connect(mainWindow->dateEnd, + "icon-press", + (GCallback) mainWindow_dateIconPress, + mainWindow); } /** @@ -485,17 +494,30 @@ void mainWindow_clearSearch(GtkWidget *widget, gpointer user_data) GDateTime *datetime; gchar *temp; - gtk_entry_set_text(GTK_ENTRY(mainWindow->searchEntry), ""); + if (widget == mainWindow->buttonClearSearch) + widget = NULL; - datetime = g_date_time_new_from_unix_local(mainWindow->time_earliest); - temp = g_date_time_format(datetime, "%Y-%m-%d"); - gtk_entry_set_text(GTK_ENTRY(mainWindow->dateStart), temp); - g_date_time_unref(datetime); - g_free(temp); + if (!widget || widget == mainWindow->searchEntry) + gtk_entry_set_text(GTK_ENTRY(mainWindow->searchEntry), ""); - datetime = g_date_time_new_from_unix_local(mainWindow->time_latest); - temp = g_date_time_format(datetime, "%Y-%m-%d"); - gtk_entry_set_text(GTK_ENTRY(mainWindow->dateEnd), temp); - g_date_time_unref(datetime); - g_free(temp); + if (!widget || widget == mainWindow->dateStart) { + datetime = g_date_time_new_from_unix_local(mainWindow->time_earliest); + temp = g_date_time_format(datetime, "%Y-%m-%d"); + gtk_entry_set_text(GTK_ENTRY(mainWindow->dateStart), temp); + g_date_time_unref(datetime); + g_free(temp); + } + + if (!widget || widget == mainWindow->dateEnd) { + datetime = g_date_time_new_from_unix_local(mainWindow->time_latest); + temp = g_date_time_format(datetime, "%Y-%m-%d"); + gtk_entry_set_text(GTK_ENTRY(mainWindow->dateEnd), temp); + g_date_time_unref(datetime); + g_free(temp); + } +} + +void mainWindow_dateIconPress(GtkWidget *widget, gint icon_pos, gint event, gpointer user_data) +{ + mainWindow_clearSearch(widget, user_data); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 7b60caa..ca2f64d 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -53,5 +53,6 @@ void mainWindow_calendarSelected(GtkWidget *widget, gpointer user_data); void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data); void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data); void mainWindow_checkDate(GtkWidget *widget, gint event, gpointer user_data); +void mainWindow_dateIconPress(GtkWidget *widget, gint icon_pos, gint event, gpointer user_data); #endif /* MAINWINDOW_H */