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

Reply via email to