diff --git a/menu/menu.priv.h b/menu/menu.priv.h
index 10d3537..b54b195 100644
--- a/menu/menu.priv.h
+++ b/menu/menu.priv.h
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2014 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            *
@@ -30,7 +30,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: menu.priv.h,v 1.22 2005/01/16 01:02:23 tom Exp $ */
+/* $Id: menu.priv.h,v 1.25 2014/11/01 14:47:00 tom Exp $ */
 
 /***************************************************************************
 * Module menu.priv.h                                                       *
@@ -39,6 +39,7 @@
 
 #ifndef MENU_PRIV_H_incl
 #define MENU_PRIV_H_incl 1
+/* *INDENT-OFF* */
 
 #include "curses.priv.h"
 #include "mf_common.h"
@@ -56,8 +57,12 @@
 /* Normalize menu to default if none was given */
 #define Normalize_Menu( menu ) ((menu)=(menu)?(menu):&_nc_Default_Menu)
 
+#define Get_Menu_Screen( menu ) (menu->userwin ? \
+				 _nc_screen_of(menu->userwin) : CURRENT_SCREEN)
+
 /* Get the user defined (framing) window of the menu */
-#define Get_Menu_UserWin(menu) ((menu)->userwin ? (menu)->userwin : stdscr)
+#define Get_Menu_UserWin(menu) ((menu)->userwin ? \
+    (menu)->userwin : CURRENT_SCREEN->_stdscr)
 
 /* Normalize menu window */
 #define Get_Menu_Window(  menu ) \
@@ -95,10 +100,11 @@
 */
 #define Adjust_Current_Item(menu,row,item) \
   { if ((item)->y < row) \
-      row = (item)->y;\
-    if ( (item)->y >= (row + (menu)->arows) )\
-      row = ( (item)->y < ((menu)->rows - row) ) ? \
-            (item)->y : (menu)->rows - (menu)->arows;\
+      row = (short) (item)->y; \
+    if ( (item)->y >= (row + (menu)->arows) ) \
+      row = (short) (( (item)->y < ((menu)->rows - row) ) \
+                     ? (item)->y \
+		     : (menu)->rows - (menu)->arows); \
     _nc_New_TopRow_and_CurrentItem(menu,row,item); }
 
 /* Reset the match pattern buffer */
@@ -124,12 +130,12 @@
 
 #ifdef TRACE
 
-#define returnItem(code)	TRACE_RETURN(code,item)
-#define returnItemPtr(code)	TRACE_RETURN(code,item_ptr)
-#define returnItemOpts(code)	TRACE_RETURN(code,item_opts)
-#define returnMenu(code)	TRACE_RETURN(code,menu)
-#define returnMenuHook(code)	TRACE_RETURN(code,menu_hook)
-#define returnMenuOpts(code)	TRACE_RETURN(code,menu_opts)
+#define returnItem(code)	TRACE_RETURN1(code,item)
+#define returnItemPtr(code)	TRACE_RETURN1(code,item_ptr)
+#define returnItemOpts(code)	TRACE_RETURN1(code,item_opts)
+#define returnMenu(code)	TRACE_RETURN1(code,menu)
+#define returnMenuHook(code)	TRACE_RETURN1(code,menu_hook)
+#define returnMenuOpts(code)	TRACE_RETURN1(code,menu_opts)
 
 extern NCURSES_EXPORT(ITEM *)	    _nc_retrace_item (ITEM *);
 extern NCURSES_EXPORT(ITEM **)	    _nc_retrace_item_ptr (ITEM **);
@@ -148,5 +154,6 @@
 #define returnMenuOpts(code)	return code
 
 #endif /* TRACE/!TRACE */
+/* *INDENT-ON* */
 
 #endif /* MENU_PRIV_H_incl */
