diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2008-08-06 17:35:22 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2008-08-06 17:35:22 (GMT) |
commit | de132bfcabbb4c65a250e1756b59706cebcc96bb (patch) | |
tree | 9f626220c2d9eafde751afa5073e1b1fb15c56a3 /shell/ev-jobs.c | |
parent | c327927f8c38b40fd1c6ee2805595925d155132e (diff) |
Fix loading encrypted documents since I broke it with the jobs rework.
2008-08-06 Carlos Garcia Campos <carlosgc@gnome.org>
* shell/ev-jobs.[ch]: (ev_job_load_dispose), (ev_job_load_run),
(ev_job_load_set_password):
* shell/ev-password.[ch]: (ev_password_dialog_get_password):
* shell/ev-window.c: (password_dialog_response),
(ev_window_load_job_cb):
Fix loading encrypted documents since I broke it with the jobs
rework.
svn path=/trunk/; revision=3099
Diffstat (limited to 'shell/ev-jobs.c')
-rw-r--r-- | shell/ev-jobs.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index 7371dd1..dd8fb09 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -30,7 +30,7 @@ #include "ev-document-misc.h" #include "ev-file-helpers.h" #include "ev-document-fonts.h" -#include "ev-async-renderer.h" +#include "ev-document-security.h" #include "ev-debug.h" #include <errno.h> @@ -716,6 +716,11 @@ ev_job_load_dispose (GObject *object) job->uri = NULL; } + if (job->password) { + g_free (job->password); + job->password = NULL; + } + if (job->dest) { g_object_unref (job->dest); job->dest = NULL; @@ -740,11 +745,19 @@ ev_job_load_run (EvJob *job) ev_document_fc_mutex_lock (); - /* TODO: reuse the job!!! */ /* This job may already have a document even if the job didn't complete because, e.g., a password is required - if so, just reload rather than creating a new instance */ if (job->document) { + if (job_load->password) { + ev_document_security_set_password (EV_DOCUMENT_SECURITY (job->document), + job_load->password); + } + + job->failed = FALSE; + job->finished = FALSE; + g_clear_error (&job->error); + ev_document_load (job->document, job_load->uri, &error); @@ -805,6 +818,16 @@ ev_job_load_set_uri (EvJobLoad *job, const gchar *uri) job->uri = g_strdup (uri); } +void +ev_job_load_set_password (EvJobLoad *job, const gchar *password) +{ + ev_debug_message (DEBUG_JOBS, NULL); + + if (job->password) + g_free (job->password); + job->password = password ? g_strdup (password) : NULL; +} + /* EvJobSave */ static void ev_job_save_init (EvJobSave *job) |