[Xfce4-commits] <xfce4-settings:master> Speedup startup of the keyboard settings dialog (bug #6661).
Nick Schermer
noreply at xfce.org
Fri Sep 3 20:52:01 CEST 2010
Updating branch refs/heads/master
to f254a7a5c76f2cb83d2c9f39e66fca0317625b02 (commit)
from 4bb39b446b7011ba13100a8d864ac8d8b2caa408 (commit)
commit f254a7a5c76f2cb83d2c9f39e66fca0317625b02
Author: Nick Schermer <nick at xfce.org>
Date: Fri Sep 3 20:49:38 2010 +0200
Speedup startup of the keyboard settings dialog (bug #6661).
Fill the model first before attaching it to the combobox. Problem
spotted and tested by Martin Pitt.
dialogs/keyboard-settings/xfce-keyboard-settings.c | 41 ++++++++++----------
1 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/dialogs/keyboard-settings/xfce-keyboard-settings.c b/dialogs/keyboard-settings/xfce-keyboard-settings.c
index c8ff615..c9ee468 100644
--- a/dialogs/keyboard-settings/xfce-keyboard-settings.c
+++ b/dialogs/keyboard-settings/xfce-keyboard-settings.c
@@ -126,8 +126,8 @@ static void xfce_keyboard_settings_system_default_cb (G
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,
- XklConfigItem *config_item,
- XfceKeyboardSettings *settings);
+ const XklConfigItem *config_item,
+ gpointer user_data);
static void xfce_keyboard_settings_init_model (XfceKeyboardSettings *settings);
static void xfce_keyboard_settings_model_changed_cb (GtkComboBox *combo,
XfceKeyboardSettings *settings);
@@ -337,20 +337,23 @@ xfce_keyboard_settings_constructed (GObject *object)
settings);
/* Keyboard model combo */
+ list_store = gtk_list_store_new (XKB_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING);
+ 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 ();
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);
- list_store = gtk_list_store_new (XKB_COMBO_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
- gtk_combo_box_set_model (GTK_COMBO_BOX (xkb_model_combo), GTK_TREE_MODEL (list_store));
- xkl_config_registry_foreach_model (settings->priv->xkl_registry,
- (ConfigItemProcessFunc) xfce_keyboard_settings_add_model_to_combo,
- settings);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), 0, GTK_SORT_ASCENDING);
+
xfce_keyboard_settings_init_model (settings);
- g_signal_connect (G_OBJECT (xkb_model_combo),
- "changed",
+ g_signal_connect (G_OBJECT (xkb_model_combo), "changed",
G_CALLBACK (xfce_keyboard_settings_model_changed_cb),
settings);
@@ -1116,21 +1119,19 @@ xfce_keyboard_settings_init_layout (XfceKeyboardSettings *settings)
static void
xfce_keyboard_settings_add_model_to_combo (XklConfigRegistry *config_registry,
- XklConfigItem *config_item,
- XfceKeyboardSettings *settings)
+ const XklConfigItem *config_item,
+ gpointer user_data)
{
- GObject *view;
- GtkTreeModel *model;
+ GtkListStore *store = GTK_LIST_STORE (user_data);
GtkTreeIter iter;
gchar *model_name;
- model_name = xfce_keyboard_settings_xkb_description (config_item);
-
- view = gtk_builder_get_object (GTK_BUILDER (settings), "xkb_model_combo");
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (view));
+ model_name = xfce_keyboard_settings_xkb_description ((XklConfigItem *) config_item);
- gtk_list_store_append (GTK_LIST_STORE (model), &iter );
- gtk_list_store_set (GTK_LIST_STORE (model), &iter, XKB_COMBO_DESCRIPTION, model_name, XKB_COMBO_MODELS, config_item->name, -1);
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ XKB_COMBO_DESCRIPTION, model_name,
+ XKB_COMBO_MODELS, config_item->name, -1);
g_free (model_name);
}
More information about the Xfce4-commits
mailing list