From ba61cc382f8a7e15dbcdb9d0ecc7ab07d8bf93e7 Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 21 Jun 2005 20:16:26 +0000
Subject: [PATCH] fix total_redraw() so that it always keeps the cursor in the
 same window

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2752 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   | 10 ++++++----
 src/winio.c | 11 ++++++-----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 7657cd05..c0c49794 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -328,11 +328,13 @@ CVS code -
 	  prompt, so that we don't end it in the middle of a multibyte
 	  character if it's more than (COLS - 1) bytes long. (DLR)
   total_redraw()
-	- Simplify to call clearok(TRUE) and wrefresh() on edit, which
-	  updates the entire screen in fewer function calls. (DLR)
+	- Simplify to call clearok(TRUE) and wrefresh() on curscr, which
+	  updates the entire screen in fewer function calls without
+	  moving the cursor from the window it's currently in. (DLR)
 	- When using slang, use SLsmg_touch_screen() and SLsmg_refresh()
-	  to update the screen, as the curses method will leave some
-	  windows cleared without properly updating them. (DLR)
+	  to update the screen, as slang doesn't define curscr, and even
+	  if it did, the curses method will leave some windows cleared
+	  without properly updating them. (DLR)
   do_replace_highlight()
 	- Use waddch() instead of waddstr() to display a space when we
 	  have a zero-length regex. (DLR)
diff --git a/src/winio.c b/src/winio.c
index 15041d91..49236a34 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3713,14 +3713,15 @@ int do_yesno(bool all, const char *msg)
 void total_redraw(void)
 {
 #ifdef USE_SLANG
-    /* Slang curses emulation brain damage, part 3: If we just do what
-     * curses does here, it'll leave some windows cleared without
-     * updating them properly. */
+    /* Slang curses emulation brain damage, part 3: Slang doesn't define
+     * curscr, and even if it did, if we just do what curses does here,
+     * it'll leave some windows cleared without updating them
+     * properly. */
     SLsmg_touch_screen();
     SLsmg_refresh();
 #else
-    clearok(edit, TRUE);
-    wrefresh(edit);
+    clearok(curscr, TRUE);
+    wrefresh(curscr);
 #endif
 }
 
-- 
GitLab