Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2006-05-27 11:25:00 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2006-05-27 11:25:00 (GMT)
commit872101b786854841e6b32cac322f08d3dde6b946 (patch)
tree7ae16f712381c39f962ee9c83ec6f43675bd282d
parent3975d110064cd88af69d393f956f8158aae1878f (diff)
Fix page-label command line option. Bug #342070.
* backend/ev-link-dest.c: (ev_link_dest_type_get_type), (ev_link_dest_get_page_label), (ev_link_dest_get_property), (ev_link_dest_set_property), (ev_link_dest_finalize), (ev_link_dest_class_init), (ev_link_dest_new_named), (ev_link_dest_new_page_label): * backend/ev-link-dest.h: * shell/ev-application.c: (ev_application_open_uri): * shell/ev-view.c: (goto_dest): * shell/ev-window.c: * shell/ev-window.h: Fix page-label command line option. Bug #342070.
-rw-r--r--ChangeLog15
-rw-r--r--backend/ev-link-dest.c40
-rw-r--r--backend/ev-link-dest.h3
-rw-r--r--shell/ev-application.c13
-rw-r--r--shell/ev-view.c3
-rw-r--r--shell/ev-window.c10
-rw-r--r--shell/ev-window.h2
7 files changed, 68 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 47e86c0..0e08e1b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-05-27 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * backend/ev-link-dest.c: (ev_link_dest_type_get_type),
+ (ev_link_dest_get_page_label), (ev_link_dest_get_property),
+ (ev_link_dest_set_property), (ev_link_dest_finalize),
+ (ev_link_dest_class_init), (ev_link_dest_new_named),
+ (ev_link_dest_new_page_label):
+ * backend/ev-link-dest.h:
+ * shell/ev-application.c: (ev_application_open_uri):
+ * shell/ev-view.c: (goto_dest):
+ * shell/ev-window.c:
+ * shell/ev-window.h:
+
+ Fix page-label command line option. Bug #342070.
+
2006-05-27 Ricardo Markiewicz <rmarkie@fi.uba.ar>
* shell/ev-view.c: (ev_view_expose_event), (draw_one_page):
diff --git a/backend/ev-link-dest.c b/backend/ev-link-dest.c
index 2fd2f4d..09f840a 100644
--- a/backend/ev-link-dest.c
+++ b/backend/ev-link-dest.c
@@ -29,7 +29,8 @@ enum {
PROP_BOTTOM,
PROP_RIGHT,
PROP_ZOOM,
- PROP_NAMED
+ PROP_NAMED,
+ PROP_PAGE_LABEL
};
struct _EvLinkDest {
@@ -51,6 +52,7 @@ struct _EvLinkDestPrivate {
double right;
double zoom;
gchar *named;
+ gchar *page_label;
};
G_DEFINE_TYPE (EvLinkDest, ev_link_dest, G_TYPE_OBJECT)
@@ -72,6 +74,7 @@ ev_link_dest_type_get_type (void)
{ EV_LINK_DEST_TYPE_FITV, "EV_LINK_DEST_TYPE_FITV", "fitv" },
{ EV_LINK_DEST_TYPE_FITR, "EV_LINK_DEST_TYPE_FITR", "fitr" },
{ EV_LINK_DEST_TYPE_NAMED, "EV_LINK_DEST_TYPE_NAMED", "named" },
+ { EV_LINK_DEST_TYPE_PAGE_LABEL, "EV_LINK_DEST_TYPE_PAGE_LABEL", "page_label" },
{ EV_LINK_DEST_TYPE_UNKNOWN, "EV_LINK_DEST_TYPE_UNKNOWN", "unknown" },
{ 0, NULL, NULL }
};
@@ -146,6 +149,14 @@ ev_link_dest_get_named_dest (EvLinkDest *self)
return self->priv->named;
}
+const gchar *
+ev_link_dest_get_page_label (EvLinkDest *self)
+{
+ g_return_val_if_fail (EV_IS_LINK_DEST (self), NULL);
+
+ return self->priv->page_label;
+}
+
static void
ev_link_dest_get_property (GObject *object,
guint prop_id,
@@ -181,6 +192,9 @@ ev_link_dest_get_property (GObject *object,
case PROP_NAMED:
g_value_set_string (value, self->priv->named);
break;
+ case PROP_PAGE_LABEL:
+ g_value_set_string (value, self->priv->page_label);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
prop_id,
@@ -222,6 +236,9 @@ ev_link_dest_set_property (GObject *object,
case PROP_NAMED:
self->priv->named = g_value_dup_string (value);
break;
+ case PROP_PAGE_LABEL:
+ self->priv->page_label = g_value_dup_string (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
prop_id,
@@ -241,6 +258,10 @@ ev_link_dest_finalize (GObject *object)
g_free (priv->named);
priv->named = NULL;
}
+ if (priv->page_label) {
+ g_free (priv->page_label);
+ priv->page_label = NULL;
+ }
G_OBJECT_CLASS (ev_link_dest_parent_class)->finalize (object);
}
@@ -345,6 +366,14 @@ ev_link_dest_class_init (EvLinkDestClass *ev_link_dest_class)
NULL,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_PAGE_LABEL,
+ g_param_spec_string ("page_label",
+ "Label of the page",
+ "The label of the destination page",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
}
EvLinkDest *
@@ -427,3 +456,12 @@ ev_link_dest_new_named (const gchar *named_dest)
"type", EV_LINK_DEST_TYPE_NAMED,
NULL));
}
+
+EvLinkDest *
+ev_link_dest_new_page_label (const gchar *page_label)
+{
+ return EV_LINK_DEST (g_object_new (EV_TYPE_LINK_DEST,
+ "page_label", page_label,
+ "type", EV_LINK_DEST_TYPE_PAGE_LABEL,
+ NULL));
+}
diff --git a/backend/ev-link-dest.h b/backend/ev-link-dest.h
index 40a8a9b..a0c96f5 100644
--- a/backend/ev-link-dest.h
+++ b/backend/ev-link-dest.h
@@ -46,6 +46,7 @@ typedef enum {
EV_LINK_DEST_TYPE_FITV,
EV_LINK_DEST_TYPE_FITR,
EV_LINK_DEST_TYPE_NAMED,
+ EV_LINK_DEST_TYPE_PAGE_LABEL,
EV_LINK_DEST_TYPE_UNKNOWN
} EvLinkDestType;
@@ -60,6 +61,7 @@ gdouble ev_link_dest_get_bottom (EvLinkDest *self);
gdouble ev_link_dest_get_right (EvLinkDest *self);
gdouble ev_link_dest_get_zoom (EvLinkDest *self);
const gchar *ev_link_dest_get_named_dest (EvLinkDest *self);
+const gchar *ev_link_dest_get_page_label (EvLinkDest *self);
EvLinkDest *ev_link_dest_new_page (gint page);
EvLinkDest *ev_link_dest_new_xyz (gint page,
@@ -77,6 +79,7 @@ EvLinkDest *ev_link_dest_new_fitr (gint page,
gdouble right,
gdouble top);
EvLinkDest *ev_link_dest_new_named (const gchar *named_dest);
+EvLinkDest *ev_link_dest_new_page_label (const gchar *page_label);
G_END_DECLS
diff --git a/shell/ev-application.c b/shell/ev-application.c
index 01bf5a2..381b4e3 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -278,13 +278,16 @@ ev_application_open_uri (EvApplication *application,
guint timestamp,
GError **error)
{
- ev_application_open_uri_at_dest (application, uri, NULL, timestamp);
if (page_label && strcmp (page_label, "") != 0) {
- EvWindow *window;
-
- window = ev_application_get_uri_window (application, uri);
- ev_window_open_page_label (window, page_label);
+ EvLinkDest *dest;
+
+ dest = ev_link_dest_new_page_label (page_label);
+
+ ev_application_open_uri_at_dest (application, uri, dest, timestamp);
+ g_object_unref (dest);
+ } else {
+ ev_application_open_uri_at_dest (application, uri, NULL, timestamp);
}
return TRUE;
diff --git a/shell/ev-view.c b/shell/ev-view.c
index d883ecf..32ba7c3 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -1237,6 +1237,9 @@ goto_dest (EvView *view, EvLinkDest *dest)
case EV_LINK_DEST_TYPE_XYZ:
goto_xyz_dest (view, dest);
break;
+ case EV_LINK_DEST_TYPE_PAGE_LABEL:
+ ev_page_cache_set_page_label (view->page_cache, ev_link_dest_get_page_label (dest));
+ break;
default:
g_assert_not_reached ();
}
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 29b6a03..1131b35 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -516,16 +516,6 @@ update_sizing_buttons (EvWindow *window)
}
}
-void
-ev_window_open_page_label (EvWindow *ev_window,
- const char *label)
-{
- if (ev_window->priv->page_cache) {
- ev_page_cache_set_page_label (ev_window->priv->page_cache,
- label);
- }
-}
-
gboolean
ev_window_is_empty (const EvWindow *ev_window)
{
diff --git a/shell/ev-window.h b/shell/ev-window.h
index 2551073..e54a62e 100644
--- a/shell/ev-window.h
+++ b/shell/ev-window.h
@@ -59,8 +59,6 @@ void ev_window_open_uri (EvWindow *ev_window,
EvLinkDest *dest);
void ev_window_goto_dest (EvWindow *ev_window,
EvLinkDest *dest);
-void ev_window_open_page_label (EvWindow *ev_window,
- const char *label);
gboolean ev_window_is_empty (const EvWindow *ev_window);
#ifdef WITH_GNOME_PRINT
void ev_window_print_range (EvWindow *ev_window,