diff options
author | Mickael Albertus <[email protected]> | 2018-02-03 11:20:16 +0100 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-03-22 13:30:20 +0100 |
commit | 9af37879b1d4c434d02ed0b7c7eb36f1128ace02 (patch) | |
tree | 7ddc1ca43802aa927de757c47dc75cf3c1292f89 /libview | |
parent | 83fa307fb17a629cb1fa96bf013da2588e40c9fa (diff) | |
download | atril-9af37879b1d4c434d02ed0b7c7eb36f1128ace02.tar.bz2 atril-9af37879b1d4c434d02ed0b7c7eb36f1128ace02.tar.xz |
epub: fix loading epub thumbnails
origin commit:
https://github.com/linuxmint/xreader/commit/6ed0ee1
Note: origin commit causes some serious build warnings,
......fixed.
Diffstat (limited to 'libview')
-rw-r--r-- | libview/ev-jobs.c | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/libview/ev-jobs.c b/libview/ev-jobs.c index a7ef8f13..353f3400 100644 --- a/libview/ev-jobs.c +++ b/libview/ev-jobs.c @@ -92,11 +92,6 @@ enum { FIND_LAST_SIGNAL }; -#if ENABLE_EPUB -static GtkWidget* webview; -static GtkWidget* offscreenwindow; -#endif - static guint job_signals[LAST_SIGNAL] = { 0 }; static guint job_fonts_signals[FONTS_LAST_SIGNAL] = { 0 }; static guint job_find_signals[FIND_LAST_SIGNAL] = { 0 }; @@ -859,8 +854,12 @@ snapshot_callback(WebKitWebView *webview, ev_document_doc_mutex_unlock (); ev_job_succeeded (EV_JOB(job_thumb)); + + gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (webview))); } +#endif /* ENABLE_EPUB */ + static void web_thumbnail_get_screenshot_cb (WebKitWebView *webview, WebKitLoadEvent event, @@ -888,9 +887,10 @@ webview_load_failed_cb (WebKitWebView *webview, GError *e = (GError *) error; g_warning ("Error loading data from %s: %s", failing_uri, e->message); ev_job_failed_from_error (EV_JOB(job_thumb), e); + + gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (webview))); return TRUE; } -#endif /* ENABLE_EPUB */ static gboolean ev_job_thumbnail_run (EvJob *job) @@ -921,24 +921,23 @@ ev_job_thumbnail_run (EvJob *job) #if ENABLE_EPUB if (job->document->iswebdocument == TRUE) { - if (!webview) { - webview = webkit_web_view_new(); - g_signal_connect(WEBKIT_WEB_VIEW(webview),"load-changed", - G_CALLBACK(web_thumbnail_get_screenshot_cb), - g_object_ref (job_thumb)); - g_signal_connect(WEBKIT_WEB_VIEW(webview),"load-failed", - G_CALLBACK(webview_load_failed_cb), - g_object_ref (job_thumb)); - } - - if (!offscreenwindow) { - offscreenwindow = gtk_offscreen_window_new(); - gtk_container_add(GTK_CONTAINER(offscreenwindow),GTK_WIDGET(webview)); - gtk_window_set_default_size (GTK_WINDOW(offscreenwindow),800,1080); - gtk_widget_show_all(offscreenwindow); - } - - webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview),(gchar*)rc->page->backend_page); + GtkWidget *webview; + GtkWidget *offscreenwindow; + + webview = webkit_web_view_new (); + offscreenwindow = gtk_offscreen_window_new (); + + gtk_container_add (GTK_CONTAINER(offscreenwindow), GTK_WIDGET (webview)); + gtk_window_set_default_size (GTK_WINDOW(offscreenwindow), 800, 1080); + gtk_widget_show_all (offscreenwindow); + + g_signal_connect (WEBKIT_WEB_VIEW (webview), "load-changed", + G_CALLBACK (web_thumbnail_get_screenshot_cb), + g_object_ref (job_thumb)); + g_signal_connect (WEBKIT_WEB_VIEW(webview), "load-failed", + G_CALLBACK(webview_load_failed_cb), + g_object_ref (job_thumb)); + webkit_web_view_load_uri (WEBKIT_WEB_VIEW (webview), (gchar*) rc->page->backend_page); } else #endif /* ENABLE_EPUB */ |