[accounts-dialog/control-center-panel: 9/15] Convert the language chooser to the editable combo widget



commit 91f6f2e5f8c49faea06f8f21c0742f679ced8320
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jun 13 22:46:09 2010 -0400

    Convert the language chooser to the editable combo widget

 data/user-accounts-dialog.ui |   44 +------------
 src/um-editable-combo.c      |   70 ++++++++++++--------
 src/um-editable-combo.h      |    6 ++-
 src/um-language-dialog.c     |   68 ++++++++++----------
 src/um-language-dialog.h     |    9 ++-
 src/um-user-panel.c          |  146 ++++++++++--------------------------------
 6 files changed, 125 insertions(+), 218 deletions(-)
---
diff --git a/data/user-accounts-dialog.ui b/data/user-accounts-dialog.ui
index 891e085..e1b56af 100644
--- a/data/user-accounts-dialog.ui
+++ b/data/user-accounts-dialog.ui
@@ -508,48 +508,10 @@
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkNotebook" id="account-language-notebook">
+                              <object class="UmEditableCombo" id="account-language-combo">
                                 <property name="visible">True</property>
-                                <property name="show_tabs">False</property>
-                                <property name="show_border">False</property>
-                                <child>
-                                  <object class="GtkLabel" id="account-language-value-label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                  </object>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" id="account-language-button">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="receives_default">True</property>
-                                    <property name="relief">none</property>
-                                    <child>
-                                      <object class="GtkLabel" id="account-language-button-label">
-                                        <property name="visible">True</property>
-                                        <property name="xalign">0</property>
-                                      </object>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="account-language-combo">
-                                    <property name="visible">True</property>
-                                    <property name="model">language-model</property>
-                                    <child>
-                                      <object class="GtkCellRendererText" id="account-language-cell"/>
-                                      <attributes>
-                                        <attribute name="text">1</attribute>
-                                      </attributes>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
+                                <property name="model">language-model</property>
+                                <property name="text-column">1</property>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
diff --git a/src/um-editable-combo.c b/src/um-editable-combo.c
index bab2b13..567818e 100644
--- a/src/um-editable-combo.c
+++ b/src/um-editable-combo.c
@@ -22,6 +22,8 @@
 #include <gdk/gdkkeysyms.h>
 #include "um-editable-combo.h"
 
