Commit bbe7e969bdf0cebf25b6e921ea4ebfdd95dcea8c
1 parent
c1d9f910
Exists in
master
and in
1 other branch
Another adjustment to prevent multiple save-settings signals.
Showing
1 changed file
with
6 additions
and
0 deletions
Show diff stats
src/terminal/widget.c
@@ -765,7 +765,9 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) | @@ -765,7 +765,9 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) | ||
765 | 765 | ||
766 | static gboolean bg_emit_save_settings(GObject *widget) | 766 | static gboolean bg_emit_save_settings(GObject *widget) |
767 | { | 767 | { |
768 | + GTK_V3270(widget)->freeze = 0; | ||
768 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); | 769 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); |
770 | + g_object_unref(widget); | ||
769 | return FALSE; | 771 | return FALSE; |
770 | } | 772 | } |
771 | 773 | ||
@@ -773,6 +775,10 @@ void v3270_emit_save_settings(GtkWidget *widget) | @@ -773,6 +775,10 @@ void v3270_emit_save_settings(GtkWidget *widget) | ||
773 | { | 775 | { |
774 | debug("%s(Freeze is %s)",__FUNCTION__,GTK_V3270(widget)->freeze ? "ON" : "OFF"); | 776 | debug("%s(Freeze is %s)",__FUNCTION__,GTK_V3270(widget)->freeze ? "ON" : "OFF"); |
775 | if(widget && GTK_IS_V3270(widget) && !GTK_V3270(widget)->freeze) | 777 | if(widget && GTK_IS_V3270(widget) && !GTK_V3270(widget)->freeze) |
778 | + { | ||
779 | + g_object_ref(widget); | ||
780 | + GTK_V3270(widget)->freeze = 1; | ||
776 | g_idle_add((GSourceFunc) bg_emit_save_settings, G_OBJECT(widget)); | 781 | g_idle_add((GSourceFunc) bg_emit_save_settings, G_OBJECT(widget)); |
782 | + } | ||
777 | } | 783 | } |
778 | 784 |