summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrootavish <[email protected]>2014-08-09 20:48:25 +0530
committerrootavish <[email protected]>2014-08-09 20:48:25 +0530
commit3a013d3b19c5a81372560e735cf6f9f5c3ebdd37 (patch)
treeec2b0c0265a8435bda737439d7923878f763afe5
parentff0a79e545356046c7145bff0630a7cd50ad977c (diff)
downloadatril-3a013d3b19c5a81372560e735cf6f9f5c3ebdd37.tar.bz2
atril-3a013d3b19c5a81372560e735cf6f9f5c3ebdd37.tar.xz
GTK3, Webkit2 support for epub
I added the code to make it possible to build Atril with GTK3 and webkit2. Everything runs fine with both GTK3 and GTK2. The find module for epub was also tested and changed. Now I shall first attempt to fix some Glib errors, and the problem of the temporary directory not getting deleted, that arose when I stabilized the thumbnails.
-rw-r--r--backend/epub/epub-document.c5
-rw-r--r--libview/ev-jobs.c53
-rw-r--r--libview/ev-web-view.c235
-rw-r--r--shell/ev-window.c35
4 files changed, 289 insertions, 39 deletions
diff --git a/backend/epub/epub-document.c b/backend/epub/epub-document.c
index 3a574151..d0dce118 100644
--- a/backend/epub/epub-document.c
+++ b/backend/epub/epub-document.c
@@ -1198,6 +1198,7 @@ epub_document_get_info(EvDocument *document)
EV_DOCUMENT_INFO_LAYOUT |
EV_DOCUMENT_INFO_CREATOR |
EV_DOCUMENT_INFO_LINEARIZED |
+ EV_DOCUMENT_INFO_PERMISSIONS |
EV_DOCUMENT_INFO_N_PAGES ;
infofile = g_filename_from_uri(uri,NULL,&error);
@@ -1242,7 +1243,9 @@ epub_document_get_info(EvDocument *document)
/* number of pages */
epubinfo->n_pages = epub_document_get_n_pages(document);
-
+
+ /*Copying*/
+ epubinfo->permissions = EV_DOCUMENT_PERMISSIONS_OK_TO_COPY;
/*TODO : Add a function to get date*/
g_free(uri);
g_string_free(containerpath,TRUE);
diff --git a/libview/ev-jobs.c b/libview/ev-jobs.c
index e7f0ba35..b5a147f1 100644
--- a/libview/ev-jobs.c
+++ b/libview/ev-jobs.c
@@ -790,6 +790,7 @@ ev_job_thumbnail_dispose (GObject *object)
(* G_OBJECT_CLASS (ev_job_thumbnail_parent_class)->dispose) (object);
}
+#if !GTK_CHECK_VERSION(3, 0, 0)
static void
web_thumbnail_get_screenshot_cb(WebKitWebView *webview,
WebKitWebFrame *webframe,
@@ -815,6 +816,50 @@ web_thumbnail_get_screenshot_cb(WebKitWebView *webview,
ev_document_doc_mutex_unlock();
ev_job_succeeded(EV_JOB(job_thumb));
}
+#else
+
+static void
+snapshot_callback(WebKitWebView *webview,
+ GAsyncResult *results,
+ EvJobThumbnail *job_thumb)
+{
+ EvPage *page = ev_document_get_page (EV_JOB(job_thumb)->document, job_thumb->page);
+ job_thumb->surface = webkit_web_view_get_snapshot_finish (webview,
+ results,
+ NULL);
+ EvRenderContext *rc = ev_render_context_new (page, job_thumb->rotation, job_thumb->scale);
+ EvPage *screenshotpage;
+ screenshotpage = ev_page_new(job_thumb->page);
+ screenshotpage->backend_page = (EvBackendPage)job_thumb->surface;
+ screenshotpage->backend_destroy_func = (EvBackendPageDestroyFunc)cairo_surface_destroy ;
+ ev_render_context_set_page(rc,screenshotpage);
+
+ job_thumb->thumbnail = ev_document_thumbnails_get_thumbnail (EV_DOCUMENT_THUMBNAILS (EV_JOB(job_thumb)->document),
+ rc, TRUE);
+ g_object_unref(screenshotpage);
+ g_object_unref(rc);
+
+ ev_document_doc_mutex_unlock();
+ ev_job_succeeded(EV_JOB(job_thumb));
+}
+
+static void
+web_thumbnail_get_screenshot_cb (WebKitWebView *webview,
+ WebKitLoadEvent event,
+ EvJobThumbnail *job_thumb)
+{
+ if (event != WEBKIT_LOAD_FINISHED) {
+ return;
+ }
+
+ webkit_web_view_get_snapshot (webview,
+ WEBKIT_SNAPSHOT_REGION_VISIBLE,
+ WEBKIT_SNAPSHOT_OPTIONS_NONE,
+ NULL,
+ (GAsyncReadyCallback)snapshot_callback,
+ g_object_ref(job_thumb));
+}
+#endif
static gboolean
ev_job_thumbnail_run (EvJob *job)
@@ -859,9 +904,17 @@ ev_job_thumbnail_run (EvJob *job)
}
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview),(gchar*)rc->page->backend_page);
+#if !GTK_CHECK_VERSION (3, 0, 0)
g_signal_connect(WEBKIT_WEB_VIEW(webview),"notify::load-status",
G_CALLBACK(web_thumbnail_get_screenshot_cb),
g_object_ref(job_thumb));
+#else
+ g_signal_connect(WEBKIT_WEB_VIEW(webview),"load-changed",
+ G_CALLBACK(web_thumbnail_get_screenshot_cb),
+ g_object_ref(job_thumb));
+
+#endif
+ g_object_unref(job_thumb);
}
else {
job_thumb->thumbnail = ev_document_thumbnails_get_thumbnail (EV_DOCUMENT_THUMBNAILS (job->document),
diff --git a/libview/ev-web-view.c b/libview/ev-web-view.c
index e6bef75a..f88dd84a 100644
--- a/libview/ev-web-view.c
+++ b/libview/ev-web-view.c
@@ -44,12 +44,11 @@
typedef struct _SearchParams {
gboolean case_sensitive;
- gboolean search_jump;
gchar* search_string;
+ EvWebViewFindDirection direction;
+ gboolean search_jump;
gint on_result;
- guint n_results;
guint *results;
- EvWebViewFindDirection direction;
}SearchParams;
struct _EvWebView
@@ -61,6 +60,11 @@ struct _EvWebView
gboolean inverted_colors ;
gboolean fullscreen;
SearchParams *search;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ WebKitFindController *findcontroller;
+ WebKitFindOptions findoptions;
+ gdouble zoom_level;
+#endif
gchar *hlink;
};
@@ -141,16 +145,16 @@ ev_web_view_init (EvWebView *webview)
gtk_widget_set_can_focus (GTK_WIDGET (webview), TRUE);
gtk_widget_set_has_window (GTK_WIDGET (webview), TRUE);
-
+
webview->current_page = 0;
webview->search = g_new0(SearchParams, 1);
webview->search->search_string = NULL;
+
webview->search->on_result = -1 ;
- webview->search->n_results = 0;
webview->search->results = NULL;
webview->search->search_jump = TRUE ;
-
+
webview->fullscreen = FALSE;
webview->hlink = NULL;
@@ -174,8 +178,11 @@ ev_web_view_change_page (EvWebView *webview,
webview->current_page = new_page;
ev_document_model_set_page(webview->model,new_page);
-
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_find_controller_search_finish(webview->findcontroller);
+#else
webkit_web_view_unmark_text_matches (WEBKIT_WEB_VIEW(webview));
+#endif
if (webview->hlink) {
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview),(gchar*)webview->hlink);
g_free(webview->hlink);
@@ -209,7 +216,16 @@ ev_web_view_new (void)
GtkWidget *webview;
webview = g_object_new (EV_TYPE_WEB_VIEW, NULL);
-
+
+ #if GTK_CHECK_VERSION (3, 0, 0)
+ EV_WEB_VIEW(webview)->findcontroller = webkit_web_view_get_find_controller (WEBKIT_WEB_VIEW(webview));
+ EV_WEB_VIEW(webview)->findoptions = webkit_find_controller_get_options (EV_WEB_VIEW(webview)->findcontroller);
+
+ EV_WEB_VIEW(webview)->zoom_level = 1.0;
+
+ EV_WEB_VIEW(webview)->findoptions |= WEBKIT_FIND_OPTIONS_NONE;
+ #endif
+
return webview;
}
@@ -417,8 +433,10 @@ ev_web_view_handle_link(EvWebView *webview,EvLink *link)
/* Searching */
+#if !GTK_CHECK_VERSION (3, 0, 0)
static void
-jump_to_find_result_on_page(EvWebView *webview,EvWebViewFindDirection direction)
+jump_to_find_result_on_page(EvWebView *webview,
+ EvWebViewFindDirection direction)
{
gboolean forward,wrap;
@@ -431,6 +449,9 @@ jump_to_find_result_on_page(EvWebView *webview,EvWebViewFindDirection direction)
wrap = FALSE;
}
+ if (webview->search->search_jump) {
+ wrap = TRUE;
+ }
webkit_web_view_search_text (WEBKIT_WEB_VIEW(webview),
webview->search->search_string,
webview->search->case_sensitive,
@@ -439,24 +460,70 @@ jump_to_find_result_on_page(EvWebView *webview,EvWebViewFindDirection direction)
webview->search->search_jump = FALSE;
}
+#endif
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void
+results_counted_cb(WebKitFindController *findcontroller,
+ guint match_count,
+ EvWebView *webview)
+{
+ if (match_count > 0 && webview->search->on_result < match_count) {
+ webkit_find_controller_search(findcontroller,
+ webview->search->search_string,
+ webview->findoptions,
+ match_count);
+ webview->search->search_jump = FALSE;
+ }
+}
+#endif
+/*
+ * Jump to find results once we have changed the page in the webview.
+ */
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void
+jump_to_find_results(EvWebView *webview,
+ WebKitLoadEvent load_event,
+ gpointer data)
+#else
static void
jump_to_find_results(EvWebView *webview,
GParamSpec *pspec,
gpointer data)
+#endif
{
+ #if !GTK_CHECK_VERSION (3, 0, 0)
gint n_results;
gboolean forward ;
gboolean wrap ;
-
+
if (webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(webview)) != WEBKIT_LOAD_FINISHED) {
return;
}
-
+#else
+ if ( load_event != WEBKIT_LOAD_FINISHED) {
+ return;
+ }
+#endif
if (!webview->search->search_string) {
return;
}
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (webview->search->direction == EV_WEB_VIEW_FIND_NEXT) {
+ webview->findoptions &= ~WEBKIT_FIND_OPTIONS_BACKWARDS;
+ webview->findoptions &= ~WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+ }
+ else {
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_BACKWARDS;
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+ }
+
+ webkit_find_controller_count_matches (webview->findcontroller,
+ webview->search->search_string,
+ webview->findoptions,
+ G_MAXUINT);
+#else
n_results = webkit_web_view_mark_text_matches (WEBKIT_WEB_VIEW(webview),
webview->search->search_string,
webview->search->case_sensitive,
@@ -482,6 +549,8 @@ jump_to_find_results(EvWebView *webview,
webview->search->search_jump = FALSE;
}
+#endif
+ webview->search->search_jump = FALSE;
}
static gint
@@ -520,15 +589,41 @@ jump_to_find_page (EvWebView *webview, EvWebViewFindDirection direction, gint sh
} else if (page < 0)
page = page + n_pages;
- if (page == webview->current_page && ev_web_view_find_get_n_results(webview,page) > 0) {
+ if (page == webview->current_page && ev_web_view_find_get_n_results(webview,page) > 0) {
+#if !GTK_CHECK_VERSION (3, 0, 0)
jump_to_find_result_on_page(webview,EV_WEB_VIEW_FIND_NEXT);
+#else
+ if (direction == EV_WEB_VIEW_FIND_PREV) {
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_BACKWARDS;
+ }
+ else {
+ if (webview->search->search_jump)
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+ else
+ webview->findoptions &= ~WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+
+ webview->findoptions &= ~WEBKIT_FIND_OPTIONS_BACKWARDS;
+ }
+
+ webkit_find_controller_search (webview->findcontroller,
+ webview->search->search_string,
+ webview->findoptions,
+ /*Highlight all the results.*/
+ G_MAXUINT);
+ webview->search->search_jump = FALSE;
+#endif
break;
}
if (ev_web_view_find_get_n_results (webview, page) > 0) {
+ webview->search->direction = direction;
+#if !GTK_CHECK_VERSION (3, 0, 0)
webkit_web_view_unmark_text_matches (WEBKIT_WEB_VIEW(webview));
+#else
+ webkit_find_controller_search_finish(webview->findcontroller);
+#endif
ev_document_model_set_page (webview->model, page);
- webview->search->direction = direction;
break;
}
}
@@ -537,11 +632,19 @@ jump_to_find_page (EvWebView *webview, EvWebViewFindDirection direction, gint sh
void
ev_web_view_find_changed (EvWebView *webview, guint *results, gchar *text,gboolean case_sensitive)
{
- webview->search->results = results;
+ webview->search->results = results;
+ webview->search->on_result = 0;
webview->search->search_string = g_strdup(text);
webview->search->case_sensitive = case_sensitive;
- webview->search->on_result = 0;
- if (webview->search->search_jump == TRUE) {
+ if (webview->search->search_jump == TRUE) {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (!case_sensitive) {
+ webview->findoptions |= WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE;
+ }
+ else {
+ webview->findoptions &= ~WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE;
+ }
+#endif
jump_to_find_page (webview, EV_WEB_VIEW_FIND_NEXT, 0);
}
}
@@ -559,7 +662,11 @@ ev_web_view_find_next (EvWebView *webview)
jump_to_find_page (webview, EV_WEB_VIEW_FIND_NEXT, 1);
}
else {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_find_controller_search_next(webview->findcontroller);
+#else
jump_to_find_result_on_page (webview, EV_WEB_VIEW_FIND_NEXT);
+#endif
}
}
@@ -572,7 +679,11 @@ ev_web_view_find_previous (EvWebView *webview)
jump_to_find_page (webview, EV_WEB_VIEW_FIND_PREV, -1);
webview->search->on_result = MAX (0, ev_web_view_find_get_n_results (webview, webview->current_page) - 1);
} else {
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_find_controller_search_previous(webview->findcontroller);
+#else
jump_to_find_result_on_page (webview,EV_WEB_VIEW_FIND_PREV);
+#endif
}
}
@@ -580,68 +691,127 @@ void
ev_web_view_find_search_changed (EvWebView *webview)
{
/* search string has changed, focus on new search result */
+#if !GTK_CHECK_VERSION(3, 0, 0)
webkit_web_view_unmark_text_matches(WEBKIT_WEB_VIEW(webview));
-
- webview->search->search_jump = TRUE;
-
+#endif
if (webview->search->search_string) {
g_free(webview->search->search_string);
webview->search->search_string = NULL;
}
+#if GTK_CHECK_VERSION(3, 0, 0)
+ webkit_find_controller_search_finish(webview->findcontroller);
+#endif
+
+ webview->search->search_jump = TRUE;
}
+#if !GTK_CHECK_VERSION (3, 0, 0)
void
ev_web_view_find_set_highlight_search (EvWebView *webview, gboolean value)
{
webkit_web_view_set_highlight_text_matches (WEBKIT_WEB_VIEW(webview),value);
}
+#endif
void
ev_web_view_find_cancel (EvWebView *webview)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_find_controller_search_finish (webview->findcontroller);
+#else
webkit_web_view_unmark_text_matches(WEBKIT_WEB_VIEW(webview));
ev_web_view_find_set_highlight_search(webview,FALSE);
+#endif
}
+
void
ev_web_view_set_handler(EvWebView *webview,gboolean visible)
{
if (visible) {
g_signal_connect(webview,
+#if GTK_CHECK_VERSION (3, 0, 0)
+ "load-changed",
+#else
"notify::load-status",
+#endif
G_CALLBACK(jump_to_find_results),
NULL);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ g_signal_connect(webview->findcontroller,
+ "counted-matches",
+ G_CALLBACK(results_counted_cb),
+ webview);
+#endif
}
else {
g_signal_handlers_disconnect_by_func(webview,
jump_to_find_results,
NULL);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ g_signal_handlers_disconnect_by_func(webview,
+ results_counted_cb,
+ NULL);
+#endif
}
}
-/* Selection */
+/* Selection and copying*/
+#if !GTK_CHECK_VERSION (3, 0, 0)
gboolean
ev_web_view_get_has_selection(EvWebView *webview)
{
return webkit_web_view_has_selection(WEBKIT_WEB_VIEW(webview));
}
+#endif
void
ev_web_view_select_all(EvWebView *webview)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_web_view_execute_editing_command(WEBKIT_WEB_VIEW(webview),
+ WEBKIT_EDITING_COMMAND_SELECT_ALL);
+#else
webkit_web_view_select_all(WEBKIT_WEB_VIEW(webview));
+#endif
+}
+
+#if GTK_CHECK_VERSION (3, 0, 0)
+static void
+copy_text_cb(WebKitWebView *webview,
+ GAsyncResult *res,
+ gpointer data)
+{
+ gboolean okay_to_copy = webkit_web_view_can_execute_editing_command_finish (WEBKIT_WEB_VIEW(webview),
+ res,
+ NULL);
+
+ if (okay_to_copy) {
+ webkit_web_view_execute_editing_command (WEBKIT_WEB_VIEW(webview),
+ WEBKIT_EDITING_COMMAND_COPY);
+ }
}
+#endif
void
ev_web_view_copy(EvWebView *webview)
{
- /* If for some reason we don't have a selection any longer,best to be safe*/
- if (ev_web_view_get_has_selection(webview) == FALSE)
- return;
- if (webkit_web_view_can_copy_clipboard(WEBKIT_WEB_VIEW(webview))) {
- webkit_web_view_copy_clipboard(WEBKIT_WEB_VIEW(webview));
- }
+#if !GTK_CHECK_VERSION (3, 0, 0)
+ /* If for some reason we don't have a selection any longer,best to be safe */
+ if (ev_web_view_get_has_selection(webview) == FALSE)
+ return;
+ if (webkit_web_view_can_copy_clipboard(WEBKIT_WEB_VIEW(webview))) {
+ webkit_web_view_copy_clipboard(WEBKIT_WEB_VIEW(webview));
+ }
+#else
+ webkit_web_view_can_execute_editing_command(WEBKIT_WEB_VIEW(webview),
+ WEBKIT_EDITING_COMMAND_COPY,
+ NULL,
+ (GAsyncReadyCallback)copy_text_cb,
+ NULL);
+
+#endif
}
@@ -649,13 +819,26 @@ ev_web_view_copy(EvWebView *webview)
gboolean
ev_web_view_zoom_in(EvWebView *webview)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW(webview),
+ (webview->zoom_level+= 0.1));
+#else
webkit_web_view_zoom_in(WEBKIT_WEB_VIEW(webview));
+#endif
return TRUE;
}
gboolean
ev_web_view_zoom_out(EvWebView *webview)
{
+#if GTK_CHECK_VERSION (3, 0, 0)
+ if (webview->zoom_level == 1)
+ return FALSE;
+
+ webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW(webview),
+ (webview->zoom_level -= 0.1));
+#else
webkit_web_view_zoom_out(WEBKIT_WEB_VIEW(webview));
+#endif
return TRUE;
} \ No newline at end of file
diff --git a/shell/ev-window.c b/shell/ev-window.c
index aab14229..bb870976 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -504,11 +504,23 @@ ev_window_update_actions (EvWindow *ev_window)
has_pages &&
ev_view_get_has_selection (view));
}
+#if GTK_CHECK_VERSION (3, 0, 0)
+ else if (webview) {
+ /*
+ * The webkit2 function for this is an asynchronous call,
+ * so our only option is to set this to always on, and we'll take care of whether we can copy
+ * or not when this command is actually given.
+ */
+ ev_window_set_action_sensitive (ev_window,"EditCopy",
+ has_pages);
+ }
+#else
else if(webview) {
ev_window_set_action_sensitive (ev_window, "EditCopy",
has_pages &&
ev_web_view_get_has_selection (webview));
}
+#endif
ev_window_set_action_sensitive (ev_window, "EditFindNext",
has_pages && can_find_in_page);
ev_window_set_action_sensitive (ev_window, "EditFindPrevious",
@@ -928,7 +940,7 @@ view_selection_changed_cb (EvView *view,
ev_window_set_action_sensitive (window, "EditCopy",
ev_view_get_has_selection (view));
}
-
+#if !GTK_CHECK_VERSION (3, 0, 0)
static void
web_view_selection_changed_cb(EvWebView *webview,
EvWindow *window)
@@ -936,6 +948,7 @@ web_view_selection_changed_cb(EvWebView *webview,
ev_window_set_action_sensitive (window,"EditCopy",
ev_web_view_get_has_selection(webview));
}
+#endif
static void
ev_window_page_changed_cb (EvWindow *ev_window,
@@ -1489,6 +1502,7 @@ ev_window_set_document (EvWindow *ev_window, EvDocument *document)
/*We have encountered a web document, replace the atril view with a web view, if the web view is not already loaded.*/
gtk_container_remove (GTK_CONTAINER(ev_window->priv->scrolled_window),
ev_window->priv->view);
+
g_object_unref(ev_window->priv->view);
ev_window->priv->view = NULL;
gtk_container_add (GTK_CONTAINER (ev_window->priv->scrolled_window),
@@ -5201,7 +5215,9 @@ find_bar_visibility_changed_cb (EggFindBar *find_bar,
ev_view_find_search_changed (EV_VIEW (ev_window->priv->view));
}
else {
+#if !GTK_CHECK_VERSION(3, 0, 0)
ev_web_view_find_set_highlight_search(EV_WEB_VIEW(ev_window->priv->webview),visible);
+#endif
ev_web_view_find_search_changed(EV_WEB_VIEW(ev_window->priv->webview));
ev_web_view_set_handler(EV_WEB_VIEW(ev_window->priv->webview),visible);
}
@@ -5593,15 +5609,7 @@ ev_window_key_press_event (GtkWidget *widget,
* It's needed to be able to type in
* annot popups windows
*/
- if (priv->webview && priv->document && priv->document->iswebdocument == TRUE) {
- g_object_ref (priv->webview);
- if (gtk_widget_is_sensitive (priv->webview))
- handled = gtk_widget_event (priv->webview, (GdkEvent*) event);
- g_object_unref (priv->webview);
-
- }
-
- else if ( priv->view) {
+ if ( priv->view) {
g_object_ref (priv->view);
if (gtk_widget_is_sensitive (priv->view))
handled = gtk_widget_event (priv->view, (GdkEvent*) event);
@@ -5871,7 +5879,9 @@ sidebar_links_link_activated_cb (EvSidebarLinks *sidebar_links, EvLink *link, Ev
if (window->priv->document->iswebdocument == FALSE ) {
ev_view_handle_link (EV_VIEW (window->priv->view), link);
}
- ev_web_view_handle_link(EV_WEB_VIEW(window->priv->webview), link);
+ else {
+ ev_web_view_handle_link(EV_WEB_VIEW(window->priv->webview), link);
+ }
}
static void
@@ -7229,11 +7239,12 @@ ev_window_init (EvWindow *ev_window)
#ifdef ENABLE_EPUB /*The webview, we won't add it now but it will replace the atril-view if a web(epub) document is encountered.*/
ev_window->priv->webview = ev_web_view_new();
ev_web_view_set_model(EV_WEB_VIEW(ev_window->priv->webview),ev_window->priv->model);
-
+#if !GTK_CHECK_VERSION (3, 0, 0)
g_signal_connect_object (ev_window->priv->webview,"selection-changed",
G_CALLBACK(web_view_selection_changed_cb),
ev_window, 0);
#endif
+#endif
ev_view_set_page_cache_size (EV_VIEW (ev_window->priv->view), PAGE_CACHE_SIZE);
ev_view_set_model (EV_VIEW (ev_window->priv->view), ev_window->priv->model);