[Xfce4-commits] <xfce4-settings:master> Return selected layout as a NULL-terminated array of strings.
Igor Slepchin
noreply at xfce.org
Wed Aug 22 23:14:16 CEST 2012
Updating branch refs/heads/master
to 44bfe286fa5c6e513be324186656873e2c6fda21 (commit)
from ff3dddeba529057301b5971d3e5689b802a42073 (commit)
commit 44bfe286fa5c6e513be324186656873e2c6fda21
Author: Igor Slepchin <igor.slepchin at gmail.com>
Date: Fri Jul 27 23:50:43 2012 -0400
Return selected layout as a NULL-terminated array of strings.
We were returning it as a comma-concatenated single string and then
splitting on the commas again. This breaks if layout/variant description
has any commas in it (e.g., "Berber (Morocco, Tifinagh extended phonetic)"
variant of Arabic).
dialogs/keyboard-settings/xfce-keyboard-settings.c | 61 ++++++++++----------
1 files changed, 30 insertions(+), 31 deletions(-)
diff --git a/dialogs/keyboard-settings/xfce-keyboard-settings.c b/dialogs/keyboard-settings/xfce-keyboard-settings.c
index d042c3f..cc7e81c 100644
--- a/dialogs/keyboard-settings/xfce-keyboard-settings.c
+++ b/dialogs/keyboard-settings/xfce-keyboard-settings.c
@@ -194,7 +194,7 @@ static void xfce_keyboard_settings_add_variant_to_list (X
static void xfce_keyboard_settings_add_layout_to_list (XklConfigRegistry *config_registry,
XklConfigItem *config_item,
XfceKeyboardSettings *settings);
-static gchar * xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings,
+static gchar** xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings,
const gchar *layout,
const gchar *variant);
@@ -1509,8 +1509,7 @@ xfce_keyboard_settings_edit_layout_button_cb (GtkWidget *widget,
GtkTreeIter iter;
gchar *current_layout;
gchar *current_variant;
- gchar *layout;
- gchar **strings;
+ gchar **layout_selection;
view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_layout_view");
model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
@@ -1522,19 +1521,19 @@ xfce_keyboard_settings_edit_layout_button_cb (GtkWidget *widget,
XKB_TREE_VARIANTS, ¤t_variant,
-1);
- layout = xfce_keyboard_settings_layout_selection (settings, current_layout, current_variant);
- if (layout)
+ layout_selection =
+ xfce_keyboard_settings_layout_selection (settings, current_layout, current_variant);
+ if (layout_selection)
{
- strings = g_strsplit_set (layout, ",", 0);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0],
- XKB_TREE_LAYOUTS_NAMES, strings[1],
- XKB_TREE_VARIANTS, strings[2],
- XKB_TREE_VARIANTS_NAMES, strings[3],
- -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ XKB_TREE_LAYOUTS, layout_selection[0],
+ XKB_TREE_LAYOUTS_NAMES, layout_selection[1],
+ XKB_TREE_VARIANTS, layout_selection[2],
+ XKB_TREE_VARIANTS_NAMES, layout_selection[3],
+ -1);
xfce_keyboard_settings_set_layout (settings);
- g_strfreev (strings);
+ g_strfreev (layout_selection);
}
- g_free (layout);
g_free (current_layout);
g_free (current_variant);
}
@@ -1548,26 +1547,24 @@ xfce_keyboard_settings_add_layout_button_cb (GtkWidget *widget,
GObject *view;
GtkTreeModel *model;
GtkTreeIter iter;
- gchar *layout;
- gchar **strings;
+ gchar **layout_selection;
- layout = xfce_keyboard_settings_layout_selection (settings, NULL, NULL);
+ layout_selection = xfce_keyboard_settings_layout_selection (settings, NULL, NULL);
view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_layout_view");
- if (layout)
+ if (layout_selection)
{
model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
- strings = g_strsplit_set (layout, ",", 0);
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_TREE_LAYOUTS, strings[0],
- XKB_TREE_LAYOUTS_NAMES, strings[1],
- XKB_TREE_VARIANTS, strings[2],
- XKB_TREE_VARIANTS_NAMES, strings[3],
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ XKB_TREE_LAYOUTS, layout_selection[0],
+ XKB_TREE_LAYOUTS_NAMES, layout_selection[1],
+ XKB_TREE_VARIANTS, layout_selection[2],
+ XKB_TREE_VARIANTS_NAMES, layout_selection[3],
-1);
xfce_keyboard_settings_update_layout_buttons (settings);
xfce_keyboard_settings_set_layout (settings);
- g_strfreev (strings);
+ g_strfreev (layout_selection);
}
- g_free (layout);
}
@@ -1721,7 +1718,7 @@ xfce_keyboard_settings_layout_activate_cb (GtkTreeView *tree_view,
-static gchar *
+static gchar**
xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings,
const gchar *edit_layout,
const gchar *edit_variant)
@@ -1734,7 +1731,7 @@ xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings,
GtkTreeIter iter;
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
- gchar *val_layout;
+ gchar **val_layout;
gchar *layout_desc;
gchar *variant_desc;
gchar *layout;
@@ -1899,11 +1896,13 @@ xfce_keyboard_settings_layout_selection (XfceKeyboardSettings *settings,
XKB_AVAIL_LAYOUTS_TREE_DESCRIPTION, &layout_desc, -1);
}
- val_layout = g_strconcat (layout, ",", layout_desc, ",", variant, ",", variant_desc, NULL);
- g_free (layout);
- g_free (variant);
- g_free (layout_desc);
- g_free (variant_desc);
+ val_layout = g_new0 (typeof (gchar*), 5);
+ val_layout[0] = layout;
+ val_layout[1] = layout_desc;
+ val_layout[2] = variant;
+ val_layout[3] = variant_desc;
+ val_layout[4] = NULL;
+
gtk_tree_path_free (path);
}
More information about the Xfce4-commits
mailing list