+ if (! strcmp (gtk_label_get_text (GTK_LABEL (ci->status)),
+ "Status : modified"))
+ {
+ if (ci->wtype == ENTRY_WIDGET)
+ {
+ if (config_with_entry (ci))
+ gtk_dialog_response (GTK_DIALOG (ci->dialog), GTK_RESPONSE_OK);
+ else
+ update_status (ci);
+ }
+
+ else if (ci->wtype == COMBO_BOX_WIDGET)
+ {
+ config_with_combo (ci);
+ gtk_dialog_response (GTK_DIALOG (ci->dialog), GTK_RESPONSE_OK);
+ }
+
+ else /* ci->wtype == SPIN_BUTTON */
+ {
+ if (config_with_spin (ci))
+ gtk_dialog_response (GTK_DIALOG (ci->dialog), GTK_RESPONSE_OK);
+ else
+ update_status (ci);
+ }
+ }
+ else /* default or customized */
+ gtk_dialog_response (GTK_DIALOG (ci->dialog), GTK_RESPONSE_OK);
+}
+
+static void *
+default_cb (GtkButton *button, gpointer data)
+{
+ MPlist *empty = mplist ();
+ struct ControllerInfo *ci = data;
+
+ CONFIG_VARIABLE (empty);
+ m17n_object_unref (empty);
+ update_status (ci);
+}
+
+static void *
+revert_cb (GtkButton *button, gpointer data)
+{
+ struct ControllerInfo *ci = data;
+
+ CONFIG_VARIABLE (NULL);
+ update_status (ci);
+}
+
+static gboolean
+key_pressed_cb (GtkEntry *entry, GdkEventKey *event, gpointer data)
+{
+ struct ControllerInfo *ci = data;
+
+ gtk_widget_set_sensitive (ci->default_, TRUE);
+ gtk_widget_set_sensitive (ci->revert, TRUE);
+ gtk_label_set_text (GTK_LABEL (ci->status), _("Status : modified"));
+ return FALSE;
+}
+
+static gboolean
+value_changed_cb (GtkWidget *widget, gpointer data)
+{
+ struct ControllerInfo *ci = data;
+
+ gtk_widget_set_sensitive (ci->default_, TRUE);
+ gtk_widget_set_sensitive (ci->revert, TRUE);
+ gtk_label_set_text (GTK_LABEL (ci->status), _("Status : modified"));
+ return FALSE;