X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Fev-link.c;h=ee54b2858800fc5d1248b65a1775465cb8826438;hb=efa870dac2fdad4dd736b16e79b3c8e4e33b6055;hp=e01aa1994faac78f5c6dc2c833547844842f702b;hpb=0a2a397faf5fe1fb1ac869b4db10b11ef07d1f3b;p=evince.git diff --git a/backend/ev-link.c b/backend/ev-link.c index e01aa199..ee54b285 100644 --- a/backend/ev-link.c +++ b/backend/ev-link.c @@ -32,6 +32,16 @@ enum { PROP_URI }; + +struct _EvLink { + GObject base_instance; + EvLinkPrivate *priv; +}; + +struct _EvLinkClass { + GObjectClass base_class; +}; + struct _EvLinkPrivate { char *title; char *uri; @@ -75,13 +85,14 @@ void ev_link_set_title (EvLink* self, const char *title) { g_assert (EV_IS_LINK (self)); - g_assert (title != NULL); if (self->priv->title != NULL) { g_free (self->priv->title); } - - self->priv->title = g_strdup (title); + if (title) + self->priv->title = g_strdup (title); + else + self->priv->title = NULL; g_object_notify (G_OBJECT (self), "title"); } @@ -270,7 +281,7 @@ ev_link_class_init (EvLinkClass *ev_window_class) g_param_spec_int ("page", "Link Page", "The link page", - 0, + -1, G_MAXINT, 0, G_PARAM_READWRITE)); @@ -304,3 +315,51 @@ ev_link_new_external (const char *title, const char *uri) "type", EV_LINK_TYPE_EXTERNAL_URI, NULL)); } + + + +static void +ev_link_mapping_free_foreach (EvLinkMapping *mapping) +{ + g_object_unref (G_OBJECT (mapping->link)); + g_free (mapping); +} + +void +ev_link_mapping_free (GList *link_mapping) +{ + if (link_mapping == NULL) + return; + + g_list_foreach (link_mapping, (GFunc) (ev_link_mapping_free_foreach), NULL); + g_list_free (link_mapping); +} + + +EvLink * +ev_link_mapping_find (GList *link_mapping, + gdouble x, + gdouble y) +{ + GList *list; + EvLink *link = NULL; + int i; + + i = 0; + + for (list = link_mapping; list; list = list->next) { + EvLinkMapping *mapping = list->data; + + i++; + if ((x >= mapping->x1) && + (y >= mapping->y1) && + (x <= mapping->x2) && + (y <= mapping->y2)) { + link = mapping->link; + break; + } + } + + return link; +} +