From 1a6b03fc62fde5dd04f3b0c78e0b5ef93550974b Mon Sep 17 00:00:00 2001 From: Rob Cornish Date: Tue, 18 Dec 2012 14:09:09 +1100 Subject: [PATCH] Fixed reverse searching behaviour to be more like less/vi Signed-off-by: Sebastian Ramacher --- commands.c | 9 ++++++++- shortcuts.c | 3 +++ zathura.c | 1 + zathura.h | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/commands.c b/commands.c index bd058fa..b6ad942 100644 --- a/commands.c +++ b/commands.c @@ -340,6 +340,8 @@ cmd_search(girara_session_t* session, const char* input, girara_argument_t* argu bool firsthit = true; zathura_error_t error = ZATHURA_ERROR_OK; + /* set search direction */ + zathura->global.search_direction = argument->n; unsigned int number_of_pages = zathura_document_get_number_of_pages(zathura->document); unsigned int current_page_number = zathura_document_get_current_page_number(zathura->document); @@ -383,7 +385,12 @@ cmd_search(girara_session_t* session, const char* input, girara_argument_t* argu if (page_id != 0) { page_set_delayed(zathura, zathura_page_get_index(page)); } - g_object_set(page_widget, "search-current", 0, NULL); + if (argument->n == BACKWARD) { + /* start at bottom hit in page */ + g_object_set(page_widget, "search-current", girara_list_size(result) - 1, NULL); + } else { + g_object_set(page_widget, "search-current", 0, NULL); + } firsthit = false; } } diff --git a/shortcuts.c b/shortcuts.c index 0614f49..9a33d22 100644 --- a/shortcuts.c +++ b/shortcuts.c @@ -743,7 +743,10 @@ sc_search(girara_session_t* session, girara_argument_t* argument, const int num_pages = zathura_document_get_number_of_pages(zathura->document); const int cur_page = zathura_document_get_current_page_number(zathura->document); + int diff = argument->n == FORWARD ? 1 : -1; + if (zathura->global.search_direction == BACKWARD) + diff = -diff; zathura_page_t* target_page = NULL; int target_idx = 0; diff --git a/zathura.c b/zathura.c index 2eb9043..8da1375 100644 --- a/zathura.c +++ b/zathura.c @@ -62,6 +62,7 @@ zathura_create(void) /* global settings */ zathura->global.recolor = false; zathura->global.update_page_number = true; + zathura->global.search_direction = FORWARD; /* plugins */ zathura->plugins.manager = zathura_plugin_manager_new(); diff --git a/zathura.h b/zathura.h index 1a0ba07..6970063 100644 --- a/zathura.h +++ b/zathura.h @@ -97,6 +97,7 @@ struct zathura_s bool recolor_keep_hue; /**< Keep hue when recoloring */ bool recolor; /**< Recoloring mode switch */ bool update_page_number; /**< Update current page number */ + int search_direction; /**< Current search direction (FORWARD or BACKWARD) */ girara_list_t* marks; /**< Marker */ char** arguments; /**> Arguments that were passed at startup */ } global;