From 910bc374330b41336b821ff1c8ddef6496f1585d Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Sun, 26 Jul 2020 04:11:04 -0300 Subject: [PATCH] Refactoring popup engine. --- src/dialogs/popups.c | 17 +++++++++-------- src/selection/linux/paste.c | 2 ++ src/terminal/marshal | 2 +- src/terminal/widget.c | 8 ++++---- v3270.cbp | 1 + 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/dialogs/popups.c b/src/dialogs/popups.c index e79e74b..f56d417 100644 --- a/src/dialogs/popups.c +++ b/src/dialogs/popups.c @@ -43,17 +43,16 @@ // Check if the dialog is enabled if(popup->name && GTK_IS_V3270(widget)) { - GtkResponseType response = GTK_RESPONSE_NONE; + GtkResponseType response = GTK_RESPONSE_DELETE_EVENT; v3270_signal_emit( widget, V3270_SIGNAL_LOAD_POPUP_RESPONSE, popup->name, - response, &response ); - if(response != GTK_RESPONSE_NONE) + if((response != GTK_RESPONSE_NONE) && (response != GTK_RESPONSE_DELETE_EVENT)) return response; } @@ -104,7 +103,8 @@ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, settings[popup->type].type, GTK_BUTTONS_NONE, - "%s",popup->summary + (popup->body ? "%s" : "%s"), + popup->summary ); if(popup->body) { @@ -239,14 +239,15 @@ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_NONE, - "%s", - summary + (body ? "%s" : "%s"), + summary ); if(body) - gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",body); + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",body); - gtk_window_set_title(GTK_WINDOW(dialog),title); + if(title) + gtk_window_set_title(GTK_WINDOW(dialog),title); // Set check button GtkWidget * dont_ask = gtk_check_button_new_with_label(_("Don't ask again")); diff --git a/src/selection/linux/paste.c b/src/selection/linux/paste.c index f015af7..6abf292 100644 --- a/src/selection/linux/paste.c +++ b/src/selection/linux/paste.c @@ -108,6 +108,8 @@ static void formatted_received(GtkClipboard *clipboard, GtkSelectionData *select if(!v3270_set_from_data_block(terminal, selection)) { debug("%s: Can't paste data",__FUNCTION__); + + if( v3270_popup_toggleable_dialog( widget, diff --git a/src/terminal/marshal b/src/terminal/marshal index 775bfc7..2282811 100644 --- a/src/terminal/marshal +++ b/src/terminal/marshal @@ -6,7 +6,7 @@ VOID:POINTER VOID:VOID,POINTER,POINTER VOID:VOID,UINT,POINTER BOOLEAN:UINT,ENUM -UINT:POINTER,UINT +UINT:POINTER BOOLEAN:POINTER,UINT VOID:VOID,BOOLEAN BOOLEAN:VOID,BOOLEAN,BOOLEAN,POINTER diff --git a/src/terminal/widget.c b/src/terminal/widget.c index 00ea4a6..5358aa2 100644 --- a/src/terminal/widget.c +++ b/src/terminal/widget.c @@ -201,8 +201,8 @@ static void finalize(GObject *object) { G_OBJECT_CLASS(v3270_parent_class)->finalize(object); } - static GtkResponseType load_popup_response(v3270 G_GNUC_UNUSED(*widget), const gchar G_GNUC_UNUSED(*popup_name), GtkResponseType response) { - return response; + static GtkResponseType load_popup_response(v3270 G_GNUC_UNUSED(*widget), const gchar G_GNUC_UNUSED(*popup_name)) { + return GTK_RESPONSE_DELETE_EVENT; } static gboolean save_popup_response(v3270 G_GNUC_UNUSED(*widget), const gchar G_GNUC_UNUSED(*popup_name), GtkResponseType G_GNUC_UNUSED(response)) { @@ -481,8 +481,8 @@ static void v3270_class_init(v3270Class *klass) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (v3270Class, load_popup_response), NULL, NULL, - v3270_UINT__POINTER_UINT, - G_TYPE_UINT, 2, G_TYPE_POINTER, G_TYPE_UINT); + v3270_UINT__POINTER, + G_TYPE_UINT, 1, G_TYPE_POINTER); v3270_widget_signal[V3270_SIGNAL_SAVE_POPUP_RESPONSE] = g_signal_new( I_("save-popup-response"), diff --git a/v3270.cbp b/v3270.cbp index 44bb931..d0b1f4c 100644 --- a/v3270.cbp +++ b/v3270.cbp @@ -361,6 +361,7 @@ +