Updating branch refs/heads/master to eedc9e968f16065d949bc177c12cda373981b208 (commit) from 8717dfc2559099d7ce0fbf0a6ddf80660afd0081 (commit)
commit eedc9e968f16065d949bc177c12cda373981b208 Author: Igor Slepchin <igor.slepc...@gmail.com> Date: Fri Jul 27 18:39:19 2012 -0400 Merge some duplicated code. Merge nearly identical pieces of code for populating combo boxes in xfce4-keyboard-settings Layout tab and for handling xkb options in xfsettingsd. dialogs/keyboard-settings/xfce-keyboard-settings.c | 415 +++++++------------- xfsettingsd/keyboard-layout.c | 63 ++-- 2 files changed, 179 insertions(+), 299 deletions(-) diff --git a/dialogs/keyboard-settings/xfce-keyboard-settings.c b/dialogs/keyboard-settings/xfce-keyboard-settings.c index 61af9a8..d042c3f 100644 --- a/dialogs/keyboard-settings/xfce-keyboard-settings.c +++ b/dialogs/keyboard-settings/xfce-keyboard-settings.c @@ -63,23 +63,9 @@ enum enum { - XKB_MODEL_COMBO_DESCRIPTION = 0, - XKB_MODEL_COMBO_MODELS, - XKB_MODEL_COMBO_NUM_COLUMNS -}; - -enum -{ - XKB_GRPKEY_COMBO_DESCRIPTION = 0, - XKB_GRPKEY_COMBO_KEYS, - XKB_GRPKEY_COMBO_NUM_COLUMNS -}; - -enum -{ - XKB_COMPOSEKEY_COMBO_DESCRIPTION = 0, - XKB_COMPOSEKEY_COMBO_KEYS, - XKB_COMPOSEKEY_COMBO_NUM_COLUMNS + XKB_LAYOUTS_COMBO_DESCRIPTION = 0, + XKB_LAYOUTS_COMBO_VALUE, + XKB_LAYOUTS_COMBO_NUM_COLUMNS }; enum @@ -107,6 +93,12 @@ typedef enum typedef struct _XfceKeyboardShortcutInfo XfceKeyboardShortcutInfo; +typedef +void (*XfceKeyboardLayoutsComboInitFunc) (XfceKeyboardSettings *settings); + +typedef +void (*XfceKeyboardLayoutsComboChangedFunc) (GtkComboBox *combo, + XfceKeyboardSettings *settings); static void xfce_keyboard_settings_constructed (GObject *object); @@ -149,23 +141,31 @@ static void xfce_keyboard_settings_system_default_cb (G XfceKeyboardSettings *settings); static void xfce_keyboard_settings_set_layout (XfceKeyboardSettings *settings); static void xfce_keyboard_settings_init_layout (XfceKeyboardSettings *settings); -static void xfce_keyboard_settings_add_model_to_combo (XklConfigRegistry *config_registry, + +static void xfce_keyboard_settings_layouts_combo_populate(XfceKeyboardSettings *settings, + const gchar *combo_name, + const gchar *option_group_name, + XfceKeyboardLayoutsComboInitFunc init_func, + XfceKeyboardLayoutsComboChangedFunc cb_func); +static void xfce_keyboard_settings_layouts_combo_init (XfceKeyboardSettings *settings, + const gchar *combo_name, + const gchar *xfconf_prop_name, + const gchar *default_value); +static void xfce_keyboard_settings_layouts_combo_add (XklConfigRegistry *config_registry, const XklConfigItem *config_item, gpointer user_data); +static void xfce_keyboard_settings_layouts_combo_changed (GtkComboBox *combo, + XfceKeyboardSettings *settings, + const gchar *xfconf_prop_name); + static void xfce_keyboard_settings_init_model (XfceKeyboardSettings *settings); static void xfce_keyboard_settings_model_changed_cb (GtkComboBox *combo, XfceKeyboardSettings *settings); -static void xfce_keyboard_settings_add_grpkey_to_combo (XklConfigRegistry *config_registry, - const XklConfigItem *config_item, - gpointer user_data); static void xfce_keyboard_settings_init_grpkey (XfceKeyboardSettings *settings); static void xfce_keyboard_settings_grpkey_changed_cb (GtkComboBox *combo, XfceKeyboardSettings *settings); -static void xfce_keyboard_settings_add_compkey_to_combo (XklConfigRegistry *config_registry, - const XklConfigItem *config_item, - gpointer user_data); static void xfce_keyboard_settings_init_compkey (XfceKeyboardSettings *settings); static void xfce_keyboard_settings_compkey_changed_cb (GtkComboBox *combo, XfceKeyboardSettings *settings); @@ -272,6 +272,62 @@ xfce_keyboard_settings_init (XfceKeyboardSettings *settings) +/** + This is a tad hacky - it will query xkb keyboard models + if @option_group_name is NULL and will query the xkb option + @option_group_name if it is not NULL + */ +#ifdef HAVE_LIBXKLAVIER +static void +xfce_keyboard_settings_layouts_combo_populate (XfceKeyboardSettings *settings, + const gchar *combo_name, + const gchar *option_group_name, + XfceKeyboardLayoutsComboInitFunc combo_init_func, + XfceKeyboardLayoutsComboChangedFunc combo_changed_func) +{ + GtkListStore *list_store; + GtkTreeIter iter; + GObject *xkb_combo; + GtkCellRenderer *renderer; + + list_store = gtk_list_store_new (XKB_LAYOUTS_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING); + + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, + XKB_LAYOUTS_COMBO_DESCRIPTION, "-", + XKB_LAYOUTS_COMBO_VALUE, "", -1); + + if (option_group_name != NULL) + { + xkl_config_registry_foreach_option (settings->priv->xkl_registry, + option_group_name, + xfce_keyboard_settings_layouts_combo_add, + list_store); + } + else + { + xkl_config_registry_foreach_model (settings->priv->xkl_registry, + xfce_keyboard_settings_layouts_combo_add, + list_store); + } + + xkb_combo = gtk_builder_get_object (GTK_BUILDER (settings), combo_name); + gtk_combo_box_set_model (GTK_COMBO_BOX (xkb_combo), GTK_TREE_MODEL (list_store)); + g_object_unref (G_OBJECT (list_store)); + + gtk_cell_layout_clear (GTK_CELL_LAYOUT (xkb_combo)); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb_combo), renderer, TRUE); + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb_combo), renderer, "text", 0); + + combo_init_func (settings); + g_signal_connect (G_OBJECT (xkb_combo), "changed", + G_CALLBACK (combo_changed_func), settings); +} +#endif /* HAVE_LIBXKLAVIER */ + static void xfce_keyboard_settings_constructed (GObject *object) { @@ -289,13 +345,9 @@ xfce_keyboard_settings_constructed (GObject *object) GObject *kbd_shortcuts_view; GObject *xkb_numlock; GObject *button; - GtkTreeIter iter; #ifdef HAVE_LIBXKLAVIER GObject *xkb_use_system_default_checkbutton; GObject *xkb_tab_layout_vbox; - GObject *xkb_model_combo; - GObject *xkb_grpkey_combo; - GObject *xkb_compkey_combo; GObject *xkb_layout_view; GObject *xkb_layout_add_button; GObject *xkb_layout_edit_button; @@ -394,90 +446,23 @@ xfce_keyboard_settings_constructed (GObject *object) settings); /* Keyboard model combo */ - list_store = gtk_list_store_new (XKB_MODEL_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING); - - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, - XKB_MODEL_COMBO_DESCRIPTION, "-", - XKB_MODEL_COMBO_MODELS, "", -1); - - xkl_config_registry_foreach_model (settings->priv->xkl_registry, - xfce_keyboard_settings_add_model_to_combo, - list_store); - - xkb_model_combo = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_model_combo"); - gtk_combo_box_set_model (GTK_COMBO_BOX (xkb_model_combo), GTK_TREE_MODEL (list_store)); - g_object_unref (G_OBJECT (list_store)); - - gtk_cell_layout_clear (GTK_CELL_LAYOUT (xkb_model_combo)); - renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb_model_combo), renderer, TRUE); - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb_model_combo), renderer, "text", 0); - - xfce_keyboard_settings_init_model (settings); - g_signal_connect (G_OBJECT (xkb_model_combo), "changed", - G_CALLBACK (xfce_keyboard_settings_model_changed_cb), - settings); - + xfce_keyboard_settings_layouts_combo_populate (settings, + "xkb_model_combo", + NULL, + xfce_keyboard_settings_init_model, + xfce_keyboard_settings_model_changed_cb); /* Group key combo */ - list_store = gtk_list_store_new (XKB_GRPKEY_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING); - - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, - XKB_GRPKEY_COMBO_DESCRIPTION, "-", - XKB_GRPKEY_COMBO_KEYS, "", -1); - - xkl_config_registry_foreach_option (settings->priv->xkl_registry, - "grp", - xfce_keyboard_settings_add_grpkey_to_combo, - list_store); - - xkb_grpkey_combo = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_grpkey_combo"); - gtk_combo_box_set_model (GTK_COMBO_BOX (xkb_grpkey_combo), GTK_TREE_MODEL (list_store)); - g_object_unref (G_OBJECT (list_store)); - - gtk_cell_layout_clear (GTK_CELL_LAYOUT (xkb_grpkey_combo)); - renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb_grpkey_combo), renderer, TRUE); - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb_grpkey_combo), renderer, "text", 0); - - xfce_keyboard_settings_init_grpkey (settings); - g_signal_connect (G_OBJECT (xkb_grpkey_combo), "changed", - G_CALLBACK (xfce_keyboard_settings_grpkey_changed_cb), - settings); - + xfce_keyboard_settings_layouts_combo_populate (settings, + "xkb_grpkey_combo", + "grp", + xfce_keyboard_settings_init_grpkey, + xfce_keyboard_settings_grpkey_changed_cb); /* Compose key combo */ - list_store = gtk_list_store_new (XKB_COMPOSEKEY_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING); - - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, - XKB_COMPOSEKEY_COMBO_DESCRIPTION, "-", - XKB_COMPOSEKEY_COMBO_KEYS, "", -1); - - xkl_config_registry_foreach_option (settings->priv->xkl_registry, - "Compose key", - xfce_keyboard_settings_add_compkey_to_combo, - list_store); - - xkb_compkey_combo = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_composekey_combo"); - gtk_combo_box_set_model (GTK_COMBO_BOX (xkb_compkey_combo), GTK_TREE_MODEL (list_store)); - g_object_unref (G_OBJECT (list_store)); - - gtk_cell_layout_clear (GTK_CELL_LAYOUT (xkb_compkey_combo)); - renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (xkb_compkey_combo), renderer, TRUE); - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (xkb_compkey_combo), renderer, "text", 0); - - xfce_keyboard_settings_init_compkey (settings); - g_signal_connect (G_OBJECT (xkb_compkey_combo), "changed", - G_CALLBACK (xfce_keyboard_settings_compkey_changed_cb), - settings); + xfce_keyboard_settings_layouts_combo_populate (settings, + "xkb_composekey_combo", + "Compose key", + xfce_keyboard_settings_init_compkey, + xfce_keyboard_settings_compkey_changed_cb); /* Keyboard layout/variant treeview */ settings->priv->layout_selection_treestore = NULL; @@ -1333,52 +1318,53 @@ xfce_keyboard_settings_init_layout (XfceKeyboardSettings *settings) static void -xfce_keyboard_settings_add_model_to_combo (XklConfigRegistry *config_registry, - const XklConfigItem *config_item, - gpointer user_data) +xfce_keyboard_settings_layouts_combo_add (XklConfigRegistry *config_registry, + const XklConfigItem *config_item, + gpointer user_data) { GtkListStore *store = GTK_LIST_STORE (user_data); GtkTreeIter iter; - gchar *model_name; + gchar *description; - model_name = xfce_keyboard_settings_xkb_description ((XklConfigItem *) config_item); + description = xfce_keyboard_settings_xkb_description ((XklConfigItem *) config_item); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, - XKB_MODEL_COMBO_DESCRIPTION, model_name, - XKB_MODEL_COMBO_MODELS, config_item->name, -1); - g_free (model_name); + XKB_LAYOUTS_COMBO_DESCRIPTION, description, + XKB_LAYOUTS_COMBO_VALUE, config_item->name, -1); + g_free (description); } - - static void -xfce_keyboard_settings_init_model (XfceKeyboardSettings *settings) +xfce_keyboard_settings_layouts_combo_init (XfceKeyboardSettings *settings, + const gchar *combo_name, + const gchar *xfconf_prop_name, + const gchar *default_value) { GObject *view; GtkTreeModel *model; GtkTreeIter iter; gchar *id; - gchar *xkbmodel; + gchar *xfconf_prop_value; gboolean item; gboolean found = FALSE; - view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_model_combo"); + view = gtk_builder_get_object (GTK_BUILDER (settings), combo_name); model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); - xkbmodel = xfconf_channel_get_string (settings->priv->keyboard_layout_channel, "/Default/XkbModel", settings->priv->xkl_rec_config->model); + xfconf_prop_value = xfconf_channel_get_string (settings->priv->keyboard_layout_channel, xfconf_prop_name, default_value); item = gtk_tree_model_get_iter_first (model, &iter); - if (xkbmodel == NULL || *xkbmodel == 0) + if (xfconf_prop_value == NULL || *xfconf_prop_value == 0) { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); - return; + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); + return; } while (item && !found) { - gtk_tree_model_get (model, &iter, XKB_MODEL_COMBO_MODELS, &id, -1); - found = !strcmp (id, xkbmodel); + gtk_tree_model_get (model, &iter, XKB_LAYOUTS_COMBO_VALUE, &id, -1); + found = !strcmp (id, xfconf_prop_value); g_free (id); if (found) @@ -1388,27 +1374,16 @@ xfce_keyboard_settings_init_model (XfceKeyboardSettings *settings) } item = gtk_tree_model_iter_next (model, &iter); } - g_free (xkbmodel); + g_free (xfconf_prop_value); } - - static void -xfce_keyboard_settings_add_grpkey_to_combo (XklConfigRegistry *config_registry, - const XklConfigItem *config_item, - gpointer user_data) +xfce_keyboard_settings_init_model (XfceKeyboardSettings *settings) { - GtkListStore *store = GTK_LIST_STORE (user_data); - GtkTreeIter iter; - gchar *grpkey_name; - - grpkey_name = xfce_keyboard_settings_xkb_description ((XklConfigItem *) config_item); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, - XKB_GRPKEY_COMBO_DESCRIPTION, grpkey_name, - XKB_GRPKEY_COMBO_KEYS, config_item->name, -1); - g_free (grpkey_name); + xfce_keyboard_settings_layouts_combo_init (settings, + "xkb_model_combo", + "/Default/XkbModel", + settings->priv->xkl_rec_config->model); } @@ -1416,62 +1391,10 @@ xfce_keyboard_settings_add_grpkey_to_combo (XklConfigRegistry *config_registr static void xfce_keyboard_settings_init_grpkey (XfceKeyboardSettings *settings) { - GObject *view; - GtkTreeModel *model; - GtkTreeIter iter; - gchar *id; - gchar *xkbgrpkey; - gboolean item; - gboolean found = FALSE; - - view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_grpkey_combo"); - model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); - - // FIXME: get the default value from xklavier? - xkbgrpkey = xfconf_channel_get_string (settings->priv->keyboard_layout_channel, "/Default/XkbOptions/Group", NULL); - item = gtk_tree_model_get_iter_first (model, &iter); - - if (xkbgrpkey == NULL || *xkbgrpkey == 0) - { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); - return; - } - - while (item && !found) - { - gtk_tree_model_get (model, &iter, XKB_GRPKEY_COMBO_KEYS, &id, -1); - found = !strcmp (id, xkbgrpkey); - g_free (id); - - if (found) - { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); - break; - } - item = gtk_tree_model_iter_next (model, &iter); - } - - g_free (xkbgrpkey); -} - - - -static void -xfce_keyboard_settings_add_compkey_to_combo (XklConfigRegistry *config_registry, - const XklConfigItem *config_item, - gpointer user_data) -{ - GtkListStore *store = GTK_LIST_STORE (user_data); - GtkTreeIter iter; - gchar *compkey_name; - - compkey_name = xfce_keyboard_settings_xkb_description ((XklConfigItem *) config_item); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, - XKB_COMPOSEKEY_COMBO_DESCRIPTION, compkey_name, - XKB_COMPOSEKEY_COMBO_KEYS, config_item->name, -1); - g_free (compkey_name); + xfce_keyboard_settings_layouts_combo_init (settings, + "xkb_grpkey_combo", + "/Default/XkbOptions/Group", + NULL); } @@ -1479,42 +1402,10 @@ xfce_keyboard_settings_add_compkey_to_combo (XklConfigRegistry *config_regist static void xfce_keyboard_settings_init_compkey (XfceKeyboardSettings *settings) { - GObject *view; - GtkTreeModel *model; - GtkTreeIter iter; - gchar *id; - gchar *xkbcompkey; - gboolean item; - gboolean found = FALSE; - - view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_composekey_combo"); - model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); - - // FIXME: get the default value from xklavier? - xkbcompkey = xfconf_channel_get_string (settings->priv->keyboard_layout_channel, "/Default/XkbOptions/Compose", NULL); - item = gtk_tree_model_get_iter_first (model, &iter); - - if (xkbcompkey == NULL || *xkbcompkey == 0) - { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); - return; - } - - while (item && !found) - { - gtk_tree_model_get (model, &iter, XKB_COMPOSEKEY_COMBO_KEYS, &id, -1); - found = !strcmp (id, xkbcompkey); - g_free (id); - - if (found) - { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (view), &iter); - break; - } - item = gtk_tree_model_iter_next (model, &iter); - } - - g_free (xkbcompkey); + xfce_keyboard_settings_layouts_combo_init (settings, + "xkb_composekey_combo", + "/Default/XkbOptions/Compose", + NULL); } @@ -1529,19 +1420,31 @@ xfce_keyboard_settings_row_activated_cb (GtkTreeView *tree_view, } + static void -xfce_keyboard_settings_model_changed_cb (GtkComboBox *combo, - XfceKeyboardSettings *settings) +xfce_keyboard_settings_layouts_combo_changed (GtkComboBox *combo, + XfceKeyboardSettings *settings, + const gchar *xfconf_prop_name) { GtkTreeModel *model; GtkTreeIter iter; - gchar *xkbmodel; + gchar *xfconf_prop_value; gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter); model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); - gtk_tree_model_get (model, &iter, XKB_MODEL_COMBO_MODELS, &xkbmodel, -1); - xfconf_channel_set_string (settings->priv->keyboard_layout_channel, "/Default/XkbModel", xkbmodel); - g_free (xkbmodel); + gtk_tree_model_get (model, &iter, XKB_LAYOUTS_COMBO_VALUE, &xfconf_prop_value, -1); + xfconf_channel_set_string (settings->priv->keyboard_layout_channel, + xfconf_prop_name, xfconf_prop_value); + g_free (xfconf_prop_value); +} + + +static void +xfce_keyboard_settings_model_changed_cb (GtkComboBox *combo, + XfceKeyboardSettings *settings) +{ + xfce_keyboard_settings_layouts_combo_changed (combo, settings, + "/Default/XkbModel"); } @@ -1550,16 +1453,8 @@ static void xfce_keyboard_settings_grpkey_changed_cb (GtkComboBox *combo, XfceKeyboardSettings *settings) { - GtkTreeModel *model; - GtkTreeIter iter; - gchar *xkbgrpkey; - - gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter); - model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); - gtk_tree_model_get (model, &iter, XKB_GRPKEY_COMBO_KEYS, &xkbgrpkey, -1); - xfconf_channel_set_string (settings->priv->keyboard_layout_channel, - "/Default/XkbOptions/Group", xkbgrpkey); - g_free (xkbgrpkey); + xfce_keyboard_settings_layouts_combo_changed (combo, settings, + "/Default/XkbOptions/Group"); } @@ -1568,16 +1463,8 @@ static void xfce_keyboard_settings_compkey_changed_cb (GtkComboBox *combo, XfceKeyboardSettings *settings) { - GtkTreeModel *model; - GtkTreeIter iter; - gchar *xkbcompkey; - - gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter); - model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo)); - gtk_tree_model_get (model, &iter, XKB_COMPOSEKEY_COMBO_KEYS, &xkbcompkey, -1); - xfconf_channel_set_string (settings->priv->keyboard_layout_channel, - "/Default/XkbOptions/Compose", xkbcompkey); - g_free (xkbcompkey); + xfce_keyboard_settings_layouts_combo_changed (combo, settings, + "/Default/XkbOptions/Compose"); } diff --git a/xfsettingsd/keyboard-layout.c b/xfsettingsd/keyboard-layout.c index f89bc74..93db5ba 100644 --- a/xfsettingsd/keyboard-layout.c +++ b/xfsettingsd/keyboard-layout.c @@ -201,58 +201,51 @@ xfce_keyboard_layout_helper_set_model (XfceKeyboardLayoutHelper *helper) } static void -xfce_keyboard_layout_helper_set_layout (XfceKeyboardLayoutHelper *helper) +xfce_keyboard_layout_helper_set (XfceKeyboardLayoutHelper *helper, + const gchar *xfconf_option_name, + gchar ***xkl_config_option, + const gchar *debug_name) { #ifdef HAVE_LIBXKLAVIER - gchar *default_layouts, *val_layout; - gchar **layouts; + gchar *xfconf_values, *xkl_values; + gchar **values; if (!helper->xkb_disable_settings) { - default_layouts = g_strjoinv(",", helper->config->layouts); - val_layout = xfconf_channel_get_string (helper->channel, "/Default/XkbLayout", default_layouts); - if (g_strcmp0 (default_layouts, val_layout) != 0) + xfconf_values = g_strjoinv(",", *xkl_config_option); + xkl_values = xfconf_channel_get_string (helper->channel, + xfconf_option_name, xfconf_values); + + if (g_strcmp0 (xfconf_values, xkl_values) != 0) { - layouts = g_strsplit_set (val_layout, ",", 0); - g_strfreev(helper->config->layouts); - helper->config->layouts = layouts; + values = g_strsplit_set (xkl_values, ",", 0); + g_strfreev(*xkl_config_option); + *xkl_config_option = values; xkl_config_rec_activate (helper->config, helper->engine); - xfsettings_dbg (XFSD_DEBUG_KEYBOARD_LAYOUT, "set layouts to \"%s\"", val_layout); + xfsettings_dbg (XFSD_DEBUG_KEYBOARD_LAYOUT, "set %s to \"%s\"", debug_name, xkl_values); } - g_free (default_layouts); - g_free (val_layout); + g_free (xfconf_values); + g_free (xkl_values); } #endif /* HAVE_LIBXKLAVIER */ } static void -xfce_keyboard_layout_helper_set_variant (XfceKeyboardLayoutHelper *helper) +xfce_keyboard_layout_helper_set_layout (XfceKeyboardLayoutHelper *helper) { -#ifdef HAVE_LIBXKLAVIER - gchar *default_variants, *val_variant; - gchar **variants; - - if (!helper->xkb_disable_settings) - { - default_variants = g_strjoinv(",", helper->config->variants); - val_variant = xfconf_channel_get_string (helper->channel, "/Default/XkbVariant", default_variants); - - if (g_strcmp0 (default_variants, val_variant) != 0) - { - variants = g_strsplit_set (val_variant, ",", 0); - g_strfreev(helper->config->variants); - helper->config->variants = variants; - xkl_config_rec_activate (helper->config, helper->engine); - - xfsettings_dbg (XFSD_DEBUG_KEYBOARD_LAYOUT, "set variant to \"%s\"", val_variant); - } + xfce_keyboard_layout_helper_set (helper, "/Default/XkbLayout", + &helper->config->layouts, + "layouts"); +} - g_free (default_variants); - g_free (val_variant); - } -#endif /* HAVE_LIBXKLAVIER */ +static void +xfce_keyboard_layout_helper_set_variant (XfceKeyboardLayoutHelper *helper) +{ + xfce_keyboard_layout_helper_set (helper, "/Default/XkbVariant", + &helper->config->variants, + "variants"); } /** _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits