From 7d2265c294f9cfcbbc48b530896e807aa0e21f71 Mon Sep 17 00:00:00 2001 From: Moritz Lipp Date: Wed, 6 Jun 2012 15:45:20 +0200 Subject: [PATCH] Consider link types in link_new and link_free --- links.c | 31 +++++++++++++++++++++---------- types.h | 3 +-- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/links.c b/links.c index 730bf42..6ede9c2 100644 --- a/links.c +++ b/links.c @@ -31,18 +31,16 @@ zathura_link_new(zathura_link_type_t type, zathura_rectangle_t position, switch (type) { case ZATHURA_LINK_GOTO_DEST: - link->target.page_number = target.page_number; + link->target = target; + + if (target.value != NULL) { + link->target.value = g_strdup(target.value); + } break; case ZATHURA_LINK_GOTO_REMOTE: case ZATHURA_LINK_URI: - if (target.value == NULL) { - g_free(link); - return NULL; - } - - link->target.value = g_strdup(target.value); - break; case ZATHURA_LINK_LAUNCH: + case ZATHURA_LINK_NAMED: if (target.value == NULL) { g_free(link); return NULL; @@ -66,8 +64,11 @@ zathura_link_free(zathura_link_t* link) } switch (link->type) { + case ZATHURA_LINK_GOTO_DEST: + case ZATHURA_LINK_GOTO_REMOTE: case ZATHURA_LINK_URI: case ZATHURA_LINK_LAUNCH: + case ZATHURA_LINK_NAMED: if (link->target.value != NULL) { g_free(link->target.value); } @@ -114,13 +115,23 @@ zathura_link_get_target(zathura_link_t* link) void zathura_link_evaluate(zathura_t* zathura, zathura_link_t* link) { - if (zathura == NULL || link == NULL) { + if (zathura == NULL || zathura->document == NULL || link == NULL) { return; } switch (link->type) { case ZATHURA_LINK_GOTO_DEST: - page_set_delayed(zathura, link->target.page_number); + switch (link->target.destination_type) { + case ZATHURA_LINK_DESTINATION_XYZ: + if (link->target.scale == 0) { + zathura_document_set_scale(zathura->document, link->target.scale); + } + + page_set_delayed(zathura, link->target.page_number); + break; + default: + break; + } break; case ZATHURA_LINK_GOTO_REMOTE: link_remote(zathura, link->target.value); diff --git a/types.h b/types.h index 10fa150..8aade9a 100644 --- a/types.h +++ b/types.h @@ -150,8 +150,7 @@ typedef enum zathura_link_destination_type_e ZATHURA_LINK_DESTINATION_FITR, ZATHURA_LINK_DESTINATION_FITB, ZATHURA_LINK_DESTINATION_FITBH, - ZATHURA_LINK_DESTINATION_FITBV, - ZATHURA_LINK_DESTINATION_NAMED + ZATHURA_LINK_DESTINATION_FITBV } zathura_link_destination_type_t; typedef struct zathura_link_target_s