ncurses 5.9 - patch 20130525
[ncurses.git] / menu / m_cursor.c
index a46308954e967a643a28b4edf8ed6b65c45a533a..9891de4a9450399b6d22c45fa63a5016d5dce991 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2009,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            *
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
 /***************************************************************************
 * Module m_cursor                                                          *
-* Correctly position a menus cursor                                        *
+* Correctly position a menu's cursor                                       *
 ***************************************************************************/
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_cursor.c,v 1.13 1999/05/16 17:24:43 juergen Exp $")
+MODULE_ID("$Id: m_cursor.c,v 1.22 2010/01/23 21:20:10 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -49,25 +49,24 @@ MODULE_ID("$Id: m_cursor.c,v 1.13 1999/05/16 17:24:43 juergen Exp $")
 |                    E_BAD_ARGUMENT  - invalid menu
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
-int _nc_menu_cursor_pos(const MENU* menu,
-                       const ITEM* item,
-                       int* pY, int* pX)
+NCURSES_EXPORT(int)
+_nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX)
 {
   if (!menu || !pX || !pY)
-    return(E_BAD_ARGUMENT);
+    return (E_BAD_ARGUMENT);
   else
     {
-      if ((ITEM*)0 == item)
+      if ((ITEM *) 0 == item)
        item = menu->curitem;
-      assert(item!=(ITEM*)0);
+      assert(item != (ITEM *) 0);
 
-      if ( !( menu->status & _POSTED ) )
-       return(E_NOT_POSTED);
+      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);
+  return (E_OK);
 }
 
 /*---------------------------------------------------------------------------
@@ -80,24 +79,27 @@ int _nc_menu_cursor_pos(const MENU* menu,
 |                    E_BAD_ARGUMENT  - invalid menu
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
-int pos_menu_cursor(const MENU * menu)
+NCURSES_EXPORT(int)
+pos_menu_cursor(const MENU * menu)
 {
   WINDOW *win, *sub;
-  int x, y;
-  int err = _nc_menu_cursor_pos(menu,(ITEM*)0,&y,&x);
+  int x = 0, y = 0;
+  int err = _nc_menu_cursor_pos(menu, (ITEM *) 0, &y, &x);
 
-  if (E_OK==err)
+  T((T_CALLED("pos_menu_cursor(%p)"), (const void *)menu));
+
+  if (E_OK == err)
     {
-      win = menu->userwin ? menu->userwin : stdscr;
+      win = Get_Menu_UserWin(menu);
       sub = menu->usersub ? menu->usersub : win;
       assert(win && sub);
 
       if ((menu->opt & O_SHOWMATCH) && (menu->pindex > 0))
-       x += ( menu->pindex + menu->marklen - 1);
+       x += (menu->pindex + menu->marklen - 1);
 
-      wmove(sub,y,x);
+      wmove(sub, y, x);
 
-      if ( win != sub )
+      if (win != sub)
        {
          wcursyncup(sub);
          wsyncup(sub);