[Goodies-commits] r6603 - xfce4-xkb-plugin/trunk/panel-plugin
Alexander Iliev
sasoiliev at xfce.org
Fri Jan 30 10:43:19 CET 2009
Author: sasoiliev
Date: 2009-01-30 09:43:19 +0000 (Fri, 30 Jan 2009)
New Revision: 6603
Modified:
xfce4-xkb-plugin/trunk/panel-plugin/xfce4-xkb-plugin.c
xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.c
xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.h
xfce4-xkb-plugin/trunk/panel-plugin/xkb-settings-dialog.c
Log:
Fixed a crash due to segfault
Modified: xfce4-xkb-plugin/trunk/panel-plugin/xfce4-xkb-plugin.c
===================================================================
--- xfce4-xkb-plugin/trunk/panel-plugin/xfce4-xkb-plugin.c 2009-01-30 09:19:14 UTC (rev 6602)
+++ xfce4-xkb-plugin/trunk/panel-plugin/xfce4-xkb-plugin.c 2009-01-30 09:43:19 UTC (rev 6603)
@@ -268,7 +268,7 @@
xfce_rc_write_entry (rcfile, "model", xkb->settings->kbd_config->model);
xfce_rc_write_entry (rcfile, "layouts", xkb->settings->kbd_config->layouts);
xfce_rc_write_entry (rcfile, "variants", xkb->settings->kbd_config->variants);
- xfce_rc_write_entry (rcfile, "options", xkb->settings->kbd_config->toggle_option);
+ xfce_rc_write_entry (rcfile, "toggle_option", xkb->settings->kbd_config->toggle_option);
xfce_rc_write_entry (rcfile, "compose_key_position", xkb->settings->kbd_config->compose_key_position);
}
@@ -301,17 +301,8 @@
xkb->settings->kbd_config->model = g_strdup (xfce_rc_read_entry (rcfile, "model", NULL));
xkb->settings->kbd_config->layouts = g_strdup (xfce_rc_read_entry (rcfile, "layouts", NULL));
xkb->settings->kbd_config->variants = g_strdup (xfce_rc_read_entry (rcfile, "variants", NULL));
- xkb->settings->kbd_config->options = g_strdup (xfce_rc_read_entry (rcfile, "options", NULL));
+ xkb->settings->kbd_config->toggle_option = g_strdup (xfce_rc_read_entry (rcfile, "toggle_option", NULL));
xkb->settings->kbd_config->compose_key_position = g_strdup (xfce_rc_read_entry (rcfile, "compose_key_position", NULL));
- if (xkb->settings->kbd_config->compose_key_position
- && strlen (xkb->settings->kbd_config->compose_key_position) > 0)
- {
- gchar *tmp = xkb->settings->kbd_config->options;
- xkb->settings->kbd_config->options =
- g_strconcat (xkb->settings->kbd_config->options,
- ",", xkb->settings->kbd_config->compose_key_position, NULL);
- g_free (tmp);
- }
xfce_rc_close (rcfile);
Modified: xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.c
===================================================================
--- xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.c 2009-01-30 09:19:14 UTC (rev 6602)
+++ xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.c 2009-01-30 09:43:19 UTC (rev 6603)
@@ -255,6 +255,7 @@
gchar **opt;
gchar **prefix;
+ gchar *options;
g_assert (config != NULL);
g_assert (settings != NULL);
@@ -269,14 +270,14 @@
if (settings->kbd_config == NULL || settings->never_modify_config)
{
xkl_config_rec_get_from_server (config->config_rec, config->engine);
- settings->kbd_config = g_new (t_xkb_kbd_config, 1);
+ settings->kbd_config = g_new0 (t_xkb_kbd_config, 1);
settings->kbd_config->model = g_strdup (config->config_rec->model);
settings->kbd_config->layouts = g_strjoinv (",", config->config_rec->layouts);
settings->kbd_config->variants = g_strjoinv (",", config->config_rec->variants);
- settings->kbd_config->options = g_strjoinv (",", config->config_rec->options);
- if (strcmp ("", settings->kbd_config->options) == 0)
+ options = g_strjoinv (",", config->config_rec->options);
+ if (strcmp ("", options) == 0)
{
- settings->kbd_config->options = NULL;
+ options = NULL;
}
}
else
@@ -285,10 +286,20 @@
config->config_rec->model = g_strdup (settings->kbd_config->model);
config->config_rec->layouts = g_strsplit_set (settings->kbd_config->layouts, ",", 0);
config->config_rec->variants = g_strsplit_set (settings->kbd_config->variants, ",", 0);
- config->config_rec->options = g_strsplit_set (settings->kbd_config->options, ",", 0);
+
+ options = g_strdup (settings->kbd_config->toggle_option);
+ if (strlen (settings->kbd_config->compose_key_position) > 0)
+ {
+ gchar *tmp = options;
+ options = g_strconcat (options, ",", settings->kbd_config->compose_key_position, NULL);
+ g_free (tmp);
+ }
+ config->config_rec->options = g_strsplit_set (options, ",", 0);
}
/* select the first "grp" option and use it (should be fixed to support more options) */
+ g_free (settings->kbd_config->toggle_option);
+ settings->kbd_config->toggle_option = NULL;
opt = config->config_rec->options;
while (opt && *opt)
{
@@ -296,11 +307,11 @@
if (settings->kbd_config->toggle_option == NULL
&& prefix && strcmp(*prefix, "grp") == 0)
{
- settings->kbd_config->toggle_option = *opt;
+ settings->kbd_config->toggle_option = g_strdup (*opt);
}
else if (prefix && strcmp(*prefix, "compose") == 0)
{
- settings->kbd_config->compose_key_position = *opt;
+ settings->kbd_config->compose_key_position = g_strdup (*opt);
}
opt++;
}
Modified: xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.h
===================================================================
--- xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.h 2009-01-30 09:19:14 UTC (rev 6602)
+++ xfce4-xkb-plugin/trunk/panel-plugin/xkb-config.h 2009-01-30 09:43:19 UTC (rev 6603)
@@ -46,7 +46,6 @@
gchar* model;
gchar* layouts;
gchar* variants;
- gchar* options;
gchar* toggle_option;
gchar* compose_key_position;
} t_xkb_kbd_config;
Modified: xfce4-xkb-plugin/trunk/panel-plugin/xkb-settings-dialog.c
===================================================================
--- xfce4-xkb-plugin/trunk/panel-plugin/xkb-settings-dialog.c 2009-01-30 09:19:14 UTC (rev 6602)
+++ xfce4-xkb-plugin/trunk/panel-plugin/xkb-settings-dialog.c 2009-01-30 09:43:19 UTC (rev 6603)
@@ -212,7 +212,6 @@
model = GTK_TREE_MODEL (xkb->compose_key_options_store);
gtk_tree_model_get_iter_first (model, &iter);
gtk_tree_model_get (model, &iter, NOM, &id, -1);
- XKB_DEBUG ("COMPOSE KEY: ", config->compose_key_position);
if (strcmp (id, config->compose_key_position) == 0)
{
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter);
@@ -520,7 +519,6 @@
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (xkb->compose_key_options_store),
0, GTK_SORT_ASCENDING);
- XKB_DEBUG ("compose key: ", xkb->settings->kbd_config->compose_key_position);
xkb_settings_set_compose_key_position_combo_default_value (xkb);
gtk_widget_show (xkb->compose_key_options_combo);
@@ -798,46 +796,40 @@
{
gchar *layouts, *variants, *kbdmodel, *toggle_option,
*compose_key_position, *tmp;
- t_xkb_kbd_config *config = xkb->settings->kbd_config;
+ t_xkb_kbd_config *kbd_config = xkb->settings->kbd_config;
gboolean is_default;
gint i = 0;
model = GTK_TREE_MODEL (xkb->combo_store);
gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter);
gtk_tree_model_get (model, &iter, NOM, &kbdmodel, -1);
- config->model = kbdmodel;
+ kbd_config->model = kbdmodel;
model = GTK_TREE_MODEL (xkb->toggle_options_store);
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter))
{
gtk_tree_model_get (model, &iter, NOM, &toggle_option, -1);
- config->toggle_option = toggle_option;
- config->options = toggle_option;
+ g_free (kbd_config->toggle_option);
+ kbd_config->toggle_option = g_strdup (toggle_option);
}
model = GTK_TREE_MODEL (xkb->compose_key_options_store);
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->compose_key_options_combo), &iter))
{
gtk_tree_model_get (model, &iter, NOM, &compose_key_position, -1);
- config->compose_key_position = compose_key_position;
- if (config->options)
- {
- tmp = config->options;
- config->options = g_strconcat (config->options, ",", compose_key_position, NULL);
- g_free (tmp);
- }
- else config->options = compose_key_position;
+ g_free (kbd_config->compose_key_position);
+ kbd_config->compose_key_position = g_strdup (compose_key_position);
}
model = GTK_TREE_MODEL (xkb->layout_store);
gtk_tree_model_get_iter_first (model, &iter);
gtk_tree_model_get (model, &iter, DEFAULT_LAYOUT, &is_default, LAYOUTS, &layouts, VARIANTS, &variants, -1);
if (is_default) xkb->settings->default_group = i;
- config->layouts = layouts;
+ kbd_config->layouts = layouts;
if (variants != NULL)
- config->variants = variants;
+ kbd_config->variants = variants;
else
- config->variants = "";
+ kbd_config->variants = "";
i = 1;
while (gtk_tree_model_iter_next (model, &iter))
@@ -846,11 +838,11 @@
if (is_default) xkb->settings->default_group = i;
i++;
- config->layouts = g_strdup(g_strconcat(config->layouts, ",", layouts, NULL));
+ kbd_config->layouts = g_strdup(g_strconcat(kbd_config->layouts, ",", layouts, NULL));
if (variants != NULL)
- config->variants = g_strdup(g_strconcat(config->variants, ",", variants, NULL));
+ kbd_config->variants = g_strdup(g_strconcat(kbd_config->variants, ",", variants, NULL));
else
- config->variants = g_strdup(g_strconcat(config->variants, ",", NULL));
+ kbd_config->variants = g_strdup(g_strconcat(kbd_config->variants, ",", NULL));
}
xkb_config_update_settings (xkb->settings);
xkb_refresh_gui (xkb);
More information about the Goodies-commits
mailing list