diff --git a/src/dialogs/popups.c b/src/dialogs/popups.c index f346cd4..cc3068b 100644 --- a/src/dialogs/popups.c +++ b/src/dialogs/popups.c @@ -36,6 +36,12 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ + static void v3270_dialog_add_class_for_response(GtkWidget *dialog, gint response_id, const char *className) { + GtkWidget * widget = gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog),response_id); + GtkStyleContext *context = gtk_widget_get_style_context(widget); + gtk_style_context_add_class(context,className); + } + 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); @@ -154,10 +160,41 @@ gtk_dialog_add_button(GTK_DIALOG(dialog), _("_Cancel"), GTK_RESPONSE_CANCEL); gtk_dialog_add_button(GTK_DIALOG(dialog), popup->label, GTK_RESPONSE_APPLY); - gtk_dialog_set_default_response( - GTK_DIALOG(dialog), - (popup->type == LIB3270_NOTIFY_SECURE ? GTK_RESPONSE_CANCEL : GTK_RESPONSE_APPLY) - ); + + switch(popup->type) { + case LIB3270_NOTIFY_SECURE: + case LIB3270_NOTIFY_CRITICAL: + gtk_dialog_set_default_response( + GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL + ); + + v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"destructive-action"); + v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); + break; + + case LIB3270_NOTIFY_ERROR: + gtk_dialog_set_default_response( + GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL + ); + v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); + break; + + case LIB3270_NOTIFY_INFO: + gtk_dialog_set_default_response( + GTK_DIALOG(dialog), + GTK_RESPONSE_APPLY + ); + v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"suggested-action"); + break; + + default: + gtk_dialog_set_default_response( + GTK_DIALOG(dialog), + GTK_RESPONSE_APPLY + ); + } } else { diff --git a/src/testprogram/toolbar.c b/src/testprogram/toolbar.c index 7b9b3b6..9a7c988 100644 --- a/src/testprogram/toolbar.c +++ b/src/testprogram/toolbar.c @@ -194,16 +194,15 @@ static void popup_clicked(GtkButton *button, GtkWidget *terminal) { - /* static const LIB3270_POPUP popup = { .name = "sample_popup", - .type = LIB3270_NOTIFY_INFO, + .type = LIB3270_NOTIFY_SECURE, + .label = "Continue", .summary = "This is the summary of message", .body = "This it the body of the message, can be used for a bigger explanation" }; lib3270_popup(v3270_get_session(terminal), &popup, 1); - */ } -- libgit2 0.21.2