X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ddc964cd151aae4713a5d2d658da986df7cd3441..ad2c7ad2d8e8e460bc0f9d790da9b7f315bc0125:/emufs_gui/tree_viewer.c?ds=sidebyside diff --git a/emufs_gui/tree_viewer.c b/emufs_gui/tree_viewer.c index 3dc30d5..34fe6f2 100644 --- a/emufs_gui/tree_viewer.c +++ b/emufs_gui/tree_viewer.c @@ -10,10 +10,12 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) char *nodo; char tmp[100]; int i; + int posibles_proximos[100]; int proximo; if (id == -1) return 0; + memset(posibles_proximos, -1, sizeof(int)*100); do { y = 0; mvwaddstr(win, y++, 0, "Nombre : "); @@ -49,8 +51,10 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) claves[i].dato.bloque,*/ claves[i].hijo_derecho ); + posibles_proximos[i] = claves[i].hijo_derecho; waddstr(win, tmp); } + posibles_proximos[i++] = header.hijo_izquierdo; free(nodo); wrefresh(win); @@ -58,12 +62,27 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) form_agregar_widget(form, INPUT, "Ver (-1 para volver)", 4, ""); form_ejecutar(form, 0, h-2); proximo = form_obtener_valor_int(form, "Ver (-1 para volver)"); - werase(win); - wrefresh(win); - emufs_indice_b_ver(idx, win, w, h, proximo); + + /* Verifico que proximo sea un hijo */ + /* +1 por el hijo izquierdo */ + if (proximo != -1) { + for(i=0; i=(header.cant+1)) proximo = id; /* Si no es un nodo valido, lo anulo*/ + } + + /* Solo voy a otro nodo si no soy el mismo */ + if (proximo != id) { + werase(win); + wrefresh(win); + emufs_indice_b_ver(idx, win, w, h, proximo); + } } while (proximo != -1); werase(win); wrefresh(win); + return 0; }