[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