Changeset 2391 for trunk/src


Ignore:
Timestamp:
Jan 9, 2000, 6:57:50 PM (26 years ago)
Author:
sandervl
Message:

System menu commands now work

Location:
trunk/src/user32
Files:
7 edited

Legend:

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

    r2378 r2391  
    1 /* $Id: oslibmenu.cpp,v 1.7 2000-01-08 16:53:38 sandervl Exp $ */
     1/* $Id: oslibmenu.cpp,v 1.8 2000-01-09 17:57:46 sandervl Exp $ */
    22/*
    33 * Window Menu wrapper functions for OS/2
     
    110110//******************************************************************************
    111111//******************************************************************************
     112void OSLibWinSetSystemMenu(HWND hMenu)
     113{
     114   WinSetWindowUShort(hMenu, QWS_ID, FID_SYSMENU);
     115}
     116//******************************************************************************
     117//******************************************************************************
  • trunk/src/user32/oslibmenu.h

    r2371 r2391  
    1 /* $Id: oslibmenu.h,v 1.5 2000-01-08 14:15:06 sandervl Exp $ */
     1/* $Id: oslibmenu.h,v 1.6 2000-01-09 17:57:46 sandervl Exp $ */
    22/*
    33 * Window Menu wrapper functions for OS/2
     
    2424BOOL  OSLibGetMenuItemRect(HWND hMenu, int index, LPRECT pRect);
    2525int   OSLibGetMenuItemPos(HWND hMenu, int item);
    26  
     26void  OSLibWinSetSystemMenu(HWND hMenu);
     27
    2728#endif //__OSLIBGDI_H__
  • trunk/src/user32/oslibmsgtranslate.cpp

    r2383 r2391  
    1 /* $Id: oslibmsgtranslate.cpp,v 1.11 2000-01-09 14:37:09 sandervl Exp $ */
     1/* $Id: oslibmsgtranslate.cpp,v 1.12 2000-01-09 17:57:47 sandervl Exp $ */
    22/*
    33 * Window message translation functions for OS/2
     
    396396      ULONG win32sc;
    397397
     398
    398399        if(SHORT2FROMMP(os2Msg->mp2) == TRUE) {//syscommand caused by mouse action
    399             POINTL pointl;
    400             WinQueryPointerPos(HWND_DESKTOP, &pointl);
    401             x = pointl.x;
    402             y = mapScreenY(y);
    403         }
    404         switch(SHORT1FROMMP(os2Msg->mp1)) {
    405         case SC_MOVE:
    406             win32sc = SC_MOVE_W;
    407             break;
    408         case SC_CLOSE:
    409             win32sc = SC_CLOSE_W;
    410             break;
    411         case SC_MAXIMIZE:
    412             win32sc = SC_MAXIMIZE_W;
    413             break;
    414         case SC_MINIMIZE:
    415             win32sc = SC_MINIMIZE_W;
    416             break;
    417         case SC_NEXTFRAME:
    418         case SC_NEXTWINDOW:
    419             win32sc = SC_NEXTWINDOW_W;
    420             break;
    421         case SC_RESTORE:
    422             win32sc = SC_RESTORE_W;
    423             break;
    424         case SC_TASKMANAGER:
    425             win32sc = SC_TASKLIST_W;
    426             break;
    427         default:
    428             goto dummymessage;
    429         }
    430         winMsg->message    = WINWM_SYSCOMMAND;
    431         winMsg->wParam = (WPARAM)win32sc;
    432         winMsg->lParam = MAKELONG((USHORT)x, (USHORT)y);
     400            x = winMsg->pt.x;
     401            y = winMsg->pt.y;
     402        }
     403        //When fOS2Look == 0, we display our own system menu (so no translation required)
     404        if(fOS2Look) {
     405            switch(SHORT1FROMMP(os2Msg->mp1)) {
     406            case SC_MOVE:
     407                win32sc = SC_MOVE_W;
     408                break;
     409            case SC_CLOSE:
     410                win32sc = SC_CLOSE_W;
     411                break;
     412            case SC_MAXIMIZE:
     413                win32sc = SC_MAXIMIZE_W;
     414                break;
     415            case SC_MINIMIZE:
     416                win32sc = SC_MINIMIZE_W;
     417                break;
     418            case SC_NEXTFRAME:
     419            case SC_NEXTWINDOW:
     420                win32sc = SC_NEXTWINDOW_W;
     421                break;
     422            case SC_RESTORE:
     423                win32sc = SC_RESTORE_W;
     424                break;
     425            case SC_TASKMANAGER:
     426                win32sc = SC_TASKLIST_W;
     427                break;
     428            default:
     429                goto dummymessage;
     430            }
     431        }
     432        else    win32sc = (ULONG)os2Msg->mp1;
     433
     434        winMsg->message = WINWM_SYSCOMMAND;
     435        winMsg->wParam  = (WPARAM)win32sc;
     436        winMsg->lParam  = MAKELONG((USHORT)x, (USHORT)y);
    433437        break;
    434438    }
  • trunk/src/user32/pmframe.cpp

    r2383 r2391  
    1 /* $Id: pmframe.cpp,v 1.34 2000-01-09 14:37:09 sandervl Exp $ */
     1/* $Id: pmframe.cpp,v 1.35 2000-01-09 17:57:47 sandervl Exp $ */
    22/*
    33 * Win32 Frame Managment Code for OS/2
     
    405405    }
    406406
     407    case WM_COMMAND:
     408    {
     409        dprintf(("PMFRAME: WM_COMMAND %x %x %x", hwnd, mp1, mp2));
     410        HWND hSysMenu = win32wnd->getSystemMenu();
     411        USHORT id = (USHORT)(ULONG)mp1;
     412        if(hSysMenu) {
     413                if((int)WinSendMsg(hSysMenu, MM_ITEMPOSITIONFROMID, MPFROM2SHORT(id, TRUE), 0) != MIT_NONE) {
     414                        return (MRESULT)WinPostMsg(win32wnd->getOS2WindowHandle(), WM_SYSCOMMAND, mp1, (MPARAM)1);
     415                }
     416        }
     417        goto RunDefFrameProc;
     418    }
     419
    407420    case WM_DESTROY:
    408421      #ifdef PMFRAMELOG
  • trunk/src/user32/win32wbase.cpp

    r2388 r2391  
    1 /* $Id: win32wbase.cpp,v 1.137 2000-01-09 16:52:54 sandervl Exp $ */
     1/* $Id: win32wbase.cpp,v 1.138 2000-01-09 17:57:48 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    20082008        if(fRevert == FALSE) {
    20092009            OS2SysMenu = LoadMenuA(hInstanceUser32, (LPCSTR)"SYSMENU");
     2010            if(OS2SysMenu) {
     2011                OSLibWinSetSystemMenu(OS2SysMenu);
     2012            }
    20102013            return OS2SysMenu;
    20112014        }
  • trunk/src/user32/win32wbase.h

    r2384 r2391  
    1 /* $Id: win32wbase.h,v 1.69 2000-01-09 15:56:05 sandervl Exp $ */
     1/* $Id: win32wbase.h,v 1.70 2000-01-09 17:57:49 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    152152         BOOL   SetMenu(ULONG hMenu);
    153153         HMENU  GetSystemMenu(BOOL fRevert);
     154         HMENU  getSystemMenu();
    154155
    155156         BOOL   SetIcon(HICON hIcon);
  • trunk/src/user32/win32wbasepaint.cpp

    r2388 r2391  
    1 /* $Id: win32wbasepaint.cpp,v 1.3 2000-01-09 16:52:55 sandervl Exp $ */
     1/* $Id: win32wbasepaint.cpp,v 1.4 2000-01-09 17:57:50 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    4343#include "initterm.h"
    4444
     45#define SC_ABOUTODIN            (SC_SCREENSAVE+1)
     46#define SC_PUTMARK              (SC_SCREENSAVE+2)
     47
    4548#define HAS_DLGFRAME(style,exStyle) \
    4649    (((exStyle) & WS_EX_DLGMODALFRAME) || \
     
    8386static HBITMAP hbitmapRestoreD = 0;
    8487static HMENU   hSysMenu = 0;
     88
     89static INT (* WINAPI ShellAboutA)(HWND,LPCSTR,LPCSTR,HICON) = 0;
    8590
    8691BYTE lpGrayMask[] = { 0xAA, 0xA0,
     
    10151020            hwndTitleBar = OSLibWinGetFrameControlHandle(getOS2FrameWindowHandle(), OSLIB_FID_TITLEBAR);
    10161021            OSLibWinQueryWindowRect(hwndTitleBar, &rect, RELATIVE_TO_SCREEN);
    1017             TrackPopupMenu((OS2SysMenu) ? OS2SysMenu : hSysMenu, TPM_LEFTALIGN|TPM_LEFTBUTTON,
    1018                            rect.left, rect.bottom+1,
    1019                            0, getWindowHandle(), NULL);
     1022            //Need to use Open32 api directly, as we want the msgs to go to the frame window
     1023            O32_TrackPopupMenu((OS2SysMenu) ? OS2SysMenu : hSysMenu, TPM_LEFTALIGN|TPM_LEFTBUTTON,
     1024                               rect.left, rect.bottom+1,
     1025                               0, getOS2FrameWindowHandle(), NULL);
    10201026        }
    10211027        //MENU_TrackMouseMenuBar( wndPtr, wParam & 0x000F, pt32 );
     1028        break;
     1029
     1030    case SC_SCREENSAVE:
     1031        if (wParam == SC_ABOUTODIN) {
     1032            if(ShellAboutA == 0) {
     1033                HINSTANCE hShell32 = LoadLibraryA("SHELL32");
     1034                if(hShell32 == 0)
     1035                    break;
     1036                *(VOID **)&ShellAboutA = (VOID *)GetProcAddress(hShell32, "ShellAboutA");
     1037            }
     1038            ShellAboutA(Win32Hwnd,"Odin","Odin alpha release compiled with IBM VAC++",0);
     1039        }
     1040        else
     1041        if (wParam == SC_PUTMARK)
     1042            dprintf(("Mark requested by user\n"));
    10221043        break;
    10231044
     
    10401061        break;
    10411062
    1042     case SC_SCREENSAVE:
    1043         if (wParam == SC_ABOUTWINE)
    1044             ShellAboutA(hwnd, "Odin", WINE_RELEASE_INFO, 0);
    1045         else
    1046         if (wParam == SC_PUTMARK)
    1047             dprintf(("Mark requested by user\n"));
    1048         break;
    1049 
    10501063    case SC_HOTKEY:
    10511064    case SC_ARRANGE:
     
    10591072//******************************************************************************
    10601073//******************************************************************************
    1061 
     1074HMENU Win32BaseWindow::getSystemMenu()
     1075{
     1076    if(!fOS2Look) {
     1077        return (OS2SysMenu) ? OS2SysMenu : hSysMenu;
     1078    }
     1079    return 0;
     1080}
     1081//******************************************************************************
     1082//******************************************************************************
     1083
Note: See TracChangeset for help on using the changeset viewer.