Changeset 2363 for trunk/src


Ignore:
Timestamp:
Jan 8, 2000, 1:06:53 PM (26 years ago)
Author:
sandervl
Message:

ModifyMenuA bugfix (changing menu ids didn't work)

Location:
trunk/src/user32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/new/winmenu.cpp

    r2350 r2363  
    1 /* $Id: winmenu.cpp,v 1.10 2000-01-07 00:24:34 sandervl Exp $ */
     1/* $Id: winmenu.cpp,v 1.11 2000-01-08 12:06:53 sandervl Exp $ */
    22
    33/*
     
    4141HMENU ODIN_INTERNAL ODIN_CreatePopupMenu(void);
    4242BOOL  ODIN_INTERNAL ODIN_DestroyMenu(HMENU);
     43BOOL  ODIN_INTERNAL ODIN_DeleteMenu(HMENU, UINT, UINT);
    4344
    4445//@@@PH: experiment with WINE LoadMenuIndirect code
     
    633634ODINFUNCTION5(BOOL, ModifyMenuA,
    634635              HMENU, hMenu,
    635               UINT, arg2,
    636               UINT, arg3,
    637               UINT, arg4,
    638               LPCSTR, arg5)
    639 {
    640     dprintf(("USER32:  OS2ModifyMenuA\n"));
    641     if(hMenu == 0)
    642     {
    643         SetLastError(ERROR_INVALID_PARAMETER);
    644         return 0;
    645     }
    646     return O32_ModifyMenu(hMenu, arg2, arg3, arg4, arg5);
     636              UINT, uItem,
     637              UINT, fuFlags,
     638              UINT, idNewItem,
     639              LPCSTR, lpszNewItem)
     640{
     641    if(hMenu == 0)
     642    {
     643        SetLastError(ERROR_INVALID_PARAMETER);
     644        return 0;
     645    }
     646    if(IS_STRING_ITEM(fuFlags) && HIWORD(lpszNewItem) != 0) {
     647        dprintf(("ModifyMenuA %s", lpszNewItem));
     648    }
     649
     650    if(((fuFlags & (MF_BYCOMMAND|MF_BYPOSITION|MF_POPUP)) == MF_BYCOMMAND) && uItem != idNewItem) {
     651        DWORD pos = OSLibGetMenuItemPos(hMenu, uItem);
     652        ODIN_DeleteMenu(hMenu, uItem, MF_BYCOMMAND);
     653        return ODIN_InsertMenuA(hMenu, pos, fuFlags | MF_BYPOSITION, idNewItem, lpszNewItem);
     654    }
     655    return O32_ModifyMenu(hMenu, uItem, fuFlags, idNewItem, lpszNewItem);
    647656}
    648657//******************************************************************************
     
    682691              UINT, arg3)
    683692{
    684     dprintf(("USER32:  OS2RemoveMenu\n"));
    685693    if(hMenu == 0)
    686694    {
     
    698706              UINT, arg3)
    699707{
    700     dprintf(("USER32:  OS2DeleteMenu\n"));
    701708    if(hMenu == 0)
    702709    {
  • trunk/src/user32/winmenu.cpp

    r2350 r2363  
    1 /* $Id: winmenu.cpp,v 1.21 2000-01-07 00:24:34 sandervl Exp $ */
     1/* $Id: winmenu.cpp,v 1.22 2000-01-08 12:05:57 sandervl Exp $ */
    22
    33/*
     
    4141HMENU ODIN_INTERNAL ODIN_CreatePopupMenu(void);
    4242BOOL  ODIN_INTERNAL ODIN_DestroyMenu(HMENU);
     43BOOL  ODIN_INTERNAL ODIN_DeleteMenu(HMENU, UINT, UINT);
    4344
    4445//@@@PH: experiment with WINE LoadMenuIndirect code
     
    633634ODINFUNCTION5(BOOL, ModifyMenuA,
    634635              HMENU, hMenu,
    635               UINT, arg2,
    636               UINT, arg3,
    637               UINT, arg4,
    638               LPCSTR, arg5)
    639 {
    640     dprintf(("USER32:  OS2ModifyMenuA\n"));
    641     if(hMenu == 0)
    642     {
    643         SetLastError(ERROR_INVALID_PARAMETER);
    644         return 0;
    645     }
    646     return O32_ModifyMenu(hMenu, arg2, arg3, arg4, arg5);
     636              UINT, uItem,
     637              UINT, fuFlags,
     638              UINT, idNewItem,
     639              LPCSTR, lpszNewItem)
     640{
     641    if(hMenu == 0)
     642    {
     643        SetLastError(ERROR_INVALID_PARAMETER);
     644        return 0;
     645    }
     646    if(IS_STRING_ITEM(fuFlags) && HIWORD(lpszNewItem) != 0) {
     647        dprintf(("ModifyMenuA %s", lpszNewItem));
     648    }
     649
     650    if(((fuFlags & (MF_BYCOMMAND|MF_BYPOSITION|MF_POPUP)) == MF_BYCOMMAND) && uItem != idNewItem) {
     651        DWORD pos = OSLibGetMenuItemPos(hMenu, uItem);
     652        ODIN_DeleteMenu(hMenu, uItem, MF_BYCOMMAND);
     653        return ODIN_InsertMenuA(hMenu, pos, fuFlags | MF_BYPOSITION, idNewItem, lpszNewItem);
     654    }
     655    return O32_ModifyMenu(hMenu, uItem, fuFlags, idNewItem, lpszNewItem);
    647656}
    648657//******************************************************************************
     
    682691              UINT, arg3)
    683692{
    684     dprintf(("USER32:  OS2RemoveMenu\n"));
    685693    if(hMenu == 0)
    686694    {
     
    698706              UINT, arg3)
    699707{
    700     dprintf(("USER32:  OS2DeleteMenu\n"));
    701708    if(hMenu == 0)
    702709    {
Note: See TracChangeset for help on using the changeset viewer.