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;