- ITEM *item;
- int x, y;
- WINDOW *win, *sub;
-
- if ( !( menu->status & _POSTED ) )
- RETURN(E_NOT_POSTED);
-
- item = menu->curitem;
- assert(item);
-
- x = item->x * (menu->spc_cols + menu->itemlen);
- y = (item->y - menu->toprow) * menu->spc_rows;
- win = menu->userwin ? menu->userwin : stdscr;
+ if ((ITEM *) 0 == item)
+ item = menu->curitem;
+ assert(item != (ITEM *) 0);
+
+ if (!(menu->status & _POSTED))
+ return (E_NOT_POSTED);
+
+ *pX = item->x * (menu->spc_cols + menu->itemlen);
+ *pY = (item->y - menu->toprow) * menu->spc_rows;
+ }
+ return (E_OK);
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : pos_menu_cursor
+|
+| Description : Position logical cursor to current item in menu
+|
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid menu
+| E_NOT_POSTED - Menu is not posted
++--------------------------------------------------------------------------*/
+NCURSES_EXPORT(int)
+pos_menu_cursor(const MENU * menu)
+{
+ WINDOW *win, *sub;
+ int x = 0, y = 0;
+ int err = _nc_menu_cursor_pos(menu, (ITEM *) 0, &y, &x);
+
+ T((T_CALLED("pos_menu_cursor(%p)"), (const void *)menu));
+
+ if (E_OK == err)
+ {
+ win = Get_Menu_UserWin(menu);