Release 950901
Thu Aug 31 17:19:57 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [Configure]
Added compile-time option for IPC.
* [configure.in]
Added command-line options for language, IPC and malloc
debugging.
* [controls/menu.c]
WM_MENUSELECT was sometimes sent to the wrong window.
* [debugger/break.c]
For the 'next' command, only step over instruction that require
it. This allows 'next' to do the right thing with jmp and ret
instructions.
* [ipc/*.c] [memory/atom.c] [memory/global.c]
IPC can now be configured out at compile-time.
* [loader/task.c]
Bug fix in TASK_Reschedule() that could cause a task to be deleted
twice.
* [miscemu/dosmem.c] (New file)
Partial emulation of the BIOS data segment.
* [miscemu/instr.c]
Trap attempts to access selector 0x40 and remap the access to
segment __0040H.
* [tools/build.c]
Fixed bug in CallTo32_LargeStack() that caused problems when
compiling Wine with the -fomit-frame-pointer option.
* [windows/message.c]
Fixed bug in hardware event handling that could cause some events
to get ignored.
Sat Aug 26 13:12:59 IST 1995 Michael Veksler <mveksler@vnet.ibm.com>
* [ipc/README] [ipc/dde.tex]
LaTeX documentation for the ipc and DDE stuff.
Wed Aug 23 22:01:23 GMT 1995 Michael Veksler <mveksler@vnet.ibm.com>
* [ipc/Imakefile] [ipc/wine_test_stub.c]
Fixed IPC testing. Now it can be compiled with "make tests"
Wed Aug 23 21:04:14 1995 Fons Botman <botman@wab-tis.rabobank.nl>
* [if1632/kernel.spec] [include/windows.h] [misc/main.c]
Added GetWinDebugInfo/SetWinDebugInfo stub for player.exe
Sun Aug 20 13:49:42 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [miscemu/int21.c]
Misc fix to int21,ah=40 (write) to match _lwrite().
AX=0x440A (check if handle is remote) added.
* [multimedia/mmsystem.c]
Moved mciSendString to mcistring.c.
* [multimedia/mcistring.c]
New file, string interface for MCI (not complete, not thoroughly
tested).
* [multimedia/audio.c]
IOCTL prints errors; one paranoid check disabled.
* [misc/file.c]
Misc operator precedence fixes.
* [if1632/gdi.spec] [objects/bitblt.c]
Stub for FastWindowFrame (parameters not correct).
Sat Aug 19 01:31:23 1995 Graham Menhennitt <gfm@werple.mira.net.au>
* [loader/ne_image.c]
Preliminary support for iterated segments.
Sat Aug 19 00:43:04 1995 Andrew Taylor (andrew@riscan.com)
* [windows/mapping.c]
In function MAPPING_FixIsotropic(), VportExt[XY] is multiplied by
the absolute value of (ydim / xdim) or (xdim / ydim).
Thu Aug 15 23:00:16 Gregory Trubetskoy <grisha@mira.com>
* [objects/oembitmap.c]
Added some includes for Windows 95.
* [include/sysmetrics.h]
Added some sysmetrics for Windows 95.
* [include/bitmaps/*95]
New files: obm_close_95, obm_closed_95, obm_reduce_95, obm_reduced_95
obm_zoom_95, obm_zoomd_95 - these are some pixmaps for Windows 95.
Thu Aug 10 12:00:00 1995 Jan Willamowius (jan@janhh.shnet.org)
* [misc/shell.c] [rc/sysres*.rc]
The caption of the ShellAbout dialog box is language specific and
should be defined in the resources.
diff --git a/controls/menu.c b/controls/menu.c
index 88c4c15..598de3a 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -697,7 +697,7 @@
/***********************************************************************
* MENU_SelectItem
*/
-static void MENU_SelectItem( HMENU hmenu, WORD wIndex )
+static void MENU_SelectItem( HWND hwndOwner, HMENU hmenu, WORD wIndex )
{
MENUITEM *items;
LPPOPUPMENU lppop;
@@ -739,8 +739,9 @@
MENU_DrawMenuItem( lppop->hWnd, hdc, &items[lppop->FocusedItem], lppop->Height,
!(lppop->wFlags & MF_POPUP) );
dprintf_menu(stddeb,"Sending WM_MENUSELECT %04x %04x\n", items[lppop->FocusedItem].item_id,items[lppop->FocusedItem].item_flags);
- SendMessage(lppop->hWnd, WM_MENUSELECT, items[lppop->FocusedItem].item_id,
- MAKELONG( items[lppop->FocusedItem].item_flags | MF_MOUSESELECT, hmenu));
+ SendMessage( hwndOwner, WM_MENUSELECT,
+ items[lppop->FocusedItem].item_id,
+ MAKELONG( items[lppop->FocusedItem].item_flags | MF_MOUSESELECT, hmenu));
}
}
ReleaseDC( lppop->hWnd, hdc );
@@ -750,7 +751,7 @@
/***********************************************************************
* MENU_SelectNextItem
*/
-static void MENU_SelectNextItem( HMENU hmenu )
+static void MENU_SelectNextItem( HWND hwndOwner, HMENU hmenu )
{
int i;
MENUITEM *items;
@@ -766,13 +767,13 @@
{
if (!(items[i].item_flags & MF_SEPARATOR))
{
- MENU_SelectItem( hmenu, i );
+ MENU_SelectItem( hwndOwner, hmenu, i );
return;
}
}
if (MENU_HasSysMenu( menu ))
{
- MENU_SelectItem( hmenu, SYSMENU_SELECTED );
+ MENU_SelectItem( hwndOwner, hmenu, SYSMENU_SELECTED );
return;
}
}
@@ -780,18 +781,19 @@
{
if (!(items[i].item_flags & MF_SEPARATOR))
{
- MENU_SelectItem( hmenu, i );
+ MENU_SelectItem( hwndOwner, hmenu, i );
return;
}
}
- if (MENU_HasSysMenu( menu )) MENU_SelectItem( hmenu, SYSMENU_SELECTED );
+ if (MENU_HasSysMenu( menu ))
+ MENU_SelectItem( hwndOwner, hmenu, SYSMENU_SELECTED );
}
/***********************************************************************
* MENU_SelectPrevItem
*/
-static void MENU_SelectPrevItem( HMENU hmenu )
+static void MENU_SelectPrevItem( HWND hwndOwner, HMENU hmenu )
{
int i;
MENUITEM *items;
@@ -807,13 +809,13 @@
{
if (!(items[i].item_flags & MF_SEPARATOR))
{
- MENU_SelectItem( hmenu, i );
+ MENU_SelectItem( hwndOwner, hmenu, i );
return;
}
}
if (MENU_HasSysMenu( menu ))
{
- MENU_SelectItem( hmenu, SYSMENU_SELECTED );
+ MENU_SelectItem( hwndOwner, hmenu, SYSMENU_SELECTED );
return;
}
}
@@ -821,11 +823,12 @@
{
if (!(items[i].item_flags & MF_SEPARATOR))
{
- MENU_SelectItem( hmenu, i );
+ MENU_SelectItem( hwndOwner, hmenu, i );
return;
}
}
- if (MENU_HasSysMenu( menu )) MENU_SelectItem( hmenu, SYSMENU_SELECTED );
+ if (MENU_HasSysMenu( menu ))
+ MENU_SelectItem( hwndOwner, hmenu, SYSMENU_SELECTED );
}
@@ -856,7 +859,7 @@
*
* Hide the sub-popup menus of this menu.
*/
-static void MENU_HideSubPopups( HMENU hmenu )
+static void MENU_HideSubPopups( HWND hwndOwner, HMENU hmenu )
{
MENUITEM *item;
POPUPMENU *menu, *submenu;
@@ -877,9 +880,9 @@
hsubmenu = item->item_id;
}
submenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hsubmenu );
- MENU_HideSubPopups( hsubmenu );
+ MENU_HideSubPopups( hwndOwner, hsubmenu );
if (submenu->hWnd) ShowWindow( submenu->hWnd, SW_HIDE );
- MENU_SelectItem( hsubmenu, NO_SELECTED_ITEM );
+ MENU_SelectItem( hwndOwner, hsubmenu, NO_SELECTED_ITEM );
}
@@ -902,7 +905,7 @@
{
MENU_ShowPopup(hwndOwner, wndPtr->hSysMenu, 0, wndPtr->rectClient.left,
wndPtr->rectClient.top - menu->Height - 2*SYSMETRICS_CYBORDER);
- if (selectFirst) MENU_SelectNextItem( wndPtr->hSysMenu );
+ if (selectFirst) MENU_SelectNextItem( hwndOwner, wndPtr->hSysMenu );
return wndPtr->hSysMenu;
}
item = ((MENUITEM *)USER_HEAP_LIN_ADDR(menu->hItems)) + menu->FocusedItem;
@@ -921,7 +924,7 @@
wndPtr->rectWindow.left + item->rect.left,
wndPtr->rectWindow.top + item->rect.bottom );
}
- if (selectFirst) MENU_SelectNextItem( (HMENU)item->item_id );
+ if (selectFirst) MENU_SelectNextItem( hwndOwner, (HMENU)item->item_id );
return (HMENU)item->item_id;
}
@@ -1027,7 +1030,7 @@
{
if (menu->wFlags & MF_POPUP)
{
- MENU_HideSubPopups( hmenu );
+ MENU_HideSubPopups( hwndOwner, hmenu );
*hmenuCurrent = hmenu;
}
else return FALSE;
@@ -1037,8 +1040,8 @@
}
else
{
- MENU_HideSubPopups( hmenu );
- MENU_SelectItem( hmenu, id );
+ MENU_HideSubPopups( hwndOwner, hmenu );
+ MENU_SelectItem( hwndOwner, hmenu, id );
*hmenuCurrent = MENU_ShowSubPopup( hwndOwner, hmenu, FALSE );
}
return TRUE;
@@ -1081,8 +1084,8 @@
hsubmenu = item->item_id;
}
/* Select first item of sub-popup */
- MENU_SelectItem( hsubmenu, NO_SELECTED_ITEM );
- MENU_SelectNextItem( hsubmenu );
+ MENU_SelectItem( hwndOwner, hsubmenu, NO_SELECTED_ITEM );
+ MENU_SelectNextItem( hwndOwner, hsubmenu );
return TRUE;
}
@@ -1113,12 +1116,12 @@
}
if (id == NO_SELECTED_ITEM)
{
- MENU_SelectItem( *hmenuCurrent, NO_SELECTED_ITEM );
+ MENU_SelectItem( hwndOwner, *hmenuCurrent, NO_SELECTED_ITEM );
}
else if (menu->FocusedItem != id)
{
- MENU_HideSubPopups( hmenu );
- MENU_SelectItem( hmenu, id );
+ MENU_HideSubPopups( hwndOwner, hmenu );
+ MENU_SelectItem( hwndOwner, hmenu, id );
*hmenuCurrent = MENU_ShowSubPopup( hwndOwner, hmenu, FALSE );
}
return TRUE;
@@ -1143,12 +1146,12 @@
hmenutmp = MENU_GetSubPopup( hmenuprev );
if (hmenutmp != *hmenuCurrent) hmenuprev = hmenutmp;
}
- MENU_HideSubPopups( hmenuprev );
+ MENU_HideSubPopups( hwndOwner, hmenuprev );
if ((hmenuprev == hmenu) && !(menu->wFlags & MF_POPUP))
{
/* Select previous item on the menu bar */
- MENU_SelectPrevItem( hmenu );
+ MENU_SelectPrevItem( hwndOwner, hmenu );
if (*hmenuCurrent != hmenu)
{
/* A popup menu was displayed -> display the next one */
@@ -1186,8 +1189,8 @@
/* If on menu-bar, go to next item */
if (!(menu->wFlags & MF_POPUP))
{
- MENU_HideSubPopups( hmenu );
- MENU_SelectNextItem( hmenu );
+ MENU_HideSubPopups( hwndOwner, hmenu );
+ MENU_SelectNextItem( hwndOwner, hmenu );
if (*hmenuCurrent != hmenu)
{
/* A popup menu was displayed -> display the next one */
@@ -1203,7 +1206,7 @@
hmenutmp = MENU_GetSubPopup( hmenuprev );
if (hmenutmp != *hmenuCurrent) hmenuprev = hmenutmp;
}
- MENU_HideSubPopups( hmenuprev );
+ MENU_HideSubPopups( hwndOwner, hmenuprev );
*hmenuCurrent = hmenuprev;
}
}
@@ -1293,17 +1296,17 @@
switch(msg->wParam)
{
case VK_HOME:
- MENU_SelectItem( hmenuCurrent, NO_SELECTED_ITEM );
- MENU_SelectNextItem( hmenuCurrent );
+ MENU_SelectItem( hwnd, hmenuCurrent, NO_SELECTED_ITEM );
+ MENU_SelectNextItem( hwnd, hmenuCurrent );
break;
case VK_END:
- MENU_SelectItem( hmenuCurrent, NO_SELECTED_ITEM );
- MENU_SelectPrevItem( hmenuCurrent );
+ MENU_SelectItem( hwnd, hmenuCurrent, NO_SELECTED_ITEM );
+ MENU_SelectPrevItem( hwnd, hmenuCurrent );
break;
case VK_UP:
- MENU_SelectPrevItem( hmenuCurrent );
+ MENU_SelectPrevItem( hwnd, hmenuCurrent );
break;
case VK_DOWN:
@@ -1311,7 +1314,7 @@
if (!(menu->wFlags & MF_POPUP) && (hmenuCurrent == hmenu))
hmenuCurrent = MENU_ShowSubPopup( hwnd, hmenu, TRUE );
else
- MENU_SelectNextItem( hmenuCurrent );
+ MENU_SelectNextItem( hwnd, hmenuCurrent );
break;
case VK_LEFT:
@@ -1357,7 +1360,7 @@
else if (pos == (WORD)-1) MessageBeep(0);
else
{
- MENU_SelectItem( hmenuCurrent, pos );
+ MENU_SelectItem( hwnd, hmenuCurrent, pos );
fClosed = !MENU_ExecFocusedItem( hwnd, hmenuCurrent,
&hmenuCurrent );
@@ -1378,9 +1381,10 @@
}
USER_HEAP_FREE( hMsg );
ReleaseCapture();
- MENU_HideSubPopups( hmenu );
+ MENU_HideSubPopups( hwnd, hmenu );
if (menu->wFlags & MF_POPUP) ShowWindow( menu->hWnd, SW_HIDE );
- MENU_SelectItem( hmenu, NO_SELECTED_ITEM );
+ MENU_SelectItem( hwnd, hmenu, NO_SELECTED_ITEM );
+ SendMessage( hwnd, WM_MENUSELECT, 0, MAKELONG( 0xffff, 0 ) );
fEndMenuCalled = FALSE;
return TRUE;
}
@@ -1412,8 +1416,8 @@
if (!wndPtr->wIDmenu) return;
SendMessage( hwnd, WM_ENTERMENULOOP, 0, 0 );
/* Select first selectable item */
- MENU_SelectItem( wndPtr->wIDmenu, NO_SELECTED_ITEM );
- MENU_SelectNextItem( (HMENU)wndPtr->wIDmenu );
+ MENU_SelectItem( hwnd, wndPtr->wIDmenu, NO_SELECTED_ITEM );
+ MENU_SelectNextItem( hwnd, (HMENU)wndPtr->wIDmenu );
MENU_TrackMenu( (HMENU)wndPtr->wIDmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON,
0, 0, hwnd, NULL );
SendMessage( hwnd, WM_EXITMENULOOP, 0, 0 );
@@ -1595,8 +1599,8 @@
if (!(lpitem = MENU_FindItem( &hMenu, &wItemID, wHilite ))) return FALSE;
if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return FALSE;
if (menu->FocusedItem == wItemID) return TRUE;
- MENU_HideSubPopups( hMenu );
- MENU_SelectItem( hMenu, wItemID );
+ MENU_HideSubPopups( hWnd, hMenu );
+ MENU_SelectItem( hWnd, hMenu, wItemID );
return TRUE;
}
@@ -1957,16 +1961,13 @@
*/
HMENU GetSystemMenu(HWND hWnd, BOOL bRevert)
{
- WND *wndPtr;
- wndPtr = WIN_FindWndPtr(hWnd);
- if (!bRevert) {
- return wndPtr->hSysMenu;
- }
- else {
- DestroyMenu(wndPtr->hSysMenu);
- wndPtr->hSysMenu = CopySysMenu();
- }
- return wndPtr->hSysMenu;
+ WND *wndPtr = WIN_FindWndPtr( hWnd );
+ if (!wndPtr) return 0;
+
+ if (!bRevert) return wndPtr->hSysMenu;
+ DestroyMenu(wndPtr->hSysMenu);
+ wndPtr->hSysMenu = CopySysMenu();
+ return wndPtr->hSysMenu;
}
/**********************************************************************