summaryrefslogtreecommitdiff
path: root/capplets/keybindings
diff options
context:
space:
mode:
authorJens Granseuer <jensgr@gmx.net>2007-02-04 15:47:49 +0000
committerJens Granseuer <jensg@src.gnome.org>2007-02-04 15:47:49 +0000
commit7aa1cede0d91ca668d2079c892e5641eb904d980 (patch)
treea238b5a944a67c712e37c463c324eab058351a15 /capplets/keybindings
parent765e80f9538ef218ef016e72362683f008ef8b28 (diff)
downloadgnome-control-center-7aa1cede0d91ca668d2079c892e5641eb904d980.tar.gz
clean up sorting to not use an imaginary column; change accel sort order
2007-02-04 Jens Granseuer <jensgr@gmx.net> * gnome-keybinding-properties.c: (keyentry_sort_func), (clear_old_model), (setup_dialog): clean up sorting to not use an imaginary column; change accel sort order to move disabled actions to the back of the list and also speed up sorting a bit svn path=/trunk/; revision=7243
Diffstat (limited to 'capplets/keybindings')
-rw-r--r--capplets/keybindings/ChangeLog7
-rw-r--r--capplets/keybindings/gnome-keybinding-properties.c63
2 files changed, 39 insertions, 31 deletions
diff --git a/capplets/keybindings/ChangeLog b/capplets/keybindings/ChangeLog
index 40e6a5f2e..16e6de131 100644
--- a/capplets/keybindings/ChangeLog
+++ b/capplets/keybindings/ChangeLog
@@ -1,5 +1,12 @@
2007-02-04 Jens Granseuer <jensgr@gmx.net>
+ * gnome-keybinding-properties.c: (keyentry_sort_func),
+ (clear_old_model), (setup_dialog): clean up sorting to not use an
+ imaginary column; change accel sort order to move disabled actions
+ to the back of the list and also speed up sorting a bit
+
+2007-02-04 Jens Granseuer <jensgr@gmx.net>
+
* eggaccelerators.c: (egg_virtual_accelerator_name),
(egg_virtual_accelerator_label):
* eggaccelerators.h:
diff --git a/capplets/keybindings/gnome-keybinding-properties.c b/capplets/keybindings/gnome-keybinding-properties.c
index bfc46719a..fd4e2336f 100644
--- a/capplets/keybindings/gnome-keybinding-properties.c
+++ b/capplets/keybindings/gnome-keybinding-properties.c
@@ -298,12 +298,8 @@ keyentry_sort_func (GtkTreeModel *model,
{
KeyEntry *key_entry_a;
KeyEntry *key_entry_b;
- char *name_a;
- char *name_b;
int retval;
- /* mmmmm, super-slow. */
-
key_entry_a = NULL;
gtk_tree_model_get (model, a,
KEYENTRY_COLUMN, &key_entry_a,
@@ -314,35 +310,42 @@ keyentry_sort_func (GtkTreeModel *model,
KEYENTRY_COLUMN, &key_entry_b,
-1);
-
- if (key_entry_a != NULL)
- name_a = binding_name (key_entry_a->keyval,
- key_entry_a->keycode,
- key_entry_a->mask,
- TRUE);
- else
- name_a = NULL;
+ if (key_entry_a && key_entry_b)
+ {
+ if ((key_entry_a->keyval || key_entry_a->keycode) &&
+ (key_entry_b->keyval || key_entry_b->keycode))
+ {
+ gchar *name_a, *name_b;
- if (key_entry_b != NULL)
- name_b = binding_name (key_entry_b->keyval,
- key_entry_b->keycode,
- key_entry_b->mask,
- TRUE);
- else
- name_b = NULL;
+ name_a = binding_name (key_entry_a->keyval,
+ key_entry_a->keycode,
+ key_entry_a->mask,
+ TRUE);
- if (name_a && name_b)
- retval = g_utf8_collate (name_a, name_b);
- else if (name_a)
- retval = 1;
- else if (name_b)
+ name_b = binding_name (key_entry_b->keyval,
+ key_entry_b->keycode,
+ key_entry_b->mask,
+ TRUE);
+
+ retval = g_utf8_collate (name_a, name_b);
+
+ g_free (name_a);
+ g_free (name_b);
+ }
+ else if (key_entry_a->keyval || key_entry_a->keycode)
+ retval = -1;
+ else if (key_entry_b->keyval || key_entry_b->keycode)
+ retval = 1;
+ else
+ retval = 0;
+ }
+ else if (key_entry_a)
retval = -1;
+ else if (key_entry_b)
+ retval = 1;
else
retval = 0;
- g_free (name_a);
- g_free (name_b);
-
return retval;
}
@@ -363,9 +366,8 @@ clear_old_model (GladeXML *dialog,
sort_model = gtk_tree_model_sort_new_with_model (model);
- /* N_COLUMNS is just a place to stick the extra sort function */
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sort_model),
- N_COLUMNS,
+ KEYENTRY_COLUMN,
keyentry_sort_func,
NULL, NULL);
@@ -929,8 +931,7 @@ setup_dialog (GladeXML *dialog)
gtk_tree_view_column_set_resizable (column, FALSE);
gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("shortcut_treeview")), column);
- /* N_COLUMNS is just a place to stick the extra sort function */
- gtk_tree_view_column_set_sort_column_id (column, N_COLUMNS);
+ gtk_tree_view_column_set_sort_column_id (column, KEYENTRY_COLUMN);
gconf_client_add_dir (client, "/apps/gnome_keybinding_properties", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
gconf_client_add_dir (client, "/apps/metacity/general", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);