diff --git a/capplets/keyboard/.cvsignore b/capplets/keyboard/.cvsignore
index 0e63d2598..e102c86d1 100644
--- a/capplets/keyboard/.cvsignore
+++ b/capplets/keyboard/.cvsignore
@@ -7,3 +7,4 @@ Makefile.in
*.o
gnome-keyboard-properties
keyboard.desktop
+gnome-keyboard-properties.gladep
diff --git a/capplets/keyboard/gnome-keyboard-properties-xkb.c b/capplets/keyboard/gnome-keyboard-properties-xkb.c
index 6443fbbad..9f5e42bc0 100644
--- a/capplets/keyboard/gnome-keyboard-properties-xkb.c
+++ b/capplets/keyboard/gnome-keyboard-properties-xkb.c
@@ -42,176 +42,169 @@
char *
xci_desc_to_utf8 (XklConfigItem * ci)
{
- char *sd = g_strstrip (ci->description);
- return sd[0] == 0 ? g_strdup (ci->name) :
- g_locale_to_utf8 (sd, -1, NULL, NULL, NULL);
+ char *sd = g_strstrip (ci->description);
+ return sd[0] == 0 ? g_strdup (ci->name) :
+ g_locale_to_utf8 (sd, -1, NULL, NULL, NULL);
}
static GConfValue *
model_from_widget (GConfPropertyEditor * peditor, GConfValue * value)
{
- GConfValue *new_value = gconf_value_new (GCONF_VALUE_STRING);
- const char *rvs = "";
- if (value->type == GCONF_VALUE_INT) {
- GtkWidget *omenu =
- GTK_WIDGET (gconf_property_editor_get_ui_control
- (peditor));
- const int ivalue = gconf_value_get_int (value);
- GtkWidget *menu =
- gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu));
- GList *items = GTK_MENU_SHELL (menu)->children;
- while (items != NULL) {
- GtkWidget *item = GTK_WIDGET (items->data);
- const int itemNo =
- GPOINTER_TO_INT (g_object_get_data
- (G_OBJECT (item), "itemNo"));
- if (itemNo == ivalue) {
- rvs = (const char *)
- g_object_get_data (G_OBJECT (item),
- "itemId");
- break;
- }
- items = items->next;
- }
+ GConfValue *new_value = gconf_value_new (GCONF_VALUE_STRING);
+ const char *rvs = "";
+ if (value->type == GCONF_VALUE_INT)
+ {
+ GtkWidget *omenu =
+ GTK_WIDGET (gconf_property_editor_get_ui_control (peditor));
+ const int ivalue = gconf_value_get_int (value);
+ GtkWidget *menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu));
+ GList *items = GTK_MENU_SHELL (menu)->children;
+ while (items != NULL)
+ {
+ GtkWidget *item = GTK_WIDGET (items->data);
+ const int itemNo =
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "itemNo"));
+ if (itemNo == ivalue)
+ {
+ rvs = (const char *)
+ g_object_get_data (G_OBJECT (item), "itemId");
+ break;
+ }
+ items = items->next;
}
- gconf_value_set_string (new_value, rvs);
- return new_value;
+ }
+ gconf_value_set_string (new_value, rvs);
+ return new_value;
}
static GConfValue *
model_to_widget (GConfPropertyEditor * peditor, GConfValue * value)
{
- GConfValue *new_value;
- int rvi = -1;
+ GConfValue *new_value;
+ int rvi = -1;
- new_value = gconf_value_new (GCONF_VALUE_INT);
+ new_value = gconf_value_new (GCONF_VALUE_INT);
- if (value->type == GCONF_VALUE_STRING) {
- GtkWidget *omenu =
- GTK_WIDGET (gconf_property_editor_get_ui_control
- (peditor));
- const char *svalue = gconf_value_get_string (value);
- GtkWidget *menu =
- gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu));
- GList *items = GTK_MENU_SHELL (menu)->children;
- while (items != NULL) {
- GtkWidget *item = GTK_WIDGET (items->data);
- const char *itemId = (const char *)
- g_object_get_data (G_OBJECT (item), "itemId");
- if (!g_strcasecmp (itemId, svalue)) {
- rvi =
- GPOINTER_TO_INT (g_object_get_data
- (G_OBJECT (item),
- "itemNo"));
- break;
- }
- items = items->next;
- }
+ if (value->type == GCONF_VALUE_STRING)
+ {
+ GtkWidget *omenu =
+ GTK_WIDGET (gconf_property_editor_get_ui_control (peditor));
+ const char *svalue = gconf_value_get_string (value);
+ GtkWidget *menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu));
+ GList *items = GTK_MENU_SHELL (menu)->children;
+ while (items != NULL)
+ {
+ GtkWidget *item = GTK_WIDGET (items->data);
+ const char *itemId = (const char *)
+ g_object_get_data (G_OBJECT (item), "itemId");
+ if (!g_strcasecmp (itemId, svalue))
+ {
+ rvi =
+ GPOINTER_TO_INT (g_object_get_data
+ (G_OBJECT (item), "itemNo"));
+ break;
+ }
+ items = items->next;
}
- gconf_value_set_int (new_value, rvi);
+ }
+ gconf_value_set_int (new_value, rvi);
- return new_value;
+ return new_value;
}
static void
cleanup_xkb_tabs (GladeXML * dialog)
{
- XklConfigFreeRegistry ();
- XklConfigTerm ();
+ XklConfigFreeRegistry ();
+ XklConfigTerm ();
}
static void
-add_model_to_option_menu (const XklConfigItemPtr configItem,
- GtkWidget * menu)
+add_model_to_option_menu (const XklConfigItemPtr configItem, GtkWidget * menu)
{
- GList *existingItemNode = GTK_MENU_SHELL (menu)->children;
- char *utfModelName = xci_desc_to_utf8 (configItem);
- GtkWidget *menuItem = gtk_menu_item_new_with_label (utfModelName);
- int position = 0;
- g_object_set_data_full (G_OBJECT (menuItem), "itemId",
- g_strdup (configItem->name),
- (GDestroyNotify) g_free);
- for (; existingItemNode != NULL;
- position++, existingItemNode = existingItemNode->next) {
- GtkWidget *menuItem = GTK_WIDGET (existingItemNode->data);
- GtkWidget *lbl = GTK_BIN (menuItem)->child;
- const char *txt = gtk_label_get_text (GTK_LABEL (lbl));
- if (g_strcasecmp (txt, utfModelName) > 0)
- break;
- }
- g_free (utfModelName);
- gtk_menu_shell_insert (GTK_MENU_SHELL (menu),
- GTK_WIDGET (menuItem), position);
+ GList *existingItemNode = GTK_MENU_SHELL (menu)->children;
+ char *utfModelName = xci_desc_to_utf8 (configItem);
+ GtkWidget *menuItem = gtk_menu_item_new_with_label (utfModelName);
+ int position = 0;
+ g_object_set_data_full (G_OBJECT (menuItem), "itemId",
+ g_strdup (configItem->name),
+ (GDestroyNotify) g_free);
+ for (; existingItemNode != NULL;
+ position++, existingItemNode = existingItemNode->next)
+ {
+ GtkWidget *menuItem = GTK_WIDGET (existingItemNode->data);
+ GtkWidget *lbl = GTK_BIN (menuItem)->child;
+ const char *txt = gtk_label_get_text (GTK_LABEL (lbl));
+ if (g_strcasecmp (txt, utfModelName) > 0)
+ break;
+ }
+ g_free (utfModelName);
+ gtk_menu_shell_insert (GTK_MENU_SHELL (menu),
+ GTK_WIDGET (menuItem), position);
}
static void
fill_models_option_menu (GladeXML * dialog)
{
- GtkWidget *menu = gtk_menu_new ();
- int itemCounter = 0;
- GList *items;
- XklConfigEnumModels ((ConfigItemProcessFunc)
- add_model_to_option_menu, menu);
+ GtkWidget *menu = gtk_menu_new ();
+ int itemCounter = 0;
+ GList *items;
+ XklConfigEnumModels ((ConfigItemProcessFunc)
+ add_model_to_option_menu, menu);
- items = GTK_MENU_SHELL (menu)->children;
- while (items != NULL) {
- GtkWidget *menuItem = GTK_WIDGET (items->data);
- g_object_set_data (G_OBJECT (menuItem), "itemNo",
- GINT_TO_POINTER (itemCounter++));
- items = items->next;
- }
+ items = GTK_MENU_SHELL (menu)->children;
+ while (items != NULL)
+ {
+ GtkWidget *menuItem = GTK_WIDGET (items->data);
+ g_object_set_data (G_OBJECT (menuItem), "itemNo",
+ GINT_TO_POINTER (itemCounter++));
+ items = items->next;
+ }
- gtk_option_menu_set_menu (GTK_OPTION_MENU (WID ("xkb_models")),
- GTK_WIDGET (menu));
- gtk_widget_show_all (menu);
+ gtk_option_menu_set_menu (GTK_OPTION_MENU (WID ("xkb_models")),
+ GTK_WIDGET (menu));
+ gtk_widget_show_all (menu);
+}
+
+
+static void
+reset_to_defaults (GtkWidget * button, GladeXML * dialog)
+{
+ gconf_client_set_bool (gconf_client_get_default (),
+ GSWITCHIT_CONFIG_XKB_KEY_OVERRIDE_SETTINGS,
+ TRUE, NULL);
+ /* all the rest is g-s-d's business */
}
void
setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset)
{
- GObject *peditor;
+ XklConfigInit ();
+ XklConfigLoadRegistry ();
- XklConfigInit ();
- XklConfigLoadRegistry ();
+ fill_models_option_menu (dialog);
- fill_models_option_menu (dialog);
+ gconf_peditor_new_select_menu
+ (changeset, (gchar *) GSWITCHIT_CONFIG_XKB_KEY_MODEL,
+ WID ("xkb_models"),
+ "conv-to-widget-cb", model_to_widget,
+ "conv-from-widget-cb", model_from_widget, NULL);
- peditor = gconf_peditor_new_boolean
- (changeset,
- (gchar *) GSWITCHIT_CONFIG_XKB_KEY_OVERRIDE_SETTINGS,
- WID ("xkb_use_custom_config"), NULL);
+ fill_available_layouts_tree (dialog);
+ fill_available_options_tree (dialog);
+ prepare_selected_layouts_tree (dialog);
+ prepare_selected_options_tree (dialog);
+ fill_selected_layouts_tree (dialog);
+ fill_selected_options_tree (dialog);
- gtk_widget_set_sensitive (WID ("xkb_models_box"), FALSE);
- gtk_widget_set_sensitive (WID ("xkb_layouts_box"), FALSE);
- gtk_widget_set_sensitive (WID ("xkb_options_box"), FALSE);
+ register_layouts_buttons_handlers (dialog);
+ register_options_buttons_handlers (dialog);
+ g_signal_connect (G_OBJECT (WID ("xkb_reset_to_defaults")), "clicked",
+ G_CALLBACK (reset_to_defaults), dialog);
- gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor),
- WID ("xkb_models_box"));
- gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor),
- WID ("xkb_layouts_box"));
- gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor),
- WID ("xkb_options_box"));
+ register_layouts_gconf_listener (dialog);
+ register_options_gconf_listener (dialog);
- gconf_peditor_new_select_menu
- (changeset, (gchar *) GSWITCHIT_CONFIG_XKB_KEY_MODEL,
- WID ("xkb_models"),
- "conv-to-widget-cb", model_to_widget,
- "conv-from-widget-cb", model_from_widget, NULL);
-
- fill_available_layouts_tree (dialog);
- fill_available_options_tree (dialog);
- prepare_selected_layouts_tree (dialog);
- prepare_selected_options_tree (dialog);
- fill_selected_layouts_tree (dialog);
- fill_selected_options_tree (dialog);
-
- register_layouts_buttons_handlers (dialog);
- register_options_buttons_handlers (dialog);
-
- register_layouts_gconf_listener (dialog);
- register_options_gconf_listener (dialog);
-
- g_signal_connect (G_OBJECT (WID ("keyboard_dialog")),
- "destroy", G_CALLBACK (cleanup_xkb_tabs),
- dialog);
+ g_signal_connect (G_OBJECT (WID ("keyboard_dialog")),
+ "destroy", G_CALLBACK (cleanup_xkb_tabs), dialog);
}
diff --git a/capplets/keyboard/gnome-keyboard-properties.glade b/capplets/keyboard/gnome-keyboard-properties.glade
index 80d27a56f..7a6d0cd53 100644
--- a/capplets/keyboard/gnome-keyboard-properties.glade
+++ b/capplets/keyboard/gnome-keyboard-properties.glade
@@ -1121,24 +1121,6 @@
False
6
-
-
- True
- True
- _Ignore system configuration
- True
- GTK_RELIEF_NORMAL
- False
- False
- True
-
-
- 0
- False
- False
-
-
-
True
@@ -1179,6 +1161,76 @@
False
+
+
+
+ True
+ True
+ GTK_RELIEF_NORMAL
+
+
+
+ True
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+
+ True
+ False
+ 2
+
+
+
+ True
+ gtk-refresh
+ 4
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ _Reset to defaults
+ True
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ 0
+ False
+ False
+
+
+
+
+
+
+
+
+ 0
+ False
+ False
+ GTK_PACK_END
+
+
0
diff --git a/gnome-settings-daemon/.indent.pro b/gnome-settings-daemon/.indent.pro
new file mode 100644
index 000000000..bdff07415
--- /dev/null
+++ b/gnome-settings-daemon/.indent.pro
@@ -0,0 +1,2 @@
+-kr -i8 -pcs -lps -psl
+
diff --git a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c
index 865f9c596..4858e9569 100644
--- a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c
+++ b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c
@@ -35,6 +35,7 @@
#include
#include
+#include
#include
#include "gnome-settings-keyboard-xkb.h"
@@ -77,6 +78,9 @@ apply_settings (void)
{
GConfClient *confClient;
+ if (!initedOk)
+ return;
+
memset (&gswic, 0, sizeof (gswic));
confClient = gconf_client_get_default ();
@@ -84,12 +88,17 @@ apply_settings (void)
g_object_unref (confClient);
GSwitchItXkbConfigLoad (&gswic);
- if (!gswic.overrideSettings)
+ if (gswic.overrideSettings) {
+ /* initialization - from the system settings */
GSwitchItXkbConfigLoadInitial (&gswic);
-
- if (!GSwitchItXkbConfigActivate (&gswic)) {
- g_warning ("Could not activate the XKB configuration");
- activation_error ();
+ gswic.overrideSettings = FALSE;
+ GSwitchItXkbConfigSave (&gswic);
+ } else {
+ if (!GSwitchItXkbConfigActivate (&gswic)) {
+ g_warning
+ ("Could not activate the XKB configuration");
+ activation_error ();
+ }
}
GSwitchItXkbConfigTerm (&gswic);
@@ -110,6 +119,5 @@ gnome_settings_keyboard_xkb_init (GConfClient * client)
void
gnome_settings_keyboard_xkb_load (GConfClient * client)
{
- if (initedOk)
- apply_settings ();
+ apply_settings ();
}
diff --git a/schemas/desktop_gnome_peripherals_keyboard_xkb.schemas.in b/schemas/desktop_gnome_peripherals_keyboard_xkb.schemas.in
index 43f01dc36..934d215e6 100644
--- a/schemas/desktop_gnome_peripherals_keyboard_xkb.schemas.in
+++ b/schemas/desktop_gnome_peripherals_keyboard_xkb.schemas.in
@@ -9,11 +9,11 @@
bool
- false
+ true
- XKB settings should be overridden
- XKB settings should be overridden
+ XKB settings in gconf will be overridden from the system ASAP
+ Very soon, XKB settings in gconf will be overridden (from the system configuration)