diff --git a/lib/prefs.c b/lib/prefs.c index d0f3710bc618c5798de3368ee5167a5d0eb00c3f..0ce76294bd38990f9b108de0476021f08d16eff1 100644 --- a/lib/prefs.c +++ b/lib/prefs.c @@ -99,7 +99,7 @@ static void get_spell_dictionaries(GtkWidget *spell_combo, DictData *dd) } -static void prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd) +void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd) { gchar *tmp; @@ -172,7 +172,8 @@ GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd) gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); gtk_window_set_icon_name(GTK_WINDOW(dialog), "xfce4-settings"); - g_signal_connect_after(dialog, "response", G_CALLBACK(prefs_dialog_response), dd); + if (! dd->is_plugin) /* the response callback is run by the plugin's callback */ + g_signal_connect(dialog, "response", G_CALLBACK(dict_prefs_dialog_response), dd); notebook = gtk_notebook_new(); gtk_widget_show(notebook); diff --git a/lib/prefs.h b/lib/prefs.h index d2334c3b0d592145d534d39e141241022d1ce893..5b02a20f61f5be021608d5adc548af3ec10403cf 100644 --- a/lib/prefs.h +++ b/lib/prefs.h @@ -22,6 +22,7 @@ #define PREFS_H 1 GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd); +void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd); #endif diff --git a/panel-plugin/xfce4-dict-plugin.c b/panel-plugin/xfce4-dict-plugin.c index d5ba280886ecde383dc8ce1182d6be8dc14018d6..dfe1e32cfa212d5e13f884a4381cf7c5d9218eaa 100644 --- a/panel-plugin/xfce4-dict-plugin.c +++ b/panel-plugin/xfce4-dict-plugin.c @@ -286,6 +286,9 @@ static void dict_plugin_panel_save_settings(DictPanelData *dpd) static void dict_plugin_properties_dialog_response(GtkWidget *dlg, gint response, DictPanelData *dpd) { + /* first run the real response handler which reads the settings from the dialog */ + dict_prefs_dialog_response(dlg, response, dpd->dd); + dict_plugin_panel_save_settings(dpd); g_object_set_data(G_OBJECT(dpd->plugin), "dialog", NULL);