diff --git a/src/gcal-application.c b/src/gcal-application.c index 7aa158c8..1556666e 100644 --- a/src/gcal-application.c +++ b/src/gcal-application.c @@ -325,6 +325,8 @@ gcal_application_activate (GApplication *application) if (priv->window != NULL) { gtk_window_present (GTK_WINDOW (priv->window)); + if (priv->initial_date != NULL) + g_object_set (priv->window, "active-date", priv->initial_date, NULL); } else { @@ -346,6 +348,8 @@ gcal_application_activate (GApplication *application) /* FIXME: remove me in favor of gtk_widget_show() */ gtk_widget_show_all (priv->window); } + + g_clear_pointer (&(priv->initial_date), g_free); if (priv->uuid != NULL) { gcal_window_open_event_by_uuid (GCAL_WINDOW (priv->window), priv->uuid); @@ -616,3 +620,12 @@ gcal_application_set_uuid (GcalApplication *application, priv->uuid = g_strdup (uuid); } +void +gcal_application_set_initial_date (GcalApplication *application, + const icaltimetype *date) +{ + GcalApplicationPrivate *priv = application->priv; + + g_free (priv->initial_date); + priv->initial_date = gcal_dup_icaltime (date); +} diff --git a/src/gcal-application.h b/src/gcal-application.h index 0e27c825..9e55d9c4 100644 --- a/src/gcal-application.h +++ b/src/gcal-application.h @@ -56,6 +56,8 @@ GcalManager* gcal_application_get_manager (GcalApplication *app); GSettings* gcal_application_get_settings (GcalApplication *app); void gcal_application_set_uuid (GcalApplication *application, const gchar *uuid); +void gcal_application_set_initial_date (GcalApplication *application, + const icaltimetype *date); G_END_DECLS