diff options
Diffstat (limited to 'src/text.c')
-rw-r--r-- | src/text.c | 79 |
1 files changed, 33 insertions, 46 deletions
@@ -4,7 +4,7 @@ * text.c * * Copyright © 2002 Sun Microsystems, Inc. - * Copyright © 2021 Logan Rathbone + * Copyright © 2021-2023 Logan Rathbone * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -38,11 +38,9 @@ static ZenityTextData *zen_text_data; -static void zenity_text_dialog_response (GtkWidget *widget, int response, - gpointer data); -static void zenity_text_toggle_button (GtkToggleButton *button, gpointer data); +static void zenity_text_dialog_response (GtkWidget *widget, char *rstr, gpointer data); +static void zenity_text_toggle_button (GtkCheckButton *button, AdwMessageDialog *dialog); -// TODO - I don't think gtk4 support for webkit is fully "there" yet. #ifdef HAVE_WEBKITGTK static void zenity_configure_webkit (WebKitWebView *web_view) { @@ -78,7 +76,6 @@ zenity_configure_webkit (WebKitWebView *web_view) { NULL); g_object_set (G_OBJECT (settings), "enable-page-cache", FALSE, NULL); g_object_set (G_OBJECT (settings), "enable-plugins", FALSE, NULL); - g_object_set (G_OBJECT (settings), "enable-private-browsing", TRUE, NULL); /* Stick to defaults "enforce-96-dpi" gboolean : Read / Write / @@ -253,9 +250,7 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) { g_autoptr(GtkBuilder) builder = NULL; GtkWidget *dialog; - GtkWidget *ok_button; GtkWidget *checkbox; - GtkWidget *cancel_button; GObject *text_view; GtkTextBuffer *text_buffer; @@ -268,8 +263,7 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) #endif zen_text_data = text_data; - builder = - zenity_util_load_ui_file ("zenity_text_dialog", "textbuffer1", NULL); + builder = zenity_util_load_ui_file ("zenity_text_dialog", "zenity_text_box", NULL); if (builder == NULL) { data->exit_code = zenity_util_return_exit_code (ZENITY_ERROR); @@ -279,10 +273,6 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) dialog = GTK_WIDGET(gtk_builder_get_object (builder, "zenity_text_dialog")); - ok_button = GTK_WIDGET(gtk_builder_get_object (builder, - "zenity_text_close_button")); - cancel_button = GTK_WIDGET(gtk_builder_get_object (builder, - "zenity_text_cancel_button")); checkbox = GTK_WIDGET(gtk_builder_get_object (builder, "zenity_text_checkbox")); @@ -295,8 +285,6 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) gtk_window_set_icon_name (GTK_WINDOW(dialog), "accessories-text-editor"); - gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); - text_buffer = gtk_text_buffer_new (NULL); text_view = gtk_builder_get_object (builder, "zenity_text_view"); gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), text_buffer); @@ -334,28 +322,24 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) if (data->extra_label) { - for (int i = 0; data->extra_label[i] != NULL; ++i) - { - gtk_dialog_add_button (GTK_DIALOG(dialog), - data->extra_label[i], i); - } + ZENITY_UTIL_ADD_EXTRA_LABELS (dialog) } if (data->ok_label) { - gtk_button_set_label (GTK_BUTTON (ok_button), data->ok_label); + ZENITY_UTIL_SETUP_OK_BUTTON_LABEL (dialog); } - if (data->cancel_label) { - gtk_button_set_label (GTK_BUTTON (cancel_button), data->cancel_label); + if (data->cancel_label) + { + ZENITY_UTIL_SETUP_CANCEL_BUTTON_LABEL (dialog); } if (text_data->checkbox) { - gtk_widget_set_visible (GTK_WIDGET (checkbox), TRUE); - gtk_widget_set_sensitive (GTK_WIDGET (ok_button), FALSE); - gtk_button_set_label (GTK_BUTTON (checkbox), text_data->checkbox); + gtk_widget_set_visible (GTK_WIDGET(checkbox), TRUE); + gtk_check_button_set_label (GTK_CHECK_BUTTON(checkbox), text_data->checkbox); + adw_message_dialog_set_response_enabled (ADW_MESSAGE_DIALOG(dialog), "ok", FALSE); - g_signal_connect (checkbox, "toggled", - G_CALLBACK(zenity_text_toggle_button), ok_button); + g_signal_connect (checkbox, "toggled", G_CALLBACK(zenity_text_toggle_button), dialog); } if (data->width > -1 || data->height > -1) @@ -370,10 +354,13 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) if (data->modal) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); -/* TODO once gtk4 support fully lands in webkitgtk. */ #ifdef HAVE_WEBKITGTK - if (text_data->html) { - web_kit = webkit_web_view_new (); + if (text_data->html) + { + /* "ephemeral" == private browsing */ + g_autoptr(WebKitWebContext) wk_context = webkit_web_context_new_ephemeral (); + + web_kit = webkit_web_view_new_with_context (wk_context); scrolled_window = GTK_WIDGET ( gtk_builder_get_object (builder, "zenity_text_scrolled_window")); @@ -387,9 +374,9 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) webkit_web_view_load_uri ( WEBKIT_WEB_VIEW (web_kit), text_data->url); } else { - g_autoptr char *cwd = NULL; - g_autoptr char *dirname = NULL; - g_autoptr char *dirname_uri = NULL; + g_autofree char *cwd = NULL; + g_autofree char *dirname = NULL; + g_autofree char *dirname_uri = NULL; dirname = text_data->uri ? g_path_get_dirname (text_data->uri) : g_strdup ("/"); cwd = g_get_current_dir (); @@ -410,9 +397,7 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) G_CALLBACK (zenity_text_webview_load_changed), NULL); - gtk_widget_destroy (GTK_WIDGET (text_view)); - gtk_container_add (GTK_CONTAINER (scrolled_window), web_kit); - gtk_widget_show (GTK_WIDGET (web_kit)); + gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW(scrolled_window), web_kit); } #endif /* HAVE_WEBKITGTK */ @@ -428,12 +413,9 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) } static void -zenity_text_toggle_button (GtkToggleButton *button, gpointer data) +zenity_text_toggle_button (GtkCheckButton *button, AdwMessageDialog *dialog) { - GtkWidget *ok_button = GTK_WIDGET(data); - - gtk_widget_set_sensitive (ok_button, - gtk_toggle_button_get_active (button)); + adw_message_dialog_set_response_enabled (dialog, "ok", gtk_check_button_get_active (button)); } static void @@ -452,13 +434,14 @@ zenity_text_dialog_output (ZenityData *zen_data) } static void -zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data) +zenity_text_dialog_response (GtkWidget *widget, char *rstr, gpointer data) { ZenityData *zen_data = data; + ZenityExitCode response = zenity_util_parse_dialog_response (rstr); switch (response) { - case GTK_RESPONSE_CLOSE: + case ZENITY_OK: zenity_text_dialog_output (zen_data); zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK); break; @@ -468,6 +451,10 @@ zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data) zen_data->exit_code = zenity_util_return_exit_code (ZENITY_TIMEOUT); break; + case ZENITY_CANCEL: + zen_data->exit_code = zenity_util_return_exit_code (ZENITY_CANCEL); + break; + default: if (zen_data->extra_label && response < (int)g_strv_length (zen_data->extra_label)) @@ -477,5 +464,5 @@ zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data) zenity_util_exit_code_with_data (ZENITY_ESC, zen_data); break; } - zenity_util_gapp_quit (GTK_WINDOW(widget)); + zenity_util_gapp_quit (GTK_WINDOW(widget), zen_data); } |