summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2018-01-26 16:18:15 +1300
committerRobert Ancell <robert.ancell@canonical.com>2018-01-26 16:18:15 +1300
commit220a446a23cc7d2bb1795d7aaf7d7c3825de865c (patch)
treed53b444848a2c28490cab49db86874f60f8a3dd0
parent5796d83ccdd74110b0299ae443b9f3a744b1833d (diff)
downloadgnome-control-center-wip/rancell/region-g-auto.tar.gz
region: Use g_auto for variableswip/rancell/region-g-auto
-rw-r--r--panels/region/cc-format-chooser.c92
-rw-r--r--panels/region/cc-input-chooser.c96
-rw-r--r--panels/region/cc-input-options.c33
-rw-r--r--panels/region/cc-region-panel.c272
4 files changed, 186 insertions, 307 deletions
diff --git a/panels/region/cc-format-chooser.c b/panels/region/cc-format-chooser.c
index 4998de99d..f35dab977 100644
--- a/panels/region/cc-format-chooser.c
+++ b/panels/region/cc-format-chooser.c
@@ -59,24 +59,26 @@ typedef struct {
static void
display_date (GtkWidget *label, GDateTime *dt, const gchar *format)
{
- gchar *s;
- s = g_date_time_format (dt, format);
+ g_autofree gchar *s = g_date_time_format (dt, format);
s = g_strstrip (s);
gtk_label_set_text (GTK_LABEL (label), s);
- g_free (s);
}
static void
update_format_examples (GtkDialog *chooser)
{
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
- gchar *locale;
- GDateTime *dt;
- gchar *s;
+ g_autofree gchar *time_locale = NULL;
+ g_autofree gchar *numeric_locale = NULL;
+ g_autofree gchar *monetary_locale = NULL;
+ g_autofree gchar *measurement_locale = NULL;
+ g_autofree gchar *paper_locale = NULL;
+ g_autoptr(GDateTime) dt = NULL;
+ g_autofree gchar *s = NULL;
const gchar *fmt;
- GtkPaperSize *paper;
+ g_autoptr(GtkPaperSize) paper = NULL;
- locale = g_strdup (setlocale (LC_TIME, NULL));
+ time_locale = g_strdup (setlocale (LC_TIME, NULL));
setlocale (LC_TIME, priv->region);
dt = g_date_time_new_now_local ();
@@ -84,33 +86,29 @@ update_format_examples (GtkDialog *chooser)
display_date (priv->time, dt, "%X");
display_date (priv->date_time, dt, "%c");
- setlocale (LC_TIME, locale);
- g_free (locale);
+ setlocale (LC_TIME, time_locale);
- locale = g_strdup (setlocale (LC_NUMERIC, NULL));
+ numeric_locale = g_strdup (setlocale (LC_NUMERIC, NULL));
setlocale (LC_NUMERIC, priv->region);
s = g_strdup_printf ("%'.2f", 123456789.00);
gtk_label_set_text (GTK_LABEL (priv->number), s);
- g_free (s);
- setlocale (LC_NUMERIC, locale);
- g_free (locale);
+ setlocale (LC_NUMERIC, numeric_locale);
#if 0
- locale = g_strdup (setlocale (LC_MONETARY, NULL));
+ monetary_locale = g_strdup (setlocale (LC_MONETARY, NULL));
setlocale (LC_MONETARY, priv->region);
num_info = localeconv ();
if (num_info != NULL)
gtk_label_set_text (GTK_LABEL (priv->currency), num_info->currency_symbol);
- setlocale (LC_MONETARY, locale);
- g_free (locale);
+ setlocale (LC_MONETARY, monetary_locale);
#endif
#ifdef LC_MEASUREMENT
- locale = g_strdup (setlocale (LC_MEASUREMENT, NULL));
+ measurement_locale = g_strdup (setlocale (LC_MEASUREMENT, NULL));
setlocale (LC_MEASUREMENT, priv->region);
fmt = nl_langinfo (_NL_MEASUREMENT_MEASUREMENT);
@@ -119,20 +117,17 @@ update_format_examples (GtkDialog *chooser)
else
gtk_label_set_text (GTK_LABEL (priv->measurement), C_("measurement format", "Metric"));
- setlocale (LC_MEASUREMENT, locale);
- g_free (locale);
+ setlocale (LC_MEASUREMENT, measurement_locale);
#endif
#ifdef LC_PAPER
- locale = g_strdup (setlocale (LC_PAPER, NULL));
+ paper_locale = g_strdup (setlocale (LC_PAPER, NULL));
setlocale (LC_PAPER, priv->region);
paper = gtk_paper_size_new (gtk_paper_size_get_default ());
gtk_label_set_text (GTK_LABEL (priv->paper), gtk_paper_size_get_display_name (paper));
- gtk_paper_size_free (paper);
- setlocale (LC_PAPER, locale);
- g_free (locale);
+ setlocale (LC_PAPER, paper_locale);
#endif
}
@@ -141,7 +136,8 @@ set_locale_id (GtkDialog *chooser,
const gchar *locale_id)
{
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
- GList *children, *l;
+ g_autoptr(GList) children = NULL;
+ GList *l;
children = gtk_container_get_children (GTK_CONTAINER (priv->list));
for (l = children; l; l = l->next) {
@@ -169,7 +165,6 @@ set_locale_id (GtkDialog *chooser,
gtk_widget_set_opacity (check, 0.0);
}
}
- g_list_free (children);
g_free (priv->region);
priv->region = g_strdup (locale_id);
@@ -325,14 +320,13 @@ add_regions (GtkDialog *chooser,
static void
add_all_regions (GtkDialog *chooser)
{
- gchar **locale_ids;
- GHashTable *initial;
+ g_auto(GStrv) locale_ids = NULL;
+ g_autoptr(GHashTable) initial = NULL;
locale_ids = gnome_get_all_locales ();
initial = cc_common_language_get_initial_languages ();
add_regions (chooser, locale_ids, initial);
g_hash_table_destroy (initial);
- g_strfreev (locale_ids);
}
static gboolean
@@ -354,11 +348,10 @@ region_visible (GtkListBoxRow *row,
{
GtkDialog *chooser = user_data;
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
- gchar *locale_name = NULL;
- gchar *locale_current_name = NULL;
- gchar *locale_untranslated_name = NULL;
+ g_autofree gchar *locale_name = NULL;
+ g_autofree gchar *locale_current_name = NULL;
+ g_autofree gchar *locale_untranslated_name = NULL;
gboolean is_extra;
- gboolean visible;
if (row == priv->more_item)
return !priv->showing_extra;
@@ -371,36 +364,26 @@ region_visible (GtkListBoxRow *row,
if (!priv->filter_words)
return TRUE;
- visible = FALSE;
-
locale_name =
cc_util_normalize_casefold_and_unaccent (g_object_get_data (G_OBJECT (row), "locale-name"));
- visible = match_all (priv->filter_words, locale_name);
- if (visible)
- goto out;
+ if (match_all (priv->filter_words, locale_name))
+ return TRUE;
locale_current_name =
cc_util_normalize_casefold_and_unaccent (g_object_get_data (G_OBJECT (row), "locale-current-name"));
- visible = match_all (priv->filter_words, locale_current_name);
- if (visible)
- goto out;
+ if (match_all (priv->filter_words, locale_current_name))
+ return TRUE;
locale_untranslated_name =
cc_util_normalize_casefold_and_unaccent (g_object_get_data (G_OBJECT (row), "locale-untranslated-name"));
- visible = match_all (priv->filter_words, locale_untranslated_name);
-
-out:
- g_free (locale_untranslated_name);
- g_free (locale_current_name);
- g_free (locale_name);
- return visible;
+ return match_all (priv->filter_words, locale_untranslated_name);
}
static void
filter_changed (GtkDialog *chooser)
{
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
- gchar *filter_contents = NULL;
+ g_autofree gchar *filter_contents = NULL;
g_clear_pointer (&priv->filter_words, g_strfreev);
@@ -412,7 +395,6 @@ filter_changed (GtkDialog *chooser)
return;
}
priv->filter_words = g_strsplit_set (g_strstrip (filter_contents), " ", 0);
- g_free (filter_contents);
gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->list), GTK_WIDGET (priv->no_results));
gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list));
}
@@ -447,7 +429,7 @@ row_activated (GtkListBox *box,
GtkDialog *chooser)
{
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
- gchar *new_locale_id;
+ const gchar *new_locale_id;
if (priv->adding)
return;
@@ -475,7 +457,7 @@ activate_default (GtkWindow *window,
{
CcFormatChooserPrivate *priv = GET_PRIVATE (chooser);
GtkWidget *focus;
- gchar *locale_id;
+ const gchar *locale_id;
focus = gtk_window_get_focus (window);
if (!focus)
@@ -505,16 +487,14 @@ cc_format_chooser_private_free (gpointer data)
GtkWidget *
cc_format_chooser_new (GtkWidget *parent)
{
- GtkBuilder *builder;
+ g_autoptr(GtkBuilder) builder = NULL;
GtkWidget *chooser;
CcFormatChooserPrivate *priv;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
builder = gtk_builder_new ();
if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/region/format-chooser.ui", &error) == 0) {
- g_object_unref (builder);
g_warning ("failed to load format chooser: %s", error->message);
- g_error_free (error);
return NULL;
}
diff --git a/panels/region/cc-input-chooser.c b/panels/region/cc-input-chooser.c
index a5156ccbf..640bacae9 100644
--- a/panels/region/cc-input-chooser.c
+++ b/panels/region/cc-input-chooser.c
@@ -274,12 +274,12 @@ input_source_row_new (GtkWidget *chooser,
static void
remove_all_children (GtkContainer *container)
{
- GList *list, *l;
+ g_autoptr(GList) list = NULL;
+ GList *l;
list = gtk_container_get_children (container);
for (l = list; l; l = l->next)
gtk_container_remove (container, (GtkWidget *) l->data);
- g_list_free (list);
}
static void
@@ -371,7 +371,7 @@ static void
show_locale_rows (GtkWidget *chooser)
{
CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
- GHashTable *initial = NULL;
+ g_autoptr(GHashTable) initial = NULL;
LocaleInfo *info;
GHashTableIter iter;
@@ -415,9 +415,6 @@ show_locale_rows (GtkWidget *chooser)
if (gtk_widget_is_visible (priv->filter_entry) &&
!gtk_widget_is_focus (priv->filter_entry))
gtk_widget_grab_focus (priv->filter_entry);
-
- if (!priv->showing_extra)
- g_hash_table_destroy (initial);
}
static gint
@@ -573,25 +570,21 @@ static gboolean
do_filter (GtkWidget *chooser)
{
CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
- gchar **previous_words;
- gchar *filter_contents = NULL;
+ g_auto(GStrv) previous_words = NULL;
+ g_autofree gchar *filter_contents = NULL;
priv->filter_timeout_id = 0;
- previous_words = priv->filter_words;
+ previous_words = g_steal_pointer (&priv->filter_words); // WTF
filter_contents =
cc_util_normalize_casefold_and_unaccent (gtk_entry_get_text (GTK_ENTRY (priv->filter_entry)));
if (filter_contents)
- {
priv->filter_words = g_strsplit_set (g_strstrip (filter_contents), " ", 0);
- g_free (filter_contents);
- }
if (!priv->filter_words || !priv->filter_words[0])
{
- g_clear_pointer (&priv->filter_words, g_strfreev);
gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list));
gtk_list_box_set_placeholder (GTK_LIST_BOX (priv->list), NULL);
}
@@ -604,8 +597,6 @@ do_filter (GtkWidget *chooser)
}
}
- g_strfreev (previous_words);
-
return G_SOURCE_REMOVE;
}
@@ -818,15 +809,15 @@ get_ibus_locale_infos (GtkWidget *chooser)
g_hash_table_iter_init (&iter, priv->ibus_engines);
while (g_hash_table_iter_next (&iter, (gpointer *) &engine_id, (gpointer *) &engine))
{
- gchar *lang_code = NULL;
- gchar *country_code = NULL;
+ g_autofree gchar *lang_code = NULL;
+ g_autofree gchar *country_code = NULL;
const gchar *ibus_locale = ibus_engine_desc_get_language (engine);
if (gnome_parse_locale (ibus_locale, &lang_code, &country_code, NULL, NULL) &&
lang_code != NULL &&
country_code != NULL)
{
- gchar *locale = g_strdup_printf ("%s_%s.UTF-8", lang_code, country_code);
+ g_autofree gchar *locale = g_strdup_printf ("%s_%s.UTF-8", lang_code, country_code);
info = g_hash_table_lookup (priv->locales, locale);
if (info)
@@ -848,14 +839,12 @@ get_ibus_locale_infos (GtkWidget *chooser)
{
add_row_other (chooser, INPUT_SOURCE_TYPE_IBUS, engine_id);
}
-
- g_free (locale);
}
else if (lang_code != NULL)
{
GHashTableIter iter;
GHashTable *locales_for_language;
- gchar *language;
+ g_autofree gchar *language = NULL;
/* Most IBus engines only specify the language so we try to
add them to all locales for that language. */
@@ -865,7 +854,6 @@ get_ibus_locale_infos (GtkWidget *chooser)
locales_for_language = g_hash_table_lookup (priv->locales_by_language, language);
else
locales_for_language = NULL;
- g_free (language);
if (locales_for_language)
{
@@ -883,9 +871,6 @@ get_ibus_locale_infos (GtkWidget *chooser)
{
add_row_other (chooser, INPUT_SOURCE_TYPE_IBUS, engine_id);
}
-
- g_free (country_code);
- g_free (lang_code);
}
}
#endif /* HAVE_IBUS */
@@ -896,7 +881,7 @@ add_locale_to_table (GHashTable *table,
LocaleInfo *info)
{
GHashTable *set;
- gchar *language;
+ g_autofree gchar *language = NULL;
language = gnome_get_language_from_code (lang_code, NULL);
@@ -907,8 +892,6 @@ add_locale_to_table (GHashTable *table,
g_hash_table_replace (table, g_strdup (language), set);
}
g_hash_table_add (set, info);
-
- g_free (language);
}
static void
@@ -926,11 +909,12 @@ static void
get_locale_infos (GtkWidget *chooser)
{
CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
- GHashTable *layouts_with_locale;
+ g_autoptr(GHashTable) layouts_with_locale = NULL;
LocaleInfo *info;
- gchar **locale_ids;
+ g_auto(GStrv) locale_ids = NULL;
gchar **locale;
- GList *list, *l;
+ g_autoptr(GList) layouts = NULL;
+ GList *l;
priv->locales = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL, locale_info_free);
@@ -942,11 +926,13 @@ get_locale_infos (GtkWidget *chooser)
locale_ids = gnome_get_all_locales ();
for (locale = locale_ids; *locale; ++locale)
{
- gchar *lang_code, *country_code;
- gchar *simple_locale;
- gchar *tmp;
+ g_autofree gchar *lang_code = NULL;
+ g_autofree gchar *lang_code = NULL;
+ g_autofree gchar *simple_locale = NULL;
+ g_autofree gchar *tmp = NULL;
const gchar *type = NULL;
const gchar *id = NULL;
+ g_autoptr(GList) language_layouts = NULL;
if (!gnome_parse_locale (*locale, &lang_code, &country_code, NULL, NULL))
continue;
@@ -957,20 +943,14 @@ get_locale_infos (GtkWidget *chooser)
simple_locale = g_strdup_printf ("%s.UTF-8", lang_code);
if (g_hash_table_contains (priv->locales, simple_locale))
- {
- g_free (simple_locale);
- g_free (country_code);
- g_free (lang_code);
continue;
- }
info = g_new0 (LocaleInfo, 1);
- info->id = simple_locale; /* Take ownership */
+ info->id = g_steal_pointer (&simple_locale);
info->name = gnome_get_language_from_locale (simple_locale, NULL);
info->unaccented_name = cc_util_normalize_casefold_and_unaccent (info->name);
tmp = gnome_get_language_from_locale (simple_locale, "C");
info->untranslated_name = cc_util_normalize_casefold_and_unaccent (tmp);
- g_free (tmp);
g_hash_table_replace (priv->locales, simple_locale, info);
add_locale_to_table (priv->locales_by_language, lang_code, info);
@@ -988,23 +968,17 @@ get_locale_infos (GtkWidget *chooser)
info->engine_rows_by_id = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL, g_object_unref);
- list = gnome_xkb_info_get_layouts_for_language (priv->xkb_info, lang_code);
- add_rows_to_table (chooser, info, list, INPUT_SOURCE_TYPE_XKB, id);
- add_ids_to_set (layouts_with_locale, list);
- g_list_free (list);
+ language_layouts = gnome_xkb_info_get_layouts_for_language (priv->xkb_info, lang_code);
+ add_rows_to_table (chooser, info, language_layouts, INPUT_SOURCE_TYPE_XKB, id);
+ add_ids_to_set (layouts_with_locale, language_layouts);
if (country_code != NULL)
{
- list = gnome_xkb_info_get_layouts_for_country (priv->xkb_info, country_code);
- add_rows_to_table (chooser, info, list, INPUT_SOURCE_TYPE_XKB, id);
- add_ids_to_set (layouts_with_locale, list);
- g_list_free (list);
+ g_autoptr(GList) country_layouts = gnome_xkb_info_get_layouts_for_country (priv->xkb_info, country_code);
+ add_rows_to_table (chooser, info, country_layouts, INPUT_SOURCE_TYPE_XKB, id);
+ add_ids_to_set (layouts_with_locale, country_layouts);
}
-
- g_free (lang_code);
- g_free (country_code);
}
- g_strfreev (locale_ids);
/* Add a "Other" locale to hold the remaining input sources */
info = g_new0 (LocaleInfo, 1);
@@ -1019,14 +993,10 @@ get_locale_infos (GtkWidget *chooser)
info->engine_rows_by_id = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL, g_object_unref);
- list = gnome_xkb_info_get_all_layouts (priv->xkb_info);
- for (l = list; l; l = l->next)
+ all_layouts = gnome_xkb_info_get_all_layouts (priv->xkb_info);
+ for (l = all_layouts; l; l = l->next)
if (!g_hash_table_contains (layouts_with_locale, l->data))
add_row_other (chooser, INPUT_SOURCE_TYPE_XKB, l->data);
-
- g_list_free (list);
-
- g_hash_table_destroy (layouts_with_locale);
}
static void
@@ -1061,18 +1031,16 @@ cc_input_chooser_new (GtkWindow *main_window,
GnomeXkbInfo *xkb_info,
GHashTable *ibus_engines)
{
- GtkBuilder *builder;
+ g_autoptr(GtkBuilder) builder = NULL;
GtkWidget *chooser;
CcInputChooserPrivate *priv;
gint width, height;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
builder = gtk_builder_new ();
if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/region/input-chooser.ui", &error) == 0)
{
- g_object_unref (builder);
g_warning ("failed to load input chooser: %s", error->message);
- g_error_free (error);
return NULL;
}
chooser = WID ("input-dialog");
@@ -1119,8 +1087,6 @@ cc_input_chooser_new (GtkWindow *main_window,
gtk_window_set_transient_for (GTK_WINDOW (chooser), main_window);
- g_object_unref (builder);
-
return chooser;
}
diff --git a/panels/region/cc-input-options.c b/panels/region/cc-input-options.c
index 38c4545e8..3c38b4295 100644
--- a/panels/region/cc-input-options.c
+++ b/panels/region/cc-input-options.c
@@ -45,8 +45,9 @@ static void
update_shortcut_label (GtkWidget *widget,
const gchar *value)
{
- gchar *text;
- guint accel_key, *keycode;
+ g_autofree gchar *text = NULL;
+ guint accel_key;
+ g_autofree guint *keycode = NULL;
GdkModifierType mods;
if (value == NULL || *value == '\0') {
@@ -62,18 +63,16 @@ update_shortcut_label (GtkWidget *widget,
}
text = gtk_accelerator_get_label_with_keycode (gtk_widget_get_display (widget), accel_key, *keycode, mods);
- g_free (keycode);
gtk_label_set_text (GTK_LABEL (widget), text);
- g_free (text);
}
static void
update_shortcuts (CcInputOptions *self)
{
- gchar **previous;
- gchar **next;
- gchar *previous_shortcut;
- GSettings *settings;
+ g_auto(GStrv) previous = NULL;
+ g_auto(GStrv) next = NULL;
+ g_autofree gchar *previous_shortcut = NULL;
+ g_autoptr(GSettings) settings = NULL;
settings = g_settings_new ("org.gnome.desktop.wm.keybindings");
@@ -84,21 +83,15 @@ update_shortcuts (CcInputOptions *self)
update_shortcut_label (self->previous_source, previous_shortcut);
update_shortcut_label (self->next_source, next[0]);
-
- g_free (previous_shortcut);
-
- g_strfreev (previous);
- g_strfreev (next);
-
- g_object_unref (settings);
}
static void
update_modifiers_shortcut (CcInputOptions *self)
{
- gchar **options, **p;
- GSettings *settings;
- GnomeXkbInfo *xkb_info;
+ g_auto(GStrv) options = NULL;
+ gchar **p;
+ g_autoptr(GSettings) settings = NULL;
+ g_autoptr(GnomeXkbInfo) xkb_info = NULL;
const gchar *text;
xkb_info = gnome_xkb_info_new ();
@@ -115,10 +108,6 @@ update_modifiers_shortcut (CcInputOptions *self)
} else {
gtk_widget_hide (self->alt_next_source);
}
-
- g_strfreev (options);
- g_object_unref (settings);
- g_object_unref (xkb_info);
}
static void
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
index 48c0d7ac0..5a3454a9e 100644
--- a/panels/region/cc-region-panel.c
+++ b/panels/region/cc-region-panel.c
@@ -225,7 +225,7 @@ set_restart_notification_visible (CcRegionPanel *self,
gboolean visible)
{
CcRegionPanelPrivate *priv = self->priv;
- gchar *current_locale = NULL;
+ g_autofree gchar *current_locale = NULL;
if (locale) {
current_locale = g_strdup (setlocale (LC_MESSAGES, NULL));
@@ -234,10 +234,8 @@ set_restart_notification_visible (CcRegionPanel *self,
gtk_revealer_set_reveal_child (GTK_REVEALER (priv->restart_notification), visible);
- if (locale) {
+ if (locale)
setlocale (LC_MESSAGES, current_locale);
- g_free (current_locale);
- }
if (!visible) {
g_file_delete (g_file_new_for_path (priv->needs_restart_file_path),
@@ -257,18 +255,27 @@ typedef struct {
} MaybeNotifyData;
static void
+maybe_notify_data_free (MaybeNotifyData *data)
+{
+ g_free (data->target_locale);
+ g_free (data);
+}
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (MaybeNotifyData, maybe_notify_data_free)
+
+static void
maybe_notify_finish (GObject *source,
GAsyncResult *res,
gpointer data)
{
- MaybeNotifyData *mnd = data;
+ g_autoptr(MaybeNotifyData) mnd = data;
CcRegionPanel *self = mnd->self;
- GError *error = NULL;
- GVariant *retval = NULL;
- gchar *current_lang_code = NULL;
- gchar *current_country_code = NULL;
- gchar *target_lang_code = NULL;
- gchar *target_country_code = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) retval = NULL;
+ g_autofree gchar *current_lang_code = NULL;
+ g_autofree gchar *current_country_code = NULL;
+ g_autofree gchar *target_lang_code = NULL;
+ g_autofree gchar *target_country_code = NULL;
const gchar *current_locale = NULL;
retval = g_dbus_proxy_call_finish (G_DBUS_PROXY (source), res, &error);
@@ -285,14 +292,14 @@ maybe_notify_finish (GObject *source,
&current_country_code,
NULL,
NULL))
- goto out;
+ return;
if (!gnome_parse_locale (mnd->target_locale,
&target_lang_code,
&target_country_code,
NULL,
NULL))
- goto out;
+ return;
if (g_str_equal (current_lang_code, target_lang_code) == FALSE ||
g_str_equal (current_country_code, target_country_code) == FALSE)
@@ -303,15 +310,6 @@ maybe_notify_finish (GObject *source,
set_restart_notification_visible (self,
mnd->category == LC_MESSAGES ? mnd->target_locale : NULL,
FALSE);
-out:
- g_free (target_country_code);
- g_free (target_lang_code);
- g_free (current_country_code);
- g_free (current_lang_code);
- g_clear_pointer (&retval, g_variant_unref);
- g_clear_error (&error);
- g_free (mnd->target_locale);
- g_free (mnd);
}
static void
@@ -505,14 +503,13 @@ permission_acquired (GObject *source,
{
CcRegionPanel *self = data;
CcRegionPanelPrivate *priv = self->priv;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
gboolean allowed;
allowed = g_permission_acquire_finish (priv->permission, res, &error);
if (error) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
g_warning ("Failed to acquire permission: %s\n", error->message);
- g_error_free (error);
return;
}
@@ -575,7 +572,7 @@ update_region_label (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
const gchar *region = get_effective_region (self);
- gchar *name = NULL;
+ g_autofree gchar *name = NULL;
if (region)
name = gnome_get_country_from_locale (region, region);
@@ -584,7 +581,6 @@ update_region_label (CcRegionPanel *self)
name = gnome_get_country_from_locale (DEFAULT_LOCALE, DEFAULT_LOCALE);
gtk_label_set_label (GTK_LABEL (priv->formats_label), name);
- g_free (name);
}
static void
@@ -602,7 +598,7 @@ update_language_label (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
const gchar *language = get_effective_language (self);
- gchar *name = NULL;
+ g_autofree gchar *name = NULL;
if (language)
name = gnome_get_language_from_locale (language, language);
@@ -611,7 +607,6 @@ update_language_label (CcRegionPanel *self)
name = gnome_get_language_from_locale (DEFAULT_LOCALE, DEFAULT_LOCALE);
gtk_label_set_label (GTK_LABEL (priv->language_label), name);
- g_free (name);
/* Formats will change too if not explicitly set. */
update_region_label (self);
@@ -678,12 +673,12 @@ static void
update_ibus_active_sources (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GList *rows, *l;
+ g_autoptr(GList) rows = NULL;
+ GList *l;
GtkWidget *row;
const gchar *type;
const gchar *id;
IBusEngineDesc *engine_desc;
- gchar *display_name;
GtkWidget *label;
rows = gtk_container_get_children (GTK_CONTAINER (priv->input_list));
@@ -696,13 +691,11 @@ update_ibus_active_sources (CcRegionPanel *self)
engine_desc = g_hash_table_lookup (priv->ibus_engines, id);
if (engine_desc) {
- display_name = engine_get_display_name (engine_desc);
+ g_autofree gchar *display_name = engine_get_display_name (engine_desc);
label = GTK_WIDGET (g_object_get_data (G_OBJECT (row), "label"));
gtk_label_set_text (GTK_LABEL (label), display_name);
- g_free (display_name);
}
}
- g_list_free (rows);
}
static void
@@ -724,15 +717,14 @@ fetch_ibus_engines_result (GObject *object,
CcRegionPanel *self)
{
CcRegionPanelPrivate *priv;
- GList *list, *l;
- GError *error;
+ g_autoptr(GList) list = NULL
+ GList *l;
+ g_autoptr(GError) error = NULL;
- error = NULL;
list = ibus_bus_list_engines_async_finish (IBUS_BUS (object), result, &error);
if (!list && error) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
g_warning ("Couldn't finish IBus request: %s", error->message);
- g_error_free (error);
return;
}
@@ -751,7 +743,6 @@ fetch_ibus_engines_result (GObject *object,
else
g_hash_table_replace (priv->ibus_engines, (gpointer)engine_id, engine);
}
- g_list_free (list);
update_ibus_active_sources (self);
update_input_chooser (self);
@@ -793,35 +784,28 @@ maybe_start_ibus (void)
static GDesktopAppInfo *
setup_app_info_for_id (const gchar *id)
{
- GDesktopAppInfo *app_info;
- gchar *desktop_file_name;
- gchar **strv;
+ g_autofree gchar *desktop_file_name = NULL;
+ g_auto(GStrv) strv = NULL;
- strv = g_strsplit (id, ":", 2);
- desktop_file_name = g_strdup_printf ("ibus-setup-%s.desktop", strv[0]);
- g_strfreev (strv);
+ strv = g_strsplit (id, ":", 2);
+ desktop_file_name = g_strdup_printf ("ibus-setup-%s.desktop", strv[0]);
- app_info = g_desktop_app_info_new (desktop_file_name);
- g_free (desktop_file_name);
-
- return app_info;
+ return g_desktop_app_info_new (desktop_file_name);
}
#endif
static void
remove_no_input_row (GtkContainer *list)
{
- GList *l;
+ g_autoptr(GList) l = NULL;
l = gtk_container_get_children (list);
if (!l)
return;
if (l->next != NULL)
- goto out;
+ return;
if (g_strcmp0 (g_object_get_data (G_OBJECT (l->data), "type"), "none") == 0)
gtk_container_remove (list, GTK_WIDGET (l->data));
-out:
- g_list_free (l);
}
static GtkWidget *
@@ -890,8 +874,8 @@ add_input_sources (CcRegionPanel *self,
const gchar *type;
const gchar *id;
const gchar *name;
- gchar *display_name;
- GDesktopAppInfo *app_info;
+ g_autofree gchar *display_name = NULL;
+ g_autoptr(GDesktopAppInfo) app_info = NULL;
if (g_variant_n_children (sources) < 1) {
add_no_input_row (self);
@@ -929,8 +913,6 @@ add_input_sources (CcRegionPanel *self,
}
add_input_row (self, type, id, display_name ? display_name : id, app_info);
- g_free (display_name);
- g_clear_object (&app_info);
}
}
@@ -938,22 +920,22 @@ static void
add_input_sources_from_settings (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GVariant *sources;
+ g_autoptr(GVariant) sources = NULL;
sources = g_settings_get_value (priv->input_settings, "sources");
add_input_sources (self, sources);
- g_variant_unref (sources);
}
static void
clear_input_sources (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GList *list, *l;
+ g_autoptr(GList) list = NULL;
+ GList *l;
+
list = gtk_container_get_children (GTK_CONTAINER (priv->input_list));
for (l = list; l; l = l->next) {
gtk_container_remove (GTK_CONTAINER (priv->input_list), GTK_WIDGET (l->data));
}
- g_list_free (list);
cc_list_box_adjust_scrolling (GTK_LIST_BOX (priv->input_list));
}
@@ -985,17 +967,15 @@ input_sources_changed (GSettings *settings,
{
CcRegionPanelPrivate *priv = self->priv;
GtkListBoxRow *selected;
- gchar *id = NULL;
+ g_autofree gchar *id = NULL;
selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (priv->input_list));
if (selected)
id = g_strdup (g_object_get_data (G_OBJECT (selected), "id"));
clear_input_sources (self);
add_input_sources_from_settings (self);
- if (id) {
+ if (id)
select_input (self, id);
- g_free (id);
- }
}
@@ -1004,12 +984,11 @@ update_buttons (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
GtkListBoxRow *selected;
- GList *children;
+ g_autoptr(GList) children = NULL;
guint n_rows;
children = gtk_container_get_children (GTK_CONTAINER (priv->input_list));
n_rows = g_list_length (children);
- g_list_free (children);
selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (priv->input_list));
if (selected == NULL) {
@@ -1041,7 +1020,8 @@ set_input_settings (CcRegionPanel *self)
const gchar *type;
const gchar *id;
GVariantBuilder builder;
- GList *list, *l;
+ g_autoptr(GList) list = NULL;
+ GList *l;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
list = gtk_container_get_children (GTK_CONTAINER (priv->input_list));
@@ -1050,7 +1030,6 @@ set_input_settings (CcRegionPanel *self)
id = (const gchar *)g_object_get_data (G_OBJECT (l->data), "id");
g_variant_builder_add (&builder, "(ss)", type, id);
}
- g_list_free (list);
g_settings_set_value (priv->input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
g_settings_apply (priv->input_settings);
@@ -1077,49 +1056,42 @@ input_source_already_added (CcRegionPanel *self,
const gchar *id)
{
CcRegionPanelPrivate *priv = self->priv;
- GList *list, *l;
- gboolean retval = FALSE;
+ g_autoptr(GList) list = NULL;
+ GList *l;
list = gtk_container_get_children (GTK_CONTAINER (priv->input_list));
for (l = list; l; l = l->next)
if (g_str_equal (id, (const gchar *) g_object_get_data (G_OBJECT (l->data), "id"))) {
- retval = TRUE;
- break;
+ return TRUE;
}
- g_list_free (list);
- return retval;
+ return FALSE;
}
static void
run_input_chooser (CcRegionPanel *self, GtkWidget *chooser)
{
- gchar *type;
- gchar *id;
- gchar *name;
- GDesktopAppInfo *app_info = NULL;
+ g_autofree gchar *type = NULL;
+ const gchar *type2;
+ g_autofree gchar *id = NULL;
+ g_autofree gchar *name = NULL;
+ g_autoptr(GDesktopAppInfo) app_info = NULL;
if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_OK) {
if (cc_input_chooser_get_selected (chooser, &type, &id, &name) &&
!input_source_already_added (self, id)) {
if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS)) {
- g_free (type);
- type = INPUT_SOURCE_TYPE_IBUS;
+ type2 = INPUT_SOURCE_TYPE_IBUS;
#ifdef HAVE_IBUS
app_info = setup_app_info_for_id (id);
#endif
} else {
- g_free (type);
- type = INPUT_SOURCE_TYPE_XKB;
+ type2 = INPUT_SOURCE_TYPE_XKB;
}
- add_input_row (self, type, id, name, app_info);
+ add_input_row (self, type2, id, name, app_info);
update_buttons (self);
update_input (self);
-
- g_free (id);
- g_free (name);
- g_clear_object (&app_info);
}
}
gtk_widget_hide(chooser);
@@ -1176,8 +1148,8 @@ add_input (CcRegionPanel *self)
static GtkWidget *
find_sibling (GtkContainer *container, GtkWidget *child)
{
- GList *list, *c;
- GList *l;
+ g_autoptr(GList) list = NULL;
+ GList *c, *l;
GtkWidget *sibling;
list = gtk_container_get_children (container);
@@ -1186,21 +1158,16 @@ find_sibling (GtkContainer *container, GtkWidget *child)
for (l = c->next; l; l = l->next) {
sibling = l->data;
if (gtk_widget_get_visible (sibling) && gtk_widget_get_child_visible (sibling))
- goto out;
+ return sibling;
}
for (l = c->prev; l; l = l->prev) {
sibling = l->data;
if (gtk_widget_get_visible (sibling) && gtk_widget_get_child_visible (sibling))
- goto out;
+ return sibling;
}
- sibling = NULL;
-
-out:
- g_list_free (list);
-
- return sibling;
+ return NULL;
}
static void
@@ -1312,10 +1279,10 @@ show_selected_settings (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
GtkListBoxRow *selected;
- GdkAppLaunchContext *ctx;
+ g_autoptr(GdkAppLaunchContext) ctx = NULL;
GDesktopAppInfo *app_info;
const gchar *id;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (priv->input_list));
if (selected == NULL)
@@ -1332,12 +1299,8 @@ show_selected_settings (CcRegionPanel *self)
g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (ctx),
"IBUS_ENGINE_NAME", id);
- if (!g_app_info_launch (G_APP_INFO (app_info), NULL, G_APP_LAUNCH_CONTEXT (ctx), &error)) {
+ if (!g_app_info_launch (G_APP_INFO (app_info), NULL, G_APP_LAUNCH_CONTEXT (ctx), &error))
g_warning ("Failed to launch input source setup: %s", error->message);
- g_error_free (error);
- }
-
- g_object_unref (ctx);
}
static void
@@ -1349,7 +1312,7 @@ show_selected_layout (CcRegionPanel *self)
const gchar *id;
const gchar *layout;
const gchar *variant;
- gchar *commandline;
+ g_autofree gchar *commandline = NULL;
selected = gtk_list_box_get_selected_row (GTK_LIST_BOX (priv->input_list));
if (selected == NULL)
@@ -1395,7 +1358,6 @@ show_selected_layout (CcRegionPanel *self)
layout);
g_spawn_command_line_async (commandline, NULL);
- g_free (commandline);
}
static void
@@ -1492,11 +1454,11 @@ on_localed_properties_changed (GDBusProxy *proxy,
CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GVariant *v;
+ g_autoptr(GVariant) v = NULL;
v = g_dbus_proxy_get_cached_property (proxy, "Locale");
if (v) {
- const gchar **strv;
+ g_autofree const gchar **strv = NULL;
gsize len;
gint i;
const gchar *lang, *messages, *time;
@@ -1523,8 +1485,6 @@ on_localed_properties_changed (GDBusProxy *proxy,
priv->system_language = g_strdup (messages);
g_free (priv->system_region);
priv->system_region = g_strdup (time);
- g_variant_unref (v);
- g_free (strv);
update_language_label (self);
}
@@ -1534,28 +1494,27 @@ static void
add_input_sources_from_localed (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GVariant *v;
+ g_autoptr(GVariant) layout_property = NULL;
+ g_autoptr(GVariant) variant_property = NULL;
const gchar *s;
- gchar **layouts = NULL;
- gchar **variants = NULL;
+ g_auto(GStrv) layouts = NULL;
+ g_auto(GStrv) variants = NULL;
gint i, n;
if (!priv->localed)
return;
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout");
- if (v) {
- s = g_variant_get_string (v, NULL);
+ layout_property = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout");
+ if (layout_property) {
+ s = g_variant_get_string (layout_property, NULL);
layouts = g_strsplit (s, ",", -1);
- g_variant_unref (v);
}
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Variant");
+ variant_property = g_dbus_proxy_get_cached_property (priv->localed, "X11Variant");
if (v) {
- s = g_variant_get_string (v, NULL);
+ s = g_variant_get_string (variant_property, NULL);
if (s && *s)
variants = g_strsplit (s, ",", -1);
- g_variant_unref (v);
}
if (variants && variants[0])
@@ -1567,7 +1526,7 @@ add_input_sources_from_localed (CcRegionPanel *self)
for (i = 0; i < n && layouts[i][0]; i++) {
const gchar *name;
- gchar *id;
+ g_autofree gchar *id = NULL;
if (variants && variants[i] && variants[i][0])
id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
@@ -1577,63 +1536,57 @@ add_input_sources_from_localed (CcRegionPanel *self)
gnome_xkb_info_get_layout_info (priv->xkb_info, id, &name, NULL, NULL, NULL);
add_input_row (self, INPUT_SOURCE_TYPE_XKB, id, name ? name : id, NULL);
-
- g_free (id);
}
if (n == 0) {
add_no_input_row (self);
}
-
- g_strfreev (variants);
- g_strfreev (layouts);
}
static void
set_localed_locale (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GVariantBuilder *b;
- gchar *s;
+ g_autoptr(GVariantBuilder) *b = NULL;
+ g_autofree gchar *lang_value = NULL;
b = g_variant_builder_new (G_VARIANT_TYPE ("as"));
- s = g_strconcat ("LANG=", priv->system_language, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
+ lang_value = g_strconcat ("LANG=", priv->system_language, NULL);
+ g_variant_builder_add (b, "s", lang_value);
if (priv->system_region != NULL &&
g_strcmp0 (priv->system_language, priv->system_region) != 0) {
- s = g_strconcat ("LC_TIME=", priv->system_region, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
- s = g_strconcat ("LC_NUMERIC=", priv->system_region, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
- s = g_strconcat ("LC_MONETARY=", priv->system_region, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
- s = g_strconcat ("LC_MEASUREMENT=", priv->system_region, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
- s = g_strconcat ("LC_PAPER=", priv->system_region, NULL);
- g_variant_builder_add (b, "s", s);
- g_free (s);
+ g_autofree gchar *time_value = NULL;
+ g_autofree gchar *numeric_value = NULL;
+ g_autofree gchar *monetary_value = NULL;
+ g_autofree gchar *measurement_value = NULL;
+ g_autofree gchar *paper_value = NULL;
+ time_value = g_strconcat ("LC_TIME=", priv->system_region, NULL);
+ g_variant_builder_add (b, "s", time_value);
+ numeric_value = g_strconcat ("LC_NUMERIC=", priv->system_region, NULL);
+ g_variant_builder_add (b, "s", numeric_value);
+ monetary_value = g_strconcat ("LC_MONETARY=", priv->system_region, NULL);
+ g_variant_builder_add (b, "s", monetary_value);
+ measurement_value = g_strconcat ("LC_MEASUREMENT=", priv->system_region, NULL);
+ g_variant_builder_add (b, "s", measurement_value);
+ paper_value = g_strconcat ("LC_PAPER=", priv->system_region, NULL);
+ g_variant_builder_add (b, "s", paper_value);
}
g_dbus_proxy_call (priv->localed,
"SetLocale",
g_variant_new ("(asb)", b, TRUE),
G_DBUS_CALL_FLAGS_NONE,
-1, NULL, NULL, NULL);
- g_variant_builder_unref (b);
}
static void
set_localed_input (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GString *layouts;
- GString *variants;
+ g_autoptr(GString) layouts = NULL;
+ g_autoptr(GString) variants = NULL;
const gchar *type, *id;
- GList *list, *li;
+ g_autoptr(GList) list = NULL;
+ GList *li;
const gchar *l, *v;
layouts = g_string_new ("");
@@ -1655,16 +1608,12 @@ set_localed_input (CcRegionPanel *self)
g_string_append (variants, v);
}
}
- g_list_free (list);
g_dbus_proxy_call (priv->localed,
"SetX11Keyboard",
g_variant_new ("(ssssbb)", layouts->str, "", variants->str, "", TRUE, TRUE),
G_DBUS_CALL_FLAGS_NONE,
-1, NULL, NULL, NULL);
-
- g_string_free (layouts, TRUE);
- g_string_free (variants, TRUE);
}
static void
@@ -1675,14 +1624,13 @@ localed_proxy_ready (GObject *source,
CcRegionPanel *self = data;
CcRegionPanelPrivate *priv;
GDBusProxy *proxy;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
proxy = g_dbus_proxy_new_finish (res, &error);
if (!proxy) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
g_warning ("Failed to contact localed: %s\n", error->message);
- g_error_free (error);
return;
}
@@ -1745,15 +1693,14 @@ static void
setup_login_button (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv = self->priv;
- GDBusConnection *bus;
+ g_autoptr(GDBusConnection) bus = NULL;
gboolean loaded;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, &error);
if (priv->permission == NULL) {
g_warning ("Could not get 'org.freedesktop.locale1.set-locale' permission: %s",
error->message);
- g_error_free (error);
return;
}
@@ -1767,7 +1714,6 @@ setup_login_button (CcRegionPanel *self)
priv->cancellable,
(GAsyncReadyCallback) localed_proxy_ready,
self);
- g_object_unref (bus);
priv->login_label = WID ("login-label");
priv->login_button = gtk_toggle_button_new_with_mnemonic (_("Login _Screen"));
@@ -1794,14 +1740,13 @@ session_proxy_ready (GObject *source,
{
CcRegionPanel *self = data;
GDBusProxy *proxy;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
if (!proxy) {
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
g_warning ("Failed to contact gnome-session: %s\n", error->message);
- g_error_free (error);
return;
}
@@ -1812,7 +1757,7 @@ static void
cc_region_panel_init (CcRegionPanel *self)
{
CcRegionPanelPrivate *priv;
- GError *error = NULL;
+ g_autoptr(GError) error = NULL;
priv = self->priv = REGION_PANEL_PRIVATE (self);
g_resources_register (cc_region_get_resource ());
@@ -1824,7 +1769,6 @@ cc_region_panel_init (CcRegionPanel *self)
&error);
if (error != NULL) {
g_warning ("Error loading UI file: %s", error->message);
- g_error_free (error);
return;
}