diff --git a/src/dialogs/popups.c b/src/dialogs/popups.c index bc64ff1..a8fa9e1 100644 --- a/src/dialogs/popups.c +++ b/src/dialogs/popups.c @@ -36,12 +36,14 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ - GtkResponseType v3270_show_popup(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait) { + GtkResponseType v3270_popup_dialog_show(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait) { g_return_val_if_fail(GTK_IS_WIDGET(widget),GTK_RESPONSE_NONE); // Check if the dialog is enabled - if(popup->name && GTK_IS_V3270(widget)) { + gboolean allow_disabling = (popup->name && GTK_IS_V3270(widget)); + + if(allow_disabling) { GtkResponseType response = GTK_RESPONSE_DELETE_EVENT; @@ -55,6 +57,7 @@ if((response != GTK_RESPONSE_NONE) && (response != GTK_RESPONSE_DELETE_EVENT)) return response; + allow_disabling = (response == GTK_RESPONSE_NONE); } // Popup settings. @@ -119,7 +122,7 @@ GtkWidget * dont_ask = NULL; #ifdef DEBUG - if(popup->name && GTK_IS_V3270(widget)) { + if(allow_disabling) { // Set check button dont_ask = gtk_check_button_new_with_label(_("Don't ask again")); @@ -204,7 +207,7 @@ .body = body }; - v3270_show_popup(widget, &popup, FALSE); + v3270_popup_dialog_show(widget, &popup, FALSE); } @@ -223,7 +226,7 @@ .body = error->message }; - v3270_show_popup(widget, &popup, FALSE); + v3270_popup_dialog_show(widget, &popup, FALSE); } diff --git a/src/include/internals.h b/src/include/internals.h index af29612..5a490b5 100644 --- a/src/include/internals.h +++ b/src/include/internals.h @@ -135,7 +135,7 @@ G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_grid(GtkAlign align); G_GNUC_INTERNAL GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title); - G_GNUC_INTERNAL GtkResponseType v3270_show_popup(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait); + G_GNUC_INTERNAL GtkResponseType v3270_popup_dialog_show(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait); G_GNUC_INTERNAL void v3270_signal_emit(gpointer instance, enum V3270_SIGNAL signal_id, ...); diff --git a/src/selection/linux/paste.c b/src/selection/linux/paste.c index f28bf27..cfa979c 100644 --- a/src/selection/linux/paste.c +++ b/src/selection/linux/paste.c @@ -118,7 +118,7 @@ static void formatted_received(GtkClipboard *clipboard, GtkSelectionData *select .label = _("_Paste as text") }; - if(v3270_show_popup(widget,&popup,1) == GTK_RESPONSE_APPLY) + if(v3270_popup_dialog_show(widget,&popup,1) == GTK_RESPONSE_APPLY) { gtk_clipboard_request_text( clipboard, diff --git a/src/terminal/callbacks.c b/src/terminal/callbacks.c index a7e6203..3ba8efd 100644 --- a/src/terminal/callbacks.c +++ b/src/terminal/callbacks.c @@ -285,7 +285,7 @@ static void message(H3270 *session, LIB3270_NOTIFY type , const char *title, con .body = text }; - v3270_show_popup(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); + v3270_popup_dialog_show(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); } @@ -334,10 +334,12 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title g_autofree gchar * body = NULL; - if(fmt) + if(fmt) { body = g_strdup_vprintf(fmt,args); + popup.body = body; + } - v3270_show_popup(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); + v3270_popup_dialog_show(GTK_WIDGET(lib3270_get_user_data(session)),&popup,0); } @@ -432,10 +434,10 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title static int popup_show(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait) { - GtkResponseType response = v3270_show_popup( + GtkResponseType response = v3270_popup_dialog_show( GTK_WIDGET(lib3270_get_user_data(hSession)), popup, - wait != 0 ? TRUE : FALSE ); + wait != 0); if(response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY) return 0; -- libgit2 0.21.2