Only show themes if they actually have a keybinding. Also, initialize the

Tue Mar 26 23:27:24 2002  Jonathan Blandford  <jrb@redhat.com>

	* gnome-keybinding-properties.c (setup_dialog): Only show themes
	if they actually have a keybinding.  Also, initialize the keytheme
	correctly.
This commit is contained in:
Jonathan Blandford 2002-03-27 04:38:08 +00:00 committed by Jonathan Blandford
parent 73cb806363
commit 1c1ffb6ab4
2 changed files with 58 additions and 11 deletions

View file

@ -1,3 +1,9 @@
Tue Mar 26 23:27:24 2002 Jonathan Blandford <jrb@redhat.com>
* gnome-keybinding-properties.c (setup_dialog): Only show themes
if they actually have a keybinding. Also, initialize the keytheme
correctly.
2002-03-26 Seth Nickell <snickell@stanford.edu>
* keybinding.desktop.in:

View file

@ -31,6 +31,40 @@ typedef struct
GList *signals = NULL;
static void
menu_item_activate (GtkWidget *menu_item,
gpointer unused)
{
gchar *key_theme;
gchar *current_key_theme;
GConfClient *client;
GError *error = NULL;
client = gconf_client_get_default ();
key_theme = g_object_get_data (G_OBJECT (menu_item), LABEL_DATA);
g_return_if_fail (key_theme != NULL);
current_key_theme = gconf_client_get_string (client, "/desktop/gnome/interface/gtk_key_theme", &error);
if (current_key_theme && strcmp (current_key_theme, key_theme))
{
gconf_client_set_string (client, "/desktop/gnome/interface/gtk_key_theme", key_theme, NULL);
}
}
static GtkWidget *
make_key_theme_menu_item (const gchar *key_theme)
{
GtkWidget *retval;
retval = gtk_menu_item_new_with_label (key_theme);
g_object_set_data_full (G_OBJECT (retval), LABEL_DATA, g_strdup (key_theme), g_free);
g_signal_connect (G_OBJECT (retval), "activate", G_CALLBACK (menu_item_activate), NULL);
gtk_widget_show (retval);
return retval;
}
static GladeXML *
create_dialog (void)
{
@ -329,9 +363,7 @@ key_theme_changed (GConfClient *client,
}
/* We didn't find our theme. Add it to our list. */
menu_item = gtk_menu_item_new_with_label (new_key_theme);
g_object_set_data_full (G_OBJECT (menu_item), LABEL_DATA, g_strdup (new_key_theme), g_free);
gtk_widget_show (menu_item);
menu_item = make_key_theme_menu_item (new_key_theme);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), i);
}
@ -420,6 +452,7 @@ setup_dialog (GladeXML *dialog)
GtkWidget *omenu;
GtkWidget *menu;
GtkWidget *menu_item;
GConfEntry *entry;
GList *list;
omenu = WID ("key_theme_omenu");
@ -428,12 +461,13 @@ setup_dialog (GladeXML *dialog)
{
ThemeInfo *info = list->data;
if (! info->has_keybinding)
continue;
/* Make sure we have a default */
if (!strcasecmp (info->name, "default"))
{
menu_item = gtk_menu_item_new_with_label (info->name);
g_object_set_data_full (G_OBJECT (menu_item), LABEL_DATA, g_strdup (info->name), g_free);
gtk_widget_show (menu_item);
menu_item = make_key_theme_menu_item (info->name);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
}
}
@ -441,11 +475,12 @@ setup_dialog (GladeXML *dialog)
{
ThemeInfo *info = list->data;
if (! info->has_keybinding)
continue;
if (strcasecmp (info->name, "default"))
{
menu_item = gtk_menu_item_new_with_label (info->name);
g_object_set_data_full (G_OBJECT (menu_item), LABEL_DATA, g_strdup (info->name), g_free);
gtk_widget_show (menu_item);
menu_item = make_key_theme_menu_item (info->name);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
}
}
@ -457,6 +492,12 @@ setup_dialog (GladeXML *dialog)
"/desktop/gnome/interface/gtk_key_theme",
(GConfClientNotifyFunc) &key_theme_changed,
omenu, NULL, NULL);
/* Initialize the option menu */
entry = gconf_client_get_entry (client,
"/desktop/gnome/interface/gtk_key_theme",
NULL, TRUE, NULL);
key_theme_changed (client, 0, entry, omenu);
}