]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - menu/m_cursor.c
ncurses 6.2 - patch 20210508
[ncurses.git] / menu / m_cursor.c
index 11011dc12388c6cd656f37cdc087119efbf126d6..b9b301d3eb908105397fee7f47b439bee48eac80 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
+ * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 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            *
 
 /***************************************************************************
 * 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.16 2003/10/25 15:23:42 tom Exp $")
+MODULE_ID("$Id: m_cursor.c,v 1.26 2021/03/27 23:46:29 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -49,25 +50,24 @@ MODULE_ID("$Id: m_cursor.c,v 1.16 2003/10/25 15:23:42 tom Exp $")
 |                    E_BAD_ARGUMENT  - invalid menu
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
-NCURSES_EXPORT(int)
-_nc_menu_cursor_pos
-(const MENU* menu, const ITEM* item, int* pY, int* pX)
+MENU_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,25 +80,27 @@ _nc_menu_cursor_pos
 |                    E_BAD_ARGUMENT  - invalid menu
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
-NCURSES_EXPORT(int)
-pos_menu_cursor (const MENU * menu)
+MENU_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;
-      sub = menu->usersub ? menu->usersub : win;
+      WINDOW *win = Get_Menu_UserWin(menu);
+      WINDOW *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);