From 3a71488be7c7b947d3ae487d0ba4893bb49332b6 Mon Sep 17 00:00:00 2001 From: "Sergey V. Udaltsov" Date: Sat, 8 May 2004 03:08:51 +0000 Subject: [PATCH] Now g-s-d tracks changes in the system xkb configuration --- .../gnome-settings-keyboard-xkb.c | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c index 42efbb037..143360f3e 100644 --- a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c +++ b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c @@ -110,6 +110,42 @@ apply_settings (void) GSwitchItXkbConfigTerm (&gswic); } +static void +gnome_settings_keyboard_xkb_analyze_sysconfig (void) +{ + GConfClient *confClient; + GSwitchItXkbConfig gswicWas, gswicNow; + + if (!initedOk) + return; + + confClient = gconf_client_get_default (); + GSwitchItXkbConfigInit (&gswicWas, confClient); + GSwitchItXkbConfigInit (&gswicNow, confClient); + g_object_unref (confClient); + GSwitchItXkbConfigLoadSysBackup (&gswicWas); + GSwitchItXkbConfigLoadInitial (&gswicNow); + + // config was changed!!! + if (g_slist_length (gswicWas.layouts) && + !GSwitchItXkbConfigEquals (&gswicNow, &gswicWas)) { + GtkWidget *msg = gtk_message_dialog_new_with_markup (NULL, + 0, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, +//!! temporary one + _ + ("System-wide XKB configuration has changed. " + "You may want to adjust your local configuration as well.")); + g_signal_connect (msg, "response", + G_CALLBACK (gtk_widget_destroy), NULL); + gtk_widget_show (msg); + } + GSwitchItXkbConfigSaveSysBackup (&gswicNow); + GSwitchItXkbConfigTerm (&gswicWas); + GSwitchItXkbConfigTerm (&gswicNow); +} + static void gnome_settings_keyboard_xkb_chk_lcl_xmm_response (GtkDialog * dlg, gint response) @@ -165,8 +201,9 @@ void gnome_settings_keyboard_xkb_init (GConfClient * client) { if (!XklInit (GDK_DISPLAY ())) { - XklBackupNamesProp (); initedOk = TRUE; + XklBackupNamesProp (); + gnome_settings_keyboard_xkb_analyze_sysconfig (); gnome_settings_keyboard_xkb_chk_lcl_xmm (); gnome_settings_daemon_register_callback ("/desktop/gnome/peripherals/keyboard/xkb",