From 240dc67e1b8fd39eb7604e9d1e8c889dbc8bfbb2 Mon Sep 17 00:00:00 2001
From: twinaphex <libretro@gmail.com>
Date: Tue, 27 Oct 2015 07:03:02 +0100
Subject: [PATCH] Update ID correctly according to menu entry

---
 menu/drivers/zarch.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c
index f75deb21b7..0002ff58a7 100644
--- a/menu/drivers/zarch.c
+++ b/menu/drivers/zarch.c
@@ -102,7 +102,6 @@ const GRfloat ZUI_BG_PAD_HILITE[] = {
 typedef struct zarch_handle
 {
    enum menu_action action;
-   unsigned         action_id;
    bool rendering;
    menu_handle_t *menu;
    math_matrix_4x4 mvp;
@@ -790,6 +789,7 @@ static int zarch_zui_render_lay_root_downloads(zui_t *zui, zui_tabbed_t *tabbed)
 
 static int zarch_zui_render_lay_root(zui_t *zui)
 {
+   char item[PATH_MAX_LENGTH];
    static zui_tabbed_t tabbed = {~0};
 
    zarch_zui_tabbed_begin(zui, &tabbed, 0, 0);
@@ -806,6 +806,14 @@ static int zarch_zui_render_lay_root(zui_t *zui)
    if (zarch_zui_render_lay_root_downloads(zui, &tabbed))
       return 0;
 
+   (void)item;
+#if 0
+   snprintf(item, sizeof(item), "item id: %d\n", zui->active_id);
+   zarch_zui_draw_text(zui, ZUI_FG_NORMAL, 1600 +12, 900 + 41, item); 
+   snprintf(item, sizeof(item), "tab  id: %d\n", tabbed.active_id);
+   zarch_zui_draw_text(zui, ZUI_FG_NORMAL, 1600 +12, 900 + 81, item); 
+#endif
+
    if (zui->pending_selection == -1)
    {
       switch (zui->action)
@@ -1243,6 +1251,7 @@ static void zarch_context_reset(void)
 static int zarch_iterate(enum menu_action action)
 {
    int ret = 0;
+   int         action_id;
    menu_entry_t entry;
    zui_t *zui           = NULL;
    menu_handle_t *menu  = menu_driver_get_ptr();
@@ -1256,21 +1265,24 @@ static int zarch_iterate(enum menu_action action)
 
    if (!zui)
       return -1;
-   if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &zui->action_id))
+   if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &action_id))
       return 0;
 
    BIT64_SET(menu->state, MENU_STATE_RENDER_FRAMEBUFFER);
    BIT64_SET(menu->state, MENU_STATE_BLIT);
 
-   menu_entry_get(&entry,    zui->action_id, NULL, false);
+   menu_entry_get(&entry,    action_id, NULL, false);
 
+   if (action_id >= 0)
+      zui->pending_selection = action_id;
+   
    if (zui->pending_action_ok.enable)
    {
       menu_entry_get(&entry, zui->pending_action_ok.idx, NULL, false);
       zui->pending_action_ok.enable = false;
       
       act               = MENU_ACTION_OK;
-      zui->action_id    = zui->pending_action_ok.idx;
+      action_id    = zui->pending_action_ok.idx;
       zui->pending_action_ok.idx = 0;
    }
    else
@@ -1279,7 +1291,7 @@ static int zarch_iterate(enum menu_action action)
    }
 
    if (perform_action)
-      ret = menu_entry_action(&entry, zui->action_id, act);
+      ret = menu_entry_action(&entry, action_id, act);
 
    if (zui->time_to_exit)
    {