Ignore:
Timestamp:
Dec 5, 2000, 2:05:52 PM (25 years ago)
Author:
sandervl
Message:

16 bits menu handle fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/menu.cpp

    r4665 r4757  
    1 /* $Id: menu.cpp,v 1.27 2000-11-21 15:17:12 sandervl Exp $*/
     1/* $Id: menu.cpp,v 1.28 2000-12-05 13:05:50 sandervl Exp $*/
    22/*
    33 * Menu functions
     
    3131#include "menu.h"
    3232
     33#ifdef __WIN32OS2__
     34#include <objhandle.h>
     35
    3336#define DBG_LOCALLOG    DBG_menu
    3437#include "dbglocal.h"
     38#endif
    3539
    3640//DEFAULT_DEBUG_CHANNEL(menu)
     
    100104#define MENU_MAGIC   0x554d  /* 'MU' */
    101105
    102 #ifdef __WIN32OS2__
    103 //******************************************************************************
    104 //Used by our menu code (we don't want any logging)
    105 //******************************************************************************
    106 BOOL IsWindowInternal(HWND hwnd)
    107 {
    108   Win32BaseWindow *window;
    109 
    110     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    111     if(!window) {
    112         return FALSE;
    113     }
    114     return window->IsWindow();
    115 }
    116 #define IS_A_MENU(pmenu) ((pmenu) && !IsWindowInternal((HWND)pmenu) && (pmenu)->wMagic == MENU_MAGIC)
    117 #else
    118106#define IS_A_MENU(pmenu) ((pmenu) && (pmenu)->wMagic == MENU_MAGIC)
    119 #endif
    120107
    121108#define ITEM_PREV               -1
     
    343330POPUPMENU *MENU_GetMenu(HMENU hMenu)
    344331{
     332#ifdef __WIN32OS2__
     333    if(ObjGetHandleType(hMenu) == USEROBJ_MENU) {
     334        POPUPMENU *menu;
     335
     336        menu = (POPUPMENU *)ObjGetHandleData(hMenu, USEROBJ_MENU);
     337        return menu;
     338    }
     339    return NULL;
     340#else
    345341    POPUPMENU *menu;
    346342    menu = (POPUPMENU*)hMenu;
     
    351347    }
    352348    return menu;
     349#endif
    353350}
    354351
     
    363360
    364361    if( hMenu ) {
     362#ifdef __WIN32OS2__
     363        POPUPMENU* menu = MENU_GetMenu(hMenu);
     364#else
    365365        POPUPMENU* menu = (POPUPMENU*)hMenu;
     366#endif
    366367        menu->wFlags |= MF_SYSMENU | MF_POPUP;
    367368        SetMenuDefaultItem(hMenu, SC_CLOSE, FALSE);
     
    422423    if (hMenu)
    423424    {
     425#ifdef __WIN32OS2__
     426        POPUPMENU *menu = MENU_GetMenu(hMenu);
     427#else
    424428        POPUPMENU *menu = (POPUPMENU*)hMenu;
     429#endif
    425430        menu->wFlags = MF_SYSMENU;
    426431        menu->hWnd = hWnd;
     
    436441            menu->items[0].fType = MF_SYSMENU | MF_POPUP;
    437442            menu->items[0].fState = 0;
     443#ifdef __WIN32OS2__
     444            menu = MENU_GetMenu(hPopupMenu);
     445#else
    438446            menu = (POPUPMENU*)hPopupMenu;
     447#endif
    439448            menu->wFlags |= MF_SYSMENU;
    440449
     
    562571    HMENU  hMenu )
    563572{
     573#ifdef __WIN32OS2__
     574    POPUPMENU  *menu = MENU_GetMenu(hMenu);
     575#else
    564576    POPUPMENU  *menu = (POPUPMENU*)hMenu;
     577#endif
    565578    UINT  i = menu->FocusedItem + 1;
    566579
     
    590603    HMENU  hMenu )
    591604{
     605#ifdef __WIN32OS2__
     606    POPUPMENU const  *menu = MENU_GetMenu(hMenu);
     607#else
    592608    POPUPMENU const  *menu = (POPUPMENU*)hMenu;
     609#endif
    593610    UINT  i;
    594611
     
    17191736            int pos;
    17201737            if((pos=MENU_FindSubMenu(&topmenu, hmenu))!=NO_SELECTED_ITEM){
     1738#ifdef __WIN32OS2__
     1739                POPUPMENU *ptm = MENU_GetMenu(topmenu);
     1740#else
    17211741                POPUPMENU *ptm = (POPUPMENU*)topmenu;
     1742#endif
    17221743                MENUITEM *ip = &ptm->items[pos];
    17231744                SendMessageA( hwndOwner, WM_MENUSELECT, MAKELONG(pos,
     
    18671888    /* Find where to insert new item */
    18681889    if (flags & MF_BYPOSITION) {
    1869         if (pos > menu->nItems) 
     1890        if (pos > menu->nItems)
    18701891            pos = menu->nItems;
    18711892    } else {
    1872         if (!MENU_FindItem( &hMenu, &pos, flags )) 
     1893        if (!MENU_FindItem( &hMenu, &pos, flags ))
    18731894            pos = menu->nItems;
    18741895        else {
     
    32173238
    32183239    if(lpRect) {
    3219         dprintf(("USER32: TrackPopupMenu %x %x (%d,%d) %x %x (%d,%d)(%d,%d)", hMenu, wFlags, x, y, nReserved, hWnd, lpRect->left, lpRect->top, lpRect->right, lpRect->bottom));
     3240        dprintf(("USER32: TrackPopupMenu %x %x (%d,%d) %x %x (%d,%d)(%d,%d)", hMenu, wFlags, x, y, nReserved, hWnd, lpRect->left, lpRect->top, lpRect->right, lpRect->bottom));
    32203241    }
    32213242    else dprintf(("USER32: TrackPopupMenu %x %x (%d,%d) %x %x lpRect=NULL", hMenu, wFlags, x, y, nReserved, hWnd));
     
    35023523    if (!str || !nMaxSiz)
    35033524    {
    3504         if (item && IS_STRING_ITEM(item->fType))
    3505             return strlen(item->text);
    3506         else
    3507             return 0;
     3525    if (item && IS_STRING_ITEM(item->fType))
     3526        return strlen(item->text);
     3527    else
     3528        return 0;
    35083529    }
    35093530
     
    35123533    if (item)
    35133534    {
    3514         if (!IS_STRING_ITEM(item->fType)) return 0;
    3515         lstrcpynA( str, item->text, nMaxSiz );
     3535    if (!IS_STRING_ITEM(item->fType)) return 0;
     3536    lstrcpynA( str, item->text, nMaxSiz );
    35163537    }
    35173538
     
    35373558    if (!str || !nMaxSiz)
    35383559    {
    3539         if (item && IS_STRING_ITEM(item->fType))
    3540             return strlen(item->text);
    3541         else
    3542             return 0;
     3560    if (item && IS_STRING_ITEM(item->fType))
     3561        return strlen(item->text);
     3562    else
     3563        return 0;
    35433564    }
    35443565
     
    35473568    if (item)
    35483569    {
    3549         if (!IS_STRING_ITEM(item->fType)) return 0;
    3550         lstrcpynAtoW( str, item->text, nMaxSiz );
     3570    if (!IS_STRING_ITEM(item->fType)) return 0;
     3571    lstrcpynAtoW( str, item->text, nMaxSiz );
    35513572    }
    35523573
     
    38833904    dprintf(("USER32: CreateMenu"));
    38843905
     3906#ifdef __WIN32OS2__
     3907    if (!(menu = (LPPOPUPMENU)HeapAlloc(GetProcessHeap(),0,sizeof(POPUPMENU)))) return 0;
     3908    if(ObjAllocateHandle(&hMenu, (DWORD)menu, USEROBJ_MENU) == FALSE) return 0;
     3909#else
    38853910    if (!(hMenu = (HMENU)HeapAlloc(GetProcessHeap(),0,sizeof(POPUPMENU)))) return 0;
    38863911    menu = (LPPOPUPMENU)hMenu;
     3912#endif
    38873913
    38883914    ZeroMemory(menu, sizeof(POPUPMENU));
     
    39353961                HeapFree(GetProcessHeap(), 0, lppop->items );
    39363962            }
     3963#ifdef __WIN32OS2__
     3964            HeapFree(GetProcessHeap(),0,(LPVOID)lppop);
     3965            ObjFreeHandle(hMenu);
     3966#else
    39373967            HeapFree(GetProcessHeap(),0,(LPVOID)hMenu);
     3968#endif
    39383969            MENU_ReleaseTopPopupWnd();
    39393970        }
Note: See TracChangeset for help on using the changeset viewer.