diff options
| author | mbkma <[email protected]> | 2026-04-09 23:32:00 +0200 |
|---|---|---|
| committer | mbkma <[email protected]> | 2026-05-05 19:18:11 +0200 |
| commit | 65eed3318f5e5c00d4333f603eadb928b8157744 (patch) | |
| tree | 457526d58ac5bf3f7818ae6979c8da3ead88e567 | |
| parent | 406deda20c59e7f52ddbcdf10b2374d1f7d350d0 (diff) | |
| download | atril-sign.tar.bz2 atril-sign.tar.xz | |
only ask for nssdb pwd when neededsign
| -rw-r--r-- | shell/ev-window.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c index 78ecfa73..c620f745 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -546,8 +546,7 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window) /* Digital signing */ ev_window_set_action_sensitive (ev_window, "DigitalSigning", - has_pages && EV_IS_DOCUMENT_SIGNATURES (document) && - ev_document_signatures_can_sign (EV_DOCUMENT_SIGNATURES (document))); + has_pages && EV_IS_DOCUMENT_SIGNATURES (document)); /* Toolbar-specific actions: */ ev_window_set_action_sensitive (ev_window, PAGE_SELECTOR_ACTION, has_pages); @@ -852,6 +851,9 @@ ev_window_set_message_area (EvWindow *window, (gpointer) &(window->priv->message_area)); } +static gchar *nss_password_cache = NULL; +static gboolean nss_prompting_enabled = FALSE; + static void ev_window_message_area_response_cb (EvMessageArea *area, gint response_id, @@ -859,6 +861,7 @@ ev_window_message_area_response_cb (EvMessageArea *area, { if (window->priv->view) ev_view_cancel_signature_rect (EV_VIEW (window->priv->view)); + nss_prompting_enabled = FALSE; ev_window_set_message_area (window, NULL); } @@ -940,8 +943,10 @@ ev_window_show_signature_message (EvWindow *window) !EV_IS_DOCUMENT_SIGNATURES (window->priv->document)) return; + nss_prompting_enabled = TRUE; state = ev_document_signatures_get_signature_state (EV_DOCUMENT_SIGNATURES (window->priv->document), &n_signatures); + nss_prompting_enabled = FALSE; if (state == EV_DOCUMENT_SIGNATURE_STATE_NONE || n_signatures == 0) return; @@ -3440,8 +3445,6 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window) gtk_widget_show (fc); } -static gchar *nss_password_cache = NULL; - static char * ev_window_signature_password_callback (const char *text) { @@ -3464,6 +3467,9 @@ ev_window_signature_password_callback (const char *text) } } + if (!nss_prompting_enabled) + return NULL; + parent = gtk_application_get_active_window (GTK_APPLICATION (g_application_get_default ())); dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Enter password")); @@ -3514,6 +3520,7 @@ on_document_signed (GObject *source_object, g_error_free (error); if (save_data->temporary_filename) g_unlink (save_data->temporary_filename); + nss_prompting_enabled = FALSE; ev_signed_file_save_data_free (save_data); return; } @@ -3526,12 +3533,14 @@ on_document_signed (GObject *source_object, ev_window_error_message (save_data->window, error, "%s", _("Failed to sign document")); g_error_free (error); g_unlink (save_data->temporary_filename); + nss_prompting_enabled = FALSE; ev_signed_file_save_data_free (save_data); return; } uri = g_filename_to_uri (file, NULL, NULL); if (!uri) { + nss_prompting_enabled = FALSE; ev_signed_file_save_data_free (save_data); return; } @@ -3540,6 +3549,7 @@ on_document_signed (GObject *source_object, ev_window_open_uri (EV_WINDOW (new_window), uri, NULL, EV_WINDOW_MODE_NORMAL, NULL); gtk_widget_show_all (new_window); g_free (uri); + nss_prompting_enabled = FALSE; ev_signed_file_save_data_free (save_data); } @@ -3639,6 +3649,7 @@ ev_window_on_save_signed_file_response (GtkWidget *dialog, ev_window_certificate_save_file (window, priv->signature_certificate_info, filename); g_free (filename); } else { + nss_prompting_enabled = FALSE; g_clear_pointer (&priv->signature_certificate_info, ev_certificate_info_free); } @@ -3686,6 +3697,7 @@ ev_window_certificate_selection_response (GtkWidget *dialog, if (response != GTK_RESPONSE_OK) { priv->certificate_listbox = NULL; + nss_prompting_enabled = FALSE; gtk_widget_destroy (dialog); return; } @@ -3830,6 +3842,8 @@ ev_window_cmd_digital_signing (GtkAction *action, EvWindowPrivate *priv = ev_window->priv; GtkWidget *area; + nss_prompting_enabled = TRUE; + area = ev_message_area_new (GTK_MESSAGE_INFO, _("Draw a rectangle to insert a signature field"), "gtk-close", GTK_RESPONSE_CLOSE, |
