]> andersk Git - moira.git/commitdiff
Use newterm() instead of initscr() if it exists.
authordanw <danw>
Tue, 26 Jan 1999 20:09:09 +0000 (20:09 +0000)
committerdanw <danw>
Tue, 26 Jan 1999 20:09:09 +0000 (20:09 +0000)
Fixes [16612] in bugs. Solution noticed by amu in [16620] in bugs.

clients/moira/menu.c

index 46a2882df018caf74c30805937d68eff7cc8ce10..ef5e5c1aea246fac0dd644b7090cb8904f0f168b 100644 (file)
@@ -109,23 +109,30 @@ void Start_menu(Menu *m)
 {
   void (*old_hook)(const char *, long, const char *, va_list) =
     set_com_err_hook((void (*) (const char *, long, const char *, va_list))menu_com_err_hook);
-
-  if (initscr() == (WINDOW *)ERR)
+#ifdef CURSES_HAS_NEWTERM
+  SCREEN *scrn = newterm(NULL, stdout, stdin);
+#else
+  WINDOW *scrn = initscr();
+#endif
+  if (!scrn)
     {
-      fputs("Can't initialize curses!\n", stderr);
+      fputs("Can't initialize curses!\nReverting to -nomenu mode\n\n", stderr);
       Start_no_menu(m);
     }
   else
     {
+#ifdef CURSES_HAS_NEWTERM
+      set_term(scrn);
+#endif
       raw();           /* We parse & print everything ourselves */
       noecho();
       cur_ms = make_ms(0);     /* So we always have some current */
                                /* menu_screen */
       /* Run the menu */
       Do_menu(m, -1, NULL);
+      Cleanup_menu();
     }
   set_com_err_hook(old_hook);
-  Cleanup_menu();
 }
 
 void Cleanup_menu(void)
@@ -134,8 +141,8 @@ void Cleanup_menu(void)
     {
       wclear(cur_ms->ms_screen);
       wrefresh(cur_ms->ms_screen);
+      endwin();
     }
-  endwin();
 }
 
 /*
This page took 0.042634 seconds and 5 git commands to generate.