From d9d8eb2480e6b2d816ed1f13599f6f3c247a7031 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 29 Jun 2016 21:22:38 +0200
Subject: [PATCH] tweaks: straighten out the flow of a loop

---
 src/browser.c | 39 ++++++++++++++++++---------------------
 1 file changed, 18 insertions(+), 21 deletions(-)

diff --git a/src/browser.c b/src/browser.c
index f0d6f70c..0fea7b7a 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -72,9 +72,6 @@ char *do_browser(char *path)
   read_directory_contents:
 	/* We come here when we refresh or select a new directory. */
 
-    /* Start with no key pressed. */
-    kbinput = ERR;
-
     path = mallocstrassn(path, get_full_path(newpath ? newpath : path));
 
     if (path != NULL && newpath != NULL)
@@ -128,30 +125,15 @@ char *do_browser(char *path)
 
 	bottombars(MBROWSER);
 
-#ifndef NANO_TINY
-	/* If the window resized, also refresh the file list. */
-	if (kbinput == KEY_WINCH) {
-	    /* Remember the selected file, to be able to reselect it. */
-	    present_name = strdup(filelist[selected]);
-	    /* Reread the contents of the current directory. */
-	    newpath = strdup(present_path);
-	    goto read_directory_contents;
-	}
-#endif
-	/* Display (or redisplay) the file list if we don't have a key yet,
-	 * or the list has changed, or the selected file has changed. */
-	if (kbinput == ERR || old_selected != selected)
+	/* Display (or redisplay) the file list if the list itself or
+	 * the selected file has changed. */
+	if (old_selected != selected)
 	    browser_refresh();
 
 	old_selected = selected;
 
 	kbinput = get_kbinput(edit);
 
-#ifndef NANO_TINY
-	if (kbinput == KEY_WINCH)
-	    continue;
-#endif
-
 #ifndef DISABLE_MOUSE
 	if (kbinput == KEY_MOUSE) {
 	    int mouse_x, mouse_y;
@@ -340,8 +322,23 @@ char *do_browser(char *path)
 	} else if (func == do_exit) {
 	    /* Exit from the file browser. */
 	    break;
+#ifndef NANO_TINY
+	} else if (kbinput == KEY_WINCH) {
+	    ;
+#endif
 	} else
 	    unbound_key(kbinput);
+
+#ifndef NANO_TINY
+	/* If the window resized, refresh the file list. */
+	if (kbinput == KEY_WINCH) {
+	    /* Remember the selected file, to be able to reselect it. */
+	    present_name = strdup(filelist[selected]);
+	    /* Reread the contents of the current directory. */
+	    newpath = strdup(present_path);
+	    goto read_directory_contents;
+	}
+#endif
     }
 
     titlebar(NULL);
-- 
GitLab