X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=menu%2Fm_post.c;h=b4b1bc14eb77fc32cb3c72425dd3b116b146333c;hb=b661daf1160a873609d70843999cd46eff25d1f0;hp=2cc0ea09d5feb5c0445b93416f5e76355686e692;hpb=47d2fb4537d9ad5bb14f4810561a327930ca4280;p=ncurses.git diff --git a/menu/m_post.c b/menu/m_post.c index 2cc0ea09..b4b1bc14 100644 --- a/menu/m_post.c +++ b/menu/m_post.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2021 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -38,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_post.c,v 1.32 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: m_post.c,v 1.35 2021/03/27 23:46:29 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -49,8 +49,8 @@ MODULE_ID("$Id: m_post.c,v 1.32 2020/02/02 23:34:34 tom Exp $") | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Post_Item(const MENU * menu, const ITEM * item) +MENU_EXPORT(void) +_nc_Post_Item(const MENU *menu, const ITEM *item) { int i; chtype ch; @@ -58,7 +58,6 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) int count = 0; bool isfore = FALSE, isback = FALSE, isgrey = FALSE; int name_len; - int desc_len; assert(menu->win); @@ -132,6 +131,7 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) { int m = menu->spc_desc / 2; int cy = -1, cx = -1; + int desc_len; for (ch = ' ', i = 0; i < menu->spc_desc; i++) { @@ -197,11 +197,11 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Draw_Menu(const MENU * menu) +MENU_EXPORT(void) +_nc_Draw_Menu(const MENU *menu) { ITEM *item = menu->items[0]; - ITEM *lasthor, *lastvert; + ITEM *lastvert; ITEM *hitem; int y = 0; chtype s_bkgd; @@ -213,14 +213,16 @@ _nc_Draw_Menu(const MENU * menu) werase(menu->win); wbkgdset(menu->win, s_bkgd); - lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : item; + lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : item; do { + ITEM *lasthor; + wmove(menu->win, y, 0); hitem = item; - lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : hitem; + lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : hitem; do { @@ -267,8 +269,8 @@ _nc_Draw_Menu(const MENU * menu) | E_BAD_STATE - Menu in userexit routine | E_POSTED - Menu already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -post_menu(MENU * menu) +MENU_EXPORT(int) +post_menu(MENU *menu) { T((T_CALLED("post_menu(%p)"), (void *)menu)); @@ -283,7 +285,6 @@ post_menu(MENU * menu) if (menu->items && *(menu->items)) { - int y; int h = 1 + menu->spc_rows * (menu->rows - 1); WINDOW *win = Get_Menu_Window(menu); @@ -291,7 +292,8 @@ post_menu(MENU * menu) if ((menu->win = newpad(h, menu->width))) { - y = (maxy >= h) ? h : maxy; + int y = (maxy >= h) ? h : maxy; + if (y >= menu->height) y = menu->height; if (!(menu->sub = subpad(menu->win, y, menu->width, 0, 0))) @@ -339,8 +341,8 @@ post_menu(MENU * menu) | E_BAD_STATE - menu in userexit routine | E_NOT_POSTED - menu is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -unpost_menu(MENU * menu) +MENU_EXPORT(int) +unpost_menu(MENU *menu) { WINDOW *win;