That's what happens when you submit code written at midnight. Also forgot to
initialize global.search_direction. All is below.
Comments are appreciated, but do feel free to make any changes yourself as you
see fit.
---
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 5d568f7..9436ad5 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);
@@ -380,7 +382,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 ecd72c5..5c37f54 100644
--- a/shortcuts.c
+++ b/shortcuts.c
@@ -621,7 +621,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 191f4a8..b036f8d 100644
--- a/zathura.c
+++ b/zathura.c
@@ -64,6 +64,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 9aa807c..e435259 100644
--- a/zathura.h
+++ b/zathura.h
@@ -87,6 +87,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;
--
Rob Cornish
_______________________________________________
zathura mailing list
[email protected]
http://lists.pwmt.org/mailman/listinfo/zathura