diff --git a/src/gcal-event-widget.c b/src/gcal-event-widget.c index 6b889c61..16410f4a 100644 --- a/src/gcal-event-widget.c +++ b/src/gcal-event-widget.c @@ -188,13 +188,9 @@ static void gcal_event_widget_init (GcalEventWidget *self) { GtkWidget *widget; - GSettings *settings; - gchar *clock_format; widget = GTK_WIDGET (self); - settings = g_settings_new ("org.gnome.desktop.interface"); - clock_format = g_settings_get_string (settings, "clock-format"); - self->clock_format_24h = g_strcmp0 (clock_format, "24h") == 0; + self->clock_format_24h = is_clock_format_24h (); gtk_widget_set_has_window (widget, FALSE); gtk_widget_set_can_focus (widget, TRUE); @@ -207,9 +203,6 @@ gcal_event_widget_init (GcalEventWidget *self) GDK_ACTION_COPY); gtk_drag_source_add_text_targets (widget); - - g_clear_object (&settings); - g_free (clock_format); } static void diff --git a/src/gcal-utils.c b/src/gcal-utils.c index b6d1f4bf..ed73f611 100644 --- a/src/gcal-utils.c +++ b/src/gcal-utils.c @@ -561,6 +561,20 @@ get_end_of_week (icaltimetype *date) return week_end; } +gboolean +is_clock_format_24h (void) +{ + static GSettings *settings = NULL; + g_autofree gchar *clock_format = NULL; + + if (!settings) + settings = g_settings_new ("org.gnome.desktop.interface"); + + clock_format = g_settings_get_string (settings, "clock-format"); + + return g_strcmp0 (clock_format, "24h") == 0; +} + /* Function to do a last minute fixup of the AM/PM stuff if the locale * and gettext haven't done it right. Most English speaking countries * except the USA use the 24 hour clock (UK, Australia etc). However diff --git a/src/gcal-utils.h b/src/gcal-utils.h index 484b3aef..8c3a249f 100644 --- a/src/gcal-utils.h +++ b/src/gcal-utils.h @@ -105,6 +105,8 @@ GDateTime* get_start_of_week (icaltimetype GDateTime* get_end_of_week (icaltimetype *date); +gboolean is_clock_format_24h (void); + /* code brought from evolution */ gsize e_strftime_fix_am_pm (gchar *str, gsize max,