From de132bfcabbb4c65a250e1756b59706cebcc96bb Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Wed, 06 Aug 2008 17:35:22 +0000 Subject: Fix loading encrypted documents since I broke it with the jobs rework. 2008-08-06 Carlos Garcia Campos * 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 --- (limited to 'shell/ev-jobs.c') 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 @@ -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) -- cgit v0.9.1