+#define EMPTY_TEXT "\xe2\x80\x94"
+
 struct _UmEditableComboPrivate {
         GtkNotebook *notebook;
         GtkLabel    *label;
@@ -29,8 +31,8 @@ struct _UmEditableComboPrivate {
         GtkComboBox *combo;
         GtkWidget   *toplevel;
 
-        gint editable;
         gint active;
+        gint editable;
         gint text_column;
 };
 
@@ -39,7 +41,6 @@ struct _UmEditableComboPrivate {
 enum {
         PROP_0,
         PROP_EDITABLE,
-        PROP_ACTIVE,
         PROP_MODEL,
         PROP_TEXT_COLUMN
 };
@@ -80,10 +81,7 @@ void
 um_editable_combo_set_model (UmEditableCombo *combo,
                              GtkTreeModel    *model)
 {
-        UmEditableComboPrivate *priv = combo->priv;
-
-        gtk_combo_box_set_active (priv->combo, -1);
-        gtk_combo_box_set_model (priv->combo, model);
+        gtk_combo_box_set_model (combo->priv->combo, model);
 
         g_object_notify (G_OBJECT (combo), "model");
 }
@@ -126,27 +124,56 @@ void
 um_editable_combo_set_active (UmEditableCombo *combo,
                               gint             active)
 {
+        GtkTreeModel *model;
+        GtkTreePath *path;
+        GtkTreeIter iter;
+
+        if (active == -1)
+                um_editable_combo_set_active_iter (combo, NULL);
+        else {
+                model = gtk_combo_box_get_model (combo->priv->combo);
+                path = gtk_tree_path_new_from_indices (active, -1);
+                gtk_tree_model_get_iter (model, &iter, path);
+                gtk_tree_path_free (path);
+                um_editable_combo_set_active_iter (combo, &iter);
+        }
+}
+
+void
+um_editable_combo_set_active_iter (UmEditableCombo *combo,
+                                   GtkTreeIter     *iter)
+{
         UmEditableComboPrivate *priv = combo->priv;
         GtkWidget *label;
         gchar *text;
         GtkTreeModel *model;
-        GtkTreeIter iter;
 
-        if (priv->active == active)
-                return;
+        gtk_combo_box_set_active_iter (priv->combo, iter);
+        priv->active = gtk_combo_box_get_active (priv->combo);
 
-        priv->active = active;
-        gtk_combo_box_set_active (priv->combo, active);
+        if (priv->text_column == -1)
+                return;
 
-        gtk_combo_box_get_active_iter (priv->combo, &iter);
-        model = gtk_combo_box_get_model (priv->combo);
-        gtk_tree_model_get (model, &iter, priv->text_column, &text, -1);
+        if (iter) {
+                model = gtk_combo_box_get_model (priv->combo);
+                gtk_tree_model_get (model, iter, priv->text_column, &text, -1);
+        }
+        else {
+                text = g_strdup (EMPTY_TEXT);
+        }
 
         gtk_label_set_text (priv->label, text);
         label = gtk_bin_get_child ((GtkBin*)priv->button);
         gtk_label_set_text (GTK_LABEL (label), text);
 
-        g_object_notify (G_OBJECT (combo), "active");
+        g_free (text);
+}
+
+gboolean
+um_editable_combo_get_active_iter (UmEditableCombo *combo,
+                                   GtkTreeIter     *iter)
+{
+        return gtk_combo_box_get_active_iter (combo->priv->combo, iter);
 }
 
 gint
@@ -173,9 +200,6 @@ um_editable_combo_set_property (GObject      *object,
         case PROP_TEXT_COLUMN:
                 um_editable_combo_set_text_column (combo, g_value_get_int (value));
                 break;
-        case PROP_ACTIVE:
-                um_editable_combo_set_active (combo, g_value_get_int (value));
-                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                 break;
@@ -203,10 +227,6 @@ um_editable_combo_get_property (GObject    *object,
                 g_value_set_int (value,
                                  um_editable_combo_get_text_column (combo));
                 break;
-        case PROP_ACTIVE:
-                g_value_set_int (value,
-                                 um_editable_combo_get_active (combo));
-                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                 break;
@@ -251,12 +271,6 @@ um_editable_combo_class_init (UmEditableComboClass *class)
                                       FALSE,
                                       G_PARAM_READWRITE));
 
-        g_object_class_install_property (object_class, PROP_ACTIVE,
-                g_param_spec_int ("active",
-                                  "Active choice", "The index of the selected choice",
-                                  -1, G_MAXINT, -1,
-                                  G_PARAM_READWRITE));
-
         g_type_class_add_private (class, sizeof (UmEditableComboPrivate));
 }
 
diff --git a/src/um-editable-combo.h b/src/um-editable-combo.h
index 7ddd1a8..0d4e4a6 100644
--- a/src/um-editable-combo.h
+++ b/src/um-editable-combo.h
@@ -63,9 +63,13 @@ GtkTreeModel *um_editable_combo_get_model       (UmEditableCombo *combo);
 void          um_editable_combo_set_text_column (UmEditableCombo *combo,
                                                  gint             column);
 gint          um_editable_combo_get_text_column (UmEditableCombo *combo);
+gint          um_editable_combo_get_active      (UmEditableCombo *combo);
 void          um_editable_combo_set_active      (UmEditableCombo *combo,
                                                  gint             active);
-gint          um_editable_combo_get_active      (UmEditableCombo *combo);
+gboolean      um_editable_combo_get_active_iter (UmEditableCombo *combo,
+                                                 GtkTreeIter     *iter);
+void          um_editable_combo_set_active_iter (UmEditableCombo *combo,
+                                                 GtkTreeIter     *iter);
 
 G_END_DECLS
 
diff --git a/src/um-language-dialog.c b/src/um-language-dialog.c
index a4b0772..0f2ab87 100644
--- a/src/um-language-dialog.c
+++ b/src/um-language-dialog.c
@@ -62,7 +62,7 @@ static void
 cancel_language_dialog (GtkButton        *button,
                         UmLanguageDialog *um)
 {
-        if (um->force_setting != FALSE)
+        if (um->force_setting)
                 um_user_set_language (um->user, um->language);
         gtk_widget_hide (um->dialog);
         um_language_dialog_set_user (um, NULL);
@@ -126,42 +126,37 @@ sort_languages (GtkTreeModel *model,
         return result;
 }
 
-void
-um_select_language (GtkWidget   *combo,
-                    const gchar *lang)
+gboolean
+um_get_iter_for_language (GtkTreeModel *model,
+                          const gchar  *lang,
+                          GtkTreeIter  *iter)
 {
-        GtkTreeModel *model;
-        GtkTreeIter iter;
         char *l;
         char *name;
         char *language;
 
-        model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
-
-        gtk_widget_set_sensitive (combo, TRUE);
-
-        gtk_tree_model_get_iter_first (model, &iter);
+        gtk_tree_model_get_iter_first (model, iter);
         do {
-                gtk_tree_model_get (model, &iter, LOCALE_COL, &l, -1);
+                gtk_tree_model_get (model, iter, LOCALE_COL, &l, -1);
                 if (g_strcmp0 (l, lang) == 0) {
-                        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter);
                         g_free (l);
-                        return;
+                        return TRUE;
                 }
                 g_free (l);
-        } while (gtk_tree_model_iter_next (model, &iter));
+        } while (gtk_tree_model_iter_next (model, iter));
 
         name = gdm_normalize_language_name (lang);
         if (name != NULL) {
                 language = gdm_get_language_from_name (name, NULL);
 
-                gtk_list_store_append (GTK_LIST_STORE (model), &iter);
-                gtk_list_store_set (GTK_LIST_STORE (model), &iter, LOCALE_COL, name, DISPLAY_LOCALE_COL, language, -1);
-                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter);
-
+                gtk_list_store_append (GTK_LIST_STORE (model), iter);
+                gtk_list_store_set (GTK_LIST_STORE (model), iter, LOCALE_COL, name, DISPLAY_LOCALE_COL, language, -1);
                 g_free (name);
                 g_free (language);
+                return TRUE;
         }
