Rob Cornish wrote:
> Agreed, setting it in global is cleaner. Please see below.
>
> Cheers!
>
> ---
> commands.c | 9 ++++++++-
> shortcuts.c | 11 ++++++++++-
> zathura.h | 1 +
> 3 files changed, 19 insertions(+), 2 deletions(-)
>
> 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..dab4595 100644
> --- a/shortcuts.c
> +++ b/shortcuts.c
> @@ -621,7 +621,16 @@ 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;
> +
> + int diff;
> + switch (zathura->global.search_direction) {
> + case FORWARD:
> + diff = argument->n == FORWARD ? 1 : -1;
> + break;
> + case BACKWARD:
> + diff = argument->n == BACKWARD ? 1 : -1;
> + break;
> + }
This seems correct, but it's perhaps a bit convoluted, isn't it (double
negations or something)? How about doing this instead:
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.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;
Cheers,
--
Benoît Knecht
_______________________________________________
zathura mailing list
[email protected]
http://lists.pwmt.org/mailman/listinfo/zathura