[evince] Make EvPageActionWidget work when the document model already has a document when it's set
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Make EvPageActionWidget work when the document model already has a document when it's set
- Date: Sun, 22 Jun 2014 10:23:21 +0000 (UTC)
commit 94d08928cb942c81f3f3bc01f0fc6649691e9d32
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Sun Jun 22 11:47:11 2014 +0200
Make EvPageActionWidget work when the document model already has a document when it's set
libmisc/ev-page-action-widget.c | 58 ++++++++++++++++++++++-----------------
1 files changed, 33 insertions(+), 25 deletions(-)
---
diff --git a/libmisc/ev-page-action-widget.c b/libmisc/ev-page-action-widget.c
index a5410e5..1839ee9 100644
--- a/libmisc/ev-page-action-widget.c
+++ b/libmisc/ev-page-action-widget.c
@@ -250,35 +250,45 @@ ev_page_action_widget_init (EvPageActionWidget *action_widget)
}
static void
-ev_page_action_widget_document_changed_cb (EvDocumentModel *model,
- GParamSpec *pspec,
- EvPageActionWidget *action_widget)
+ev_page_action_widget_set_document (EvPageActionWidget *action_widget,
+ EvDocument *document)
{
- EvDocument *document = ev_document_model_get_document (model);
-
- g_object_ref (document);
- if (action_widget->document)
- g_object_unref (action_widget->document);
- action_widget->document = document;
-
- gtk_widget_set_sensitive (GTK_WIDGET (action_widget), ev_document_get_n_pages (document) > 0);
-
- if (action_widget->signal_id > 0) {
- g_signal_handler_disconnect (action_widget->doc_model,
- action_widget->signal_id);
- action_widget->signal_id = 0;
- }
- action_widget->signal_id =
- g_signal_connect (action_widget->doc_model,
+ if (document) {
+ g_object_ref (document);
+ gtk_widget_set_sensitive (GTK_WIDGET (action_widget), ev_document_get_n_pages (document) >
0);
+ }
+
+ if (action_widget->signal_id > 0) {
+ g_signal_handler_disconnect (action_widget->doc_model,
+ action_widget->signal_id);
+ action_widget->signal_id = 0;
+ }
+
+ if (action_widget->document)
+ g_object_unref (action_widget->document);
+ action_widget->document = document;
+ if (!action_widget->document)
+ return;
+
+ action_widget->signal_id =
+ g_signal_connect (action_widget->doc_model,
"page-changed",
G_CALLBACK (page_changed_cb),
action_widget);
- ev_page_action_widget_set_current_page (action_widget,
- ev_document_model_get_page (model));
+ ev_page_action_widget_set_current_page (action_widget,
+ ev_document_model_get_page (action_widget->doc_model));
ev_page_action_widget_update_max_width (action_widget);
}
+static void
+ev_page_action_widget_document_changed_cb (EvDocumentModel *model,
+ GParamSpec *pspec,
+ EvPageActionWidget *action_widget)
+{
+ ev_page_action_widget_set_document (action_widget, ev_document_model_get_document (model));
+}
+
void
ev_page_action_widget_set_model (EvPageActionWidget *action_widget,
EvDocumentModel *model)
@@ -291,6 +301,7 @@ ev_page_action_widget_set_model (EvPageActionWidget *action_widget,
g_object_add_weak_pointer (G_OBJECT (model),
(gpointer)&action_widget->doc_model);
+ ev_page_action_widget_set_document (action_widget, ev_document_model_get_document (model));
g_signal_connect (model, "notify::document",
G_CALLBACK (ev_page_action_widget_document_changed_cb),
action_widget);
@@ -312,10 +323,7 @@ ev_page_action_widget_finalize (GObject *object)
action_widget->doc_model = NULL;
}
- if (action_widget->document) {
- g_object_unref (action_widget->document);
- action_widget->document = NULL;
- }
+ ev_page_action_widget_set_document (action_widget, NULL);
G_OBJECT_CLASS (ev_page_action_widget_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]