+
+        return FALSE;
 }
 
 static void
@@ -270,7 +265,7 @@ add_available_languages (GtkListStore *store)
 }
 
 void
-um_add_user_languages (GtkWidget *combo)
+um_add_user_languages (GtkTreeModel *model)
 {
         GHashTable *seen;
         GSList *users, *l;
@@ -280,11 +275,7 @@ um_add_user_languages (GtkWidget *combo)
         char *language;
         GtkTreeIter iter;
         UmUserManager *manager;
-        GtkTreeModel *model;
-        GtkListStore *store;
-
-        model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
-        store = GTK_LIST_STORE (model);
+        GtkListStore *store = GTK_LIST_STORE (model);
 
         gtk_list_store_clear (store);
 
@@ -320,8 +311,7 @@ um_add_user_languages (GtkWidget *combo)
         g_slist_free (users);
 
         /* Make sure the current locale is present */
-        lang = (const gchar *) setlocale (LC_MESSAGES, NULL);
-        name = gdm_normalize_language_name (lang);
+        name = um_get_current_language ();
 
         if (!g_hash_table_lookup (seen, name)) {
                 language = gdm_get_language_from_name (name, NULL);
@@ -338,6 +328,21 @@ um_add_user_languages (GtkWidget *combo)
         gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1);
 }
 
