Release 960818

Sun Aug 18 12:17:54 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [files/drive.c]
	Added 'Filesystem' option in drives configuration.

	* [files/dos_fs.c] 
	Added handling of case-insensitive filesystems.

	* [memory/selector.c] [include/stackframe.h]
	Removed MAKE_SEGPTR.

	* [misc/commdlg.c] [multimedia/mcistring.c]
	Replaced MAKE_SEGPTR by the SEGPTR_* macros.

	* [objects/bitblt.c] [windows/graphics.c]
	Use an intermediary pixmap to avoid some BadMatch errors on
	XGetImage().

Sun Aug 18 09:21:27 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [windows/message.c]
	Added handling of WM_NC...mouse messages in JOURNALRECORD hook.

	* [misc/ver.c]
	Fixed a bad string result in VerQueryValue[16|32A|32W].

Fri Aug 16 19:55:04 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [if1632/crtdll.spec] [misc/crtdll.c]
	More additions to get win95 programs further down the road.

	* [if1632/kernel.spec] [loader/module.c]
	GetModuleName() added.
	LoadModule(): params->showCmd can be NULL.

	* [if1632/kernel32.spec] [if1632/thunk.c]
	ThunkConnect32() stub added.

	* [loader/resource.c]
	Entries include lastentry.

	* [misc/shell.c] [files/file.c]
	Made progman work again.

Fri Aug 16 09:00:00 1996  Alex Korobka <alex@phm30.pharm.sunysb.edu>
	
	* [windows/defwnd.c] [windows/winpos.c] [windows/painting.c]
	Icon painting fixes.

	* [windows/winpos.c] [windows/painting.c]
	Enforce and follow hrgnUpdate more closely to cut down on
	redundant RedrawWindow() calls.

	* [windows/event.c]
	Process ConfigureNotify only for managed windows.

	* [windows/winpos.c]
	Do not redraw parent if the window was hidden before SetWindowPos().

	* [windows/nonclient.c]
	Omit some nonclient decoration painting for managed windows.

	* [controls/menu.c] [windows/mdi.c] [windows/nonclient.c]
	Implemented WM_NEXTMENU.

	* [controls/listbox.c]
	Multicolumn listboxes return WVR_VREDRAW on WM_NCCALCSIZE.

	* [misc/shell.c]
	Added .ICO file handling to ExtractIcon().
diff --git a/windows/mdi.c b/windows/mdi.c
index 3d1984c..96307bf 100644
--- a/windows/mdi.c
+++ b/windows/mdi.c
@@ -25,7 +25,6 @@
 #include "user.h"
 #include "menu.h"
 #include "resource.h"
-#include "stackframe.h"
 #include "struct32.h"
 #include "sysmetrics.h"
 #include "stddebug.h"
@@ -129,8 +128,7 @@
  DeleteMenu(clientInfo->hWindowMenu,id,MF_BYCOMMAND);
 
  /* walk the rest of MDI children to prevent gaps in the id 
-  * sequence and in the menu child list 
-  */
+  * sequence and in the menu child list */
 
  for( index = id+1; index <= clientInfo->nActiveChildren + 
                              clientInfo->idFirstChild; index++ )
@@ -1223,6 +1221,29 @@
 	    MoveWindow(hwndMDIClient, 0, 0, 
 		       LOWORD(lParam), HIWORD(lParam), TRUE);
 	    break;
+
+	  case WM_NEXTMENU:
+
+            wndPtr = WIN_FindWndPtr(hwndMDIClient);
+            ci     = (MDICLIENTINFO*)wndPtr->wExtra;
+
+	    if( !(wndPtr->parent->dwStyle & WS_MINIMIZE) 
+		&& ci->hwndActiveChild && !ci->hwndChildMaximized )
+	      {
+		/* control menu is between the frame system menu and 
+		 * the first entry of menu bar */
+
+		if( wParam == VK_LEFT ) 
+		  { if( wndPtr->parent->wIDmenu != LOWORD(lParam) ) break; }
+		else if( wParam == VK_RIGHT )
+		  { if( GetSystemMenu( wndPtr->parent->hwndSelf, 0) 
+				       != LOWORD(lParam) ) break; }
+		else break;
+		
+		return MAKELONG( GetSystemMenu(ci->hwndActiveChild, 0), 
+				 ci->hwndActiveChild );
+	      }
+	    break;
 	}
     }
     
@@ -1420,13 +1441,19 @@
 
       case WM_MENUCHAR:
 
-	/* MDI children don't have menus */
+	/* MDI children don't have menu bars */
 	PostMessage( clientWnd->parent->hwndSelf, WM_SYSCOMMAND, 
 				          (WPARAM)SC_KEYMENU, (LPARAM)wParam);
 	return 0x00010000L;
 
       case WM_NEXTMENU:
-	   /* set current menu to child system menu */
+
+	if( wParam == VK_LEFT )		/* switch to frame system menu */
+	  return MAKELONG( GetSystemMenu(clientWnd->parent->hwndSelf, 0), 
+			   clientWnd->parent->hwndSelf );
+	if( wParam == VK_RIGHT )	/* to frame menu bar */
+	  return MAKELONG( clientWnd->parent->wIDmenu,
+			   clientWnd->parent->hwndSelf );
 
 	break;	
     }
@@ -1468,7 +1495,7 @@
 
       case WM_MENUCHAR:
 
-	/* MDI children don't have menus */
+	/* MDI children don't have menu bars */
 	PostMessage( clientWnd->parent->hwndSelf, WM_SYSCOMMAND, 
                      (WPARAM)SC_KEYMENU, (LPARAM)LOWORD(wParam) );
 	return 0x00010000L;