aboutsummaryrefslogtreecommitdiff
path: root/menu/m_sub.c
diff options
context:
space:
mode:
Diffstat (limited to 'menu/m_sub.c')
-rw-r--r--menu/m_sub.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/menu/m_sub.c b/menu/m_sub.c
index 82649c57b130..37529a08b295 100644
--- a/menu/m_sub.c
+++ b/menu/m_sub.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_sub.c,v 1.10 2004/12/25 21:38:31 tom Exp $")
+MODULE_ID("$Id: m_sub.c,v 1.12 2010/01/23 21:20:11 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -51,14 +51,28 @@ MODULE_ID("$Id: m_sub.c,v 1.10 2004/12/25 21:38:31 tom Exp $")
NCURSES_EXPORT(int)
set_menu_sub(MENU * menu, WINDOW *win)
{
- T((T_CALLED("set_menu_sub(%p,%p)"), menu, win));
+ T((T_CALLED("set_menu_sub(%p,%p)"), (void *)menu, (void *)win));
if (menu)
{
if (menu->status & _POSTED)
RETURN(E_POSTED);
- menu->usersub = win;
- _nc_Calculate_Item_Length_and_Width(menu);
+ else
+#if NCURSES_SP_FUNCS
+ {
+ /* We ensure that usersub is never null. So even if a null
+ WINDOW parameter is passed, we store the SCREENS stdscr.
+ The only MENU that can have a null usersub is the static
+ _nc_default_Menu.
+ */
+ SCREEN *sp = _nc_screen_of(menu->usersub);
+
+ menu->usersub = win ? win : sp->_stdscr;
+ _nc_Calculate_Item_Length_and_Width(menu);
+ }
+#else
+ menu->usersub = win;
+#endif
}
else
_nc_Default_Menu.usersub = win;
@@ -68,7 +82,7 @@ set_menu_sub(MENU * menu, WINDOW *win)
/*---------------------------------------------------------------------------
| Facility : libnmenu
-| Function : WINDOW *menu_sub(const MENU *menu)
+| Function : WINDOW* menu_sub(const MENU *menu)
|
| Description : Returns a pointer to the subwindow of the menu
|
@@ -79,7 +93,7 @@ menu_sub(const MENU * menu)
{
const MENU *m = Normalize_Menu(menu);
- T((T_CALLED("menu_sub(%p)"), menu));
+ T((T_CALLED("menu_sub(%p)"), (const void *)menu));
returnWin(Get_Menu_Window(m));
}