now the buttons work as Jody asked

This commit is contained in:
Sergey V. Udaltsov 2004-05-12 21:54:46 +00:00
parent d5e94d3efe
commit b10bc08713

View file

@ -48,6 +48,11 @@ static gboolean initedOk;
static const char DISABLE_XMM_WARNING_KEY[] = static const char DISABLE_XMM_WARNING_KEY[] =
"/desktop/gnome/peripherals/keyboard/disable_xmm_and_xkb_warning"; "/desktop/gnome/peripherals/keyboard/disable_xmm_and_xkb_warning";
typedef enum {
RESPONSE_USE_X,
RESPONSE_USE_GNOME
} SysConfigChangedMsgResponse;
static void static void
activation_error (void) activation_error (void)
{ {
@ -110,40 +115,68 @@ apply_settings (void)
GSwitchItXkbConfigTerm (&gswic); GSwitchItXkbConfigTerm (&gswic);
} }
static void
gnome_settings_keyboard_xkb_sysconfig_changed_response (GtkDialog * dialog,
SysConfigChangedMsgResponse
what2do,
GSwitchItXkbConfig
* pgswicNow)
{
switch (what2do) {
case RESPONSE_USE_X:
GSwitchItXkbConfigSave (pgswicNow);
break;
case RESPONSE_USE_GNOME:
/* Do absolutely nothing - just keep things the way they are */
break;
}
gtk_widget_destroy (GTK_WIDGET (dialog));
GSwitchItXkbConfigTerm (pgswicNow);
g_free (pgswicNow);
}
static void static void
gnome_settings_keyboard_xkb_analyze_sysconfig (void) gnome_settings_keyboard_xkb_analyze_sysconfig (void)
{ {
GConfClient *confClient; GConfClient *confClient;
GSwitchItXkbConfig gswicWas, gswicNow; GSwitchItXkbConfig gswicWas, *pgswicNow;
if (!initedOk) if (!initedOk)
return; return;
pgswicNow = g_new (GSwitchItXkbConfig, 1);
confClient = gconf_client_get_default (); confClient = gconf_client_get_default ();
GSwitchItXkbConfigInit (&gswicWas, confClient); GSwitchItXkbConfigInit (&gswicWas, confClient);
GSwitchItXkbConfigInit (&gswicNow, confClient); GSwitchItXkbConfigInit (pgswicNow, confClient);
g_object_unref (confClient); g_object_unref (confClient);
GSwitchItXkbConfigLoadSysBackup (&gswicWas); GSwitchItXkbConfigLoadSysBackup (&gswicWas);
GSwitchItXkbConfigLoadInitial (&gswicNow); GSwitchItXkbConfigLoadInitial (pgswicNow);
/* config was changed!!! */ /* config was changed!!! */
if (g_slist_length (gswicWas.layouts) && if (g_slist_length (gswicWas.layouts) &&
!GSwitchItXkbConfigEquals (&gswicNow, &gswicWas)) { !GSwitchItXkbConfigEquals (pgswicNow, &gswicWas)) {
GtkWidget *msg = gtk_message_dialog_new_with_markup (NULL, GtkWidget *msg = gtk_message_dialog_new_with_markup (NULL,
0, 0,
GTK_MESSAGE_INFO, GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE, GTK_BUTTONS_NONE,
/* !! temporary one */ /* !! temporary one */
_ _
("System-wide XKB configuration has changed. " ("The X system keyboard settings differ from your current GNOME "
"You may want to adjust your local configuration as well.")); "keyboard settings. Which set would you like to use?"));
gtk_dialog_add_buttons (GTK_DIALOG (msg),
_("Use X settings"),
RESPONSE_USE_X,
_("Use GNOME settings"),
RESPONSE_USE_GNOME, NULL);
gtk_dialog_set_default_response (GTK_DIALOG (msg),
RESPONSE_USE_GNOME);
g_signal_connect (msg, "response", g_signal_connect (msg, "response",
G_CALLBACK (gtk_widget_destroy), NULL); G_CALLBACK
(gnome_settings_keyboard_xkb_sysconfig_changed_response),
pgswicNow);
gtk_widget_show (msg); gtk_widget_show (msg);
} }
GSwitchItXkbConfigSaveSysBackup (&gswicNow); GSwitchItXkbConfigSaveSysBackup (pgswicNow);
GSwitchItXkbConfigTerm (&gswicWas); GSwitchItXkbConfigTerm (&gswicWas);
GSwitchItXkbConfigTerm (&gswicNow);
} }
static void static void