+gchar *
+um_get_current_language (void)
+{
+        gchar *language;
+        const gchar *locale;
+
+        locale = (const gchar *) setlocale (LC_MESSAGES, NULL);
+        if (locale)
+                language = gdm_normalize_language_name (locale);
+        else
+                language = NULL;
+
+        return language;
+}
+
 GtkWidget *
 um_language_chooser_new (void)
 {
@@ -523,18 +528,15 @@ um_language_dialog_set_user (UmLanguageDialog *um,
                 name = um_user_get_real_name (user);
                 gtk_label_set_label (GTK_LABEL (um->user_name), name);
 
-                um_add_user_languages (um->dialog_combo);
+                um_add_user_languages (gtk_combo_box_get_model (um->dialog_combo));
 
                 language = um_user_get_language (user);
                 if (language) {
                         select_language (um, language);
                 } else if (um_user_get_uid (user) == getuid ()) {
-                        const char *locale;
-                        char *lang;
-
-                        locale = (const char *) setlocale(LC_MESSAGES, NULL);
-                        lang = gdm_normalize_language_name (locale);
+                        gchar *lang;
 
+                        lang = um_get_current_language ();
                         select_language (um, lang);
                         g_free (lang);
                         um->force_setting = TRUE;
diff --git a/src/um-language-dialog.h b/src/um-language-dialog.h
index dc51cd1..5df8af3 100644
--- a/src/um-language-dialog.h
+++ b/src/um-language-dialog.h
@@ -35,9 +35,12 @@ void              um_language_dialog_set_user (UmLanguageDialog *dialog,
                                                UmUser            *user);
 void              um_language_dialog_show     (UmLanguageDialog *dialog,
                                                GtkWindow        *parent);
-void              um_add_user_languages       (GtkWidget        *combo);
-void              um_select_language          (GtkWidget        *combo,
-                                               const gchar      *lang);
+void              um_add_user_languages       (GtkTreeModel     *model);
+gchar            *um_get_current_language     (void);
+gboolean          um_get_iter_for_language    (GtkTreeModel     *model,
+                                               const gchar      *lang,
+                                               GtkTreeIter      *iter);
+
 GtkWidget        *um_language_chooser_new          (void);
 gchar            *um_language_chooser_get_language (GtkWidget *chooser);
 
diff --git a/src/um-user-panel.c b/src/um-user-panel.c
index 243294f..8f441c4 100644
--- a/src/um-user-panel.c
+++ b/src/um-user-panel.c
@@ -25,8 +25,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <locale.h>
-#include <libintl.h>
 #include <unistd.h>
 #include <sys/types.h>
 
@@ -462,8 +460,6 @@ nonempty (const char *str)
         return (str == NULL || str[0] == 0) ? "\xe2\x80\x94" : str;
 }
 
-static void language_changed (GtkComboBox *combo, UmUserPanelPrivate *d);
-
 static void
 show_user (UmUser *user, UmUserPanelPrivate *d)
 {
@@ -472,12 +468,11 @@ show_user (UmUser *user, UmUserPanelPrivate *d)
         GtkWidget *label2;
         GtkWidget *label3;
         GdkPixbuf *pixbuf;
-        const char *text;
-        char *language;
-        GtkWidget *combo;
+        const gchar *text;
+        gchar *lang;
+        GtkWidget *widget;
         GtkTreeModel *model;
         GtkTreeIter iter;
-        GtkWidget *widget;
 
         pixbuf = um_user_render_icon (user, FALSE, 48);
         image = get_widget (d, "user-icon-image");
@@ -523,33 +518,15 @@ show_user (UmUser *user, UmUserPanelPrivate *d)
         um_editable_button_set_text (UM_EDITABLE_BUTTON (widget), text);
 
         widget = get_widget (d, "account-language-combo");
-        g_signal_handlers_block_by_func (widget, language_changed, d);
-        um_add_user_languages (widget);
+        model = um_editable_combo_get_model (UM_EDITABLE_COMBO (widget));
+        um_add_user_languages (model);
 
-        text = um_user_get_language (user);
-        if (text) {
-                um_select_language (widget, text);
-                language = gdm_get_language_from_name (text, NULL);
-        }
-        else {
-                const gchar *locale;
-                locale = (const gchar *) setlocale (LC_MESSAGES, NULL);
-                if (locale) {
-                        gchar *name;
-                        name = gdm_normalize_language_name (locale);
-                        um_select_language (widget, name);
-                        language = gdm_get_language_from_name (name, NULL);
-                        g_free (name);
-                } else {
-                        language = g_strdup (nonempty (""));
-                }
-        }
-        label = get_widget (d, "account-language-value-label");
-        gtk_label_set_text (GTK_LABEL (label), language);
-        label = get_widget (d, "account-language-button-label");
-        gtk_label_set_text (GTK_LABEL (label), language);
-        g_free (language);
-        g_signal_handlers_unblock_by_func (widget, language_changed, d);
+        lang = g_strdup (um_user_get_language (user));
+        if (!lang)
+                lang = um_get_current_language ();
+        um_get_iter_for_language (model, lang, &iter);
+        um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter);
+        g_free (lang);
 
         text = um_user_get_location (user);
         label = get_widget (d, "account-location-button");
@@ -651,49 +628,32 @@ language_response (GtkDialog         *dialog,
                    gint               response_id,
                    UmUserPanelPrivate *d)
 {
-        GtkWidget *widget;
+        GtkWidget *combo;
         UmUser *user;
         gchar *lang;
         const gchar *text;
-        gchar *language;
+        GtkTreeModel *model;
+        GtkTreeIter iter;
 
         user = get_selected_user (d);
-        widget = get_widget (d, "account-language-combo");
+        combo = get_widget (d, "account-language-combo");
+        model = um_editable_combo_get_model (UM_EDITABLE_COMBO (combo));
+
         if (response_id == GTK_RESPONSE_OK) {
                 lang = um_language_chooser_get_language (GTK_WIDGET (dialog));
                 um_user_set_language (user, lang);
-                um_select_language (widget, lang);
-                language = g_strdup (nonempty (lang));
-                g_free (lang);
         }
         else {
-                text = um_user_get_language (user);
-                if (text) {
-                        um_select_language (widget, text);
-                        language = gdm_get_language_from_name (text, NULL);
-                }
-                else {
-                        const gchar *locale;
-                        locale = (const gchar *) setlocale (LC_MESSAGES, NULL);
-                        if (locale) {
-                                char *name;
-                                name = gdm_normalize_language_name (locale);
-                                um_select_language (widget, name);
-                                language = gdm_get_language_from_name (name, NULL);
-                                g_free (name);
-                        } else {
-                                language = g_strdup (nonempty (""));
-                        }
-                }
+                lang = g_strdup (um_user_get_language (user));
+                if (!lang)
+                        lang = um_get_current_language ();
         }
-
-        gtk_label_set_text (GTK_LABEL (get_widget (d, "account-language-value-label")), language);
-        gtk_label_set_text (GTK_LABEL (get_widget (d, "account-language-button-label")), language);
-        g_free (language);
+        um_get_iter_for_language (model, lang, &iter);
+        um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (combo), &iter);
+        g_free (lang);
 
         gtk_widget_hide (GTK_WIDGET (dialog));
-        gtk_widget_set_sensitive (widget, TRUE);
-        gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-language-notebook")), 1);
+        gtk_widget_set_sensitive (combo, TRUE);
 }
 
 static gboolean
@@ -718,7 +678,7 @@ finish_language_chooser (UmUserPanelPrivate *d)
 }
 
 static void
