/* init_and_make_win(). */ static void * init_and_make_win (void *opaque_win_info, enum tui_win_type win_type, int height, int width, int origin_x, int origin_y, int box_it) { struct tui_gen_win_info *generic; if (opaque_win_info == NULL) { if (tui_win_is_auxillary (win_type)) opaque_win_info = (void *) tui_alloc_generic_win_info (); else opaque_win_info = (void *) tui_alloc_win_info (win_type); } if (tui_win_is_auxillary (win_type)) generic = (struct tui_gen_win_info *) opaque_win_info; else generic = &((struct tui_win_info *) opaque_win_info)->generic; if (opaque_win_info != NULL) { init_gen_win_info (generic, win_type, height, width, origin_x, origin_y); if (!tui_win_is_auxillary (win_type)) { if (generic->type == CMD_WIN) ((struct tui_win_info *) opaque_win_info)->can_highlight = FALSE; else ((struct tui_win_info *) opaque_win_info)->can_highlight = TRUE; } tui_make_window (generic, box_it); } return opaque_win_info; }
/* We can't really make windows visible, or invisible. So we have to delete the entire window when making it visible, and create it again when making it visible. */ static void make_visible (struct tui_gen_win_info *win_info, int visible) { /* Don't tear down/recreate command window */ if (win_info->type == CMD_WIN) return; if (visible) { if (!win_info->is_visible) { tui_make_window (win_info, (win_info->type != CMD_WIN && !tui_win_is_auxillary (win_info->type))); win_info->is_visible = TRUE; } } else if (!visible && win_info->is_visible && win_info->handle != (WINDOW *) NULL) { win_info->is_visible = FALSE; tui_delete_win (win_info->handle); win_info->handle = (WINDOW *) NULL; } return; }