From 1561766454d8a06d887da5c2955b8c4d1dddd9a3 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 14 Apr 2005 15:41:30 +0000 Subject: Fix the crash when trying to copy in backends that doesnt support it. We 2005-04-14 Marco Pesenti Gritti * backend/ev-document.h: * djvu/djvu-document.c: (djvu_document_can_get_text), (djvu_document_document_iface_init): * dvi/dvi-document.c: (dvi_document_can_get_text), (dvi_document_document_iface_init): * pdf/ev-poppler.cc: * pixbuf/pixbuf-document.c: (pixbuf_document_can_get_text), (pixbuf_document_document_iface_init): * ps/ps-document.c: (ps_document_can_get_text), (ps_document_document_iface_init): * shell/ev-view.c: (ev_view_copy), (ev_view_primary_get_cb): * shell/ev-window.c: (update_action_sensitivity): Fix the crash when trying to copy in backends that doesnt support it. We can implement a better solution once we do real text selection. --- (limited to 'shell') diff --git a/shell/ev-view.c b/shell/ev-view.c index 5678fc2..b615b6c 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -620,6 +620,10 @@ ev_view_copy (EvView *ev_view) GtkClipboard *clipboard; char *text; + if (!ev_document_can_get_text (ev_view->document)) { + return; + } + g_mutex_lock (EV_DOC_MUTEX); text = ev_document_get_text (ev_view->document, ev_view->current_page, @@ -641,6 +645,10 @@ ev_view_primary_get_cb (GtkClipboard *clipboard, EvView *ev_view = EV_VIEW (data); char *text; + if (!ev_document_can_get_text (ev_view->document)) { + return; + } + g_mutex_lock (EV_DOC_MUTEX); text = ev_document_get_text (ev_view->document, ev_view->current_page, diff --git a/shell/ev-window.c b/shell/ev-window.c index 734846f..4d03050 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -183,6 +183,7 @@ update_action_sensitivity (EvWindow *ev_window) EvDocument *document; EvWindowPageMode page_mode; EvView *view; + gboolean sensitive; document = ev_window->priv->document; page_mode = ev_window->priv->page_mode; @@ -195,8 +196,10 @@ update_action_sensitivity (EvWindow *ev_window) /* "FileCloseWindow": always sensitive */ /* Edit menu */ - set_action_sensitive (ev_window, "EditCopy", document!=NULL); - set_action_sensitive (ev_window, "EditSelectAll", document!=NULL); + + sensitive = document && ev_document_can_get_text (document); + set_action_sensitive (ev_window, "EditCopy", sensitive); + set_action_sensitive (ev_window, "EditSelectAll", sensitive); if (document) set_action_sensitive (ev_window, "EditFind", EV_IS_DOCUMENT_FIND (document)); -- cgit v0.9.1