diff --git a/ChangeLog b/ChangeLog
index 03db30570b8b3c5d74efcb9b5345a0f51a4bf186..800482a57a12b64a2a0dd0f18c82170ca692a1de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -39,6 +39,9 @@ General -
 	- Spell Erik Andersen's name right.
   titlebar()
 	- Now takes an arg, needed for browser function.
+  do_help()
+	- Changed way of temporarily bringing up shortcuts at the
+	  bottom in the help screen (actually works).
 - utils.c:
   mallocstrcpy()
 	- Takes char pointers now instead of void (makes debugging a
diff --git a/proto.h b/proto.h
index c9709701955d308d5a4b41e5748d738e9d7f0b9e..93ad7340a300397c16e83bcc3df460004696e87d 100644
--- a/proto.h
+++ b/proto.h
@@ -139,6 +139,7 @@ void replace_abort(void);
 void add_to_cutbuffer(filestruct * inptr);
 void do_replace_highlight(int highlight_flag, char *word);
 void nano_disabled_msg(void);
+void window_init(void);
 #ifdef NANO_EXTRA
 void do_credits(void);
 #endif
diff --git a/winio.c b/winio.c
index 2b6f4a488ae9a7e0db27cf5da0525bac79e867f1..e10d5cb46084174431fadfe460d68dc6ca0d4be0 100644
--- a/winio.c
+++ b/winio.c
@@ -1191,13 +1191,13 @@ int do_help(void)
 
     if (ISSET(NO_HELP)) {
 
+	/* Well if we're going to do this, we should at least
+	   do it the right way */
 	no_help_flag = 1;
-	delwin(bottomwin);
-	bottomwin = newwin(3, COLS, LINES - 3, 0);
-
-	editwinrows -= no_help();
 	UNSET(NO_HELP);
+	window_init();
 	bottombars(help_list, HELP_LIST_LEN);
+
     } else
 	bottombars(help_list, HELP_LIST_LEN);
 
@@ -1273,14 +1273,12 @@ int do_help(void)
       kbinput != NANO_EXIT_FKEY);
 
     if (no_help_flag) {
-	werase(bottomwin);
+	blank_bottombars();
 	wrefresh(bottomwin);
-	delwin(bottomwin);
 	SET(NO_HELP);
-	bottomwin = newwin(3 - no_help(), COLS, LINES - 3 + no_help(), 0);
-	editwinrows += no_help();
-    } else
-	display_main_list();
+	window_init();
+    }
+    display_main_list();
 
     curs_set(1);
     edit_refresh();