-language_changed (GtkComboBox       *combo,
+language_changed (UmEditableCombo    *combo,
                   UmUserPanelPrivate *d)
 {
         GtkTreeModel *model;
@@ -727,11 +687,11 @@ language_changed (GtkComboBox       *combo,
         UmUser *user;
         GdkCursor *cursor;
 
-        if (!gtk_combo_box_get_active_iter (combo, &iter))
+        if (!um_editable_combo_get_active_iter (combo, &iter))
                  return;
 
         user = get_selected_user (d);
-        model = gtk_combo_box_get_model (combo);
+        model = um_editable_combo_get_model (combo);
 
         gtk_tree_model_get (model, &iter, 0, &lang, -1);
         if (lang) {
@@ -756,23 +716,6 @@ language_changed (GtkComboBox       *combo,
         g_idle_add ((GSourceFunc)finish_language_chooser, d);
 }
 
-static gboolean
-language_key_press (GtkWidget         *combo,
-                    GdkEventKey       *event,
-                    UmUserPanelPrivate *d)
-{
-        GtkWidget *nb;
-
-        if (event->keyval == GDK_Escape) {
-                nb = get_widget (d, "account-language-notebook");
-                gtk_notebook_set_current_page (GTK_NOTEBOOK (nb), 1);
-
-                return TRUE;
-        }
-
-        return FALSE;
-}
-
 static void
 change_password (GtkButton *button, UmUserPanelPrivate *d)
 {
@@ -818,13 +761,6 @@ change_location_done (GtkWidget         *entry,
 }
 
 static void
-change_language_start (GtkButton         *button,
-                       UmUserPanelPrivate *d)
-{
-        gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-language-notebook")), 2);
-}
-
-static void
 change_fingerprint (GtkButton *button, UmUserPanelPrivate *d)
 {
         GtkWidget *label, *label2;
@@ -1046,7 +982,9 @@ lockbutton_changed (PolkitLockButton *button,
                 um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-location-button")), TRUE);
                 remove_unlock_tooltip (get_widget (d, "account-location-button"));
 
-                gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-language-notebook")), 1);
+                um_editable_combo_set_editable (UM_EDITABLE_COMBO (get_widget (d, "account-language-combo")), TRUE);
+                remove_unlock_tooltip (get_widget (d, "account-language-combo"));
+
                 gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-password-notebook")), 1);
                 gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-fingerprint-notebook")), 1);
         }
@@ -1063,7 +1001,9 @@ lockbutton_changed (PolkitLockButton *button,
                 um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-location-button")), FALSE);
                 add_unlock_tooltip (get_widget (d, "account-location-button"));
 
-                gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-language-notebook")), 0);
+                um_editable_combo_set_editable (UM_EDITABLE_COMBO (get_widget (d, "account-language-combo")), FALSE);
+                add_unlock_tooltip (get_widget (d, "account-language-combo"));
+
                 gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-password-notebook")), 0);
                 gtk_notebook_set_current_page (GTK_NOTEBOOK (get_widget (d, "account-fingerprint-notebook")), 0);
         }
@@ -1241,19 +1181,8 @@ setup_main_window (UmUserPanelPrivate *d)
         g_signal_connect (button, "editing-done",
                           G_CALLBACK (change_email_done), d);
 
-        button = get_widget (d, "account-language-value-label");
-        setup_tooltip_with_embedded_icon (button,
-                                          _("To make changes,\nclick the * icon first"),
-                                          "*",
-                                          "security-medium");
-        g_signal_connect (button, "button-release-event",
-                           G_CALLBACK (show_tooltip_now), NULL);
-
-        button = get_widget (d, "account-language-button");
-        g_signal_connect (button, "clicked", G_CALLBACK (change_language_start), d);
         button = get_widget (d, "account-language-combo");
-        g_signal_connect (button, "changed", G_CALLBACK (language_changed), d);
-        g_signal_connect (button, "key-press-event", G_CALLBACK (language_key_press), d);
+        g_signal_connect (button, "editing-done", G_CALLBACK (language_changed), d);
 
         button = get_widget (d, "account-location-button");
         g_signal_connect (button, "editing-done",
@@ -1378,12 +1307,6 @@ um_user_panel_dispose (GObject *object)
 }
 
 static void
-um_user_panel_finalize (GObject *object)
-{
-  G_OBJECT_CLASS (um_user_panel_parent_class)->finalize (object);
-}
-
-static void
 um_user_panel_class_init (UmUserPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -1391,7 +1314,6 @@ um_user_panel_class_init (UmUserPanelClass *klass)
   g_type_class_add_private (klass, sizeof (UmUserPanelPrivate));
 
   object_class->dispose = um_user_panel_dispose;
-  object_class->finalize = um_user_panel_finalize;
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]