Ignore:
Timestamp:
Aug 14, 2002, 12:37:45 PM (23 years ago)
Author:
sandervl
Message:

CUSTOM_TRACKFRAME code is the default now. removed old code;RMB on system menu icon pops up system menu (OS/2 look); GetSysPopupPos fix

File:
1 edited

Legend:

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

    r8997 r9001  
    1 /* $Id: pmwindow.cpp,v 1.185 2002-08-13 20:17:23 sandervl Exp $ */
     1/* $Id: pmwindow.cpp,v 1.186 2002-08-14 10:37:43 sandervl Exp $ */
    22/*
    33 * Win32 Window Managment Code for OS/2
     
    18551855        dprintf(("PMFRAME: WM_TRACKFRAME %x %x %x", win32wnd->getWindowHandle(), mp1, mp2));
    18561856        if(fOS2Look) {//sent by titlebar control
    1857 #ifdef CUSTOM_TRACKFRAME
    18581857            Frame_SysCommandSizeMove(win32wnd, SC_MOVE_W+HTCAPTION_W);
    1859 #else
    1860             FrameTrackFrame(win32wnd, TF_MOVE);
    1861 #endif
    18621858        }
    18631859        rc = 0;
     
    19261922    WinSetWindowUShort(hwnd, QWS_FLAGS, ulFrameFlags);
    19271923}
    1928 #ifndef CUSTOM_TRACKFRAME
    1929 //******************************************************************************
    1930 //TODO: Quickly moving a window two times doesn't force a repaint (1st time)
    1931 //
    1932 //
    1933 BOOL (APIENTRY *WinTrackWindow)(HWND hwndTrack, PTRACKINFO pti) = NULL;
    1934 //
    1935 //******************************************************************************
    1936 VOID FrameTrackFrame(Win32BaseWindow *win32wnd,DWORD flags)
    1937 {
    1938   TRACKINFO track;
    1939   RECTL     rcl;
    1940   PRECT     pWindowRect, pClientRect;
    1941   HWND      hwndTracking;
    1942   LONG      parentHeight, parentWidth;
    1943   static    BOOL fInit = FALSE;
    1944   APIRET    rc;
    1945   BOOL      ret;
    1946   HWND      hwnd = win32wnd->getWindowHandle();
    1947 
    1948     if(!fInit) {
    1949         HMODULE hModule;
    1950         char    buf[CCHMAXPATH];
    1951         rc = DosLoadModule(buf, sizeof(buf), "PMMERGE", &hModule);
    1952         rc = DosQueryProcAddr(hModule, 5466, NULL, (PFN *)&WinTrackWindow);
    1953         if(rc) WinTrackWindow = NULL;
    1954         fInit = TRUE;
    1955     }
    1956     dprintf(("FrameTrackFrame: %x %x", hwnd, flags));
    1957     track.cxBorder = 4;
    1958     track.cyBorder = 4;  /* 4 pel wide lines used for rectangle */
    1959     track.cxGrid = 1;
    1960     track.cyGrid = 1;    /* smooth tracking with mouse */
    1961     track.cxKeyboard = 8;
    1962     track.cyKeyboard = 8; /* faster tracking using cursor keys */
    1963 
    1964     pWindowRect = win32wnd->getWindowRect();
    1965     if(win32wnd->getParent()) {
    1966         parentHeight = win32wnd->getParent()->getClientHeight();
    1967         parentWidth  = win32wnd->getParent()->getClientWidth();
    1968         hwndTracking = win32wnd->getParent()->getOS2WindowHandle();
    1969     }
    1970     else {
    1971         parentHeight = OSLibQueryScreenHeight();
    1972         parentWidth  = OSLibQueryScreenWidth();
    1973         hwndTracking = HWND_DESKTOP;
    1974     }
    1975 
    1976     mapWin32ToOS2Rect(parentHeight, pWindowRect, (PRECTLOS2)&track.rclTrack);
    1977     rcl = track.rclTrack;
    1978     WinQueryWindowRect(hwndTracking, &track.rclBoundary);
    1979 
    1980     track.ptlMinTrackSize.x = 10;
    1981     track.ptlMinTrackSize.y = 10;  /* set smallest allowed size of rectangle */
    1982     track.ptlMaxTrackSize.x = parentWidth;
    1983     track.ptlMaxTrackSize.y = parentHeight; /* set largest allowed size of rectangle */
    1984 
    1985     win32wnd->AdjustTrackInfo((PPOINT)&track.ptlMinTrackSize, (PPOINT)&track.ptlMaxTrackSize);
    1986 
    1987     track.fs = flags;
    1988 
    1989     BOOL fDynamicDrag = WinQuerySysValue(HWND_DESKTOP, SVOS_DYNAMICDRAG);
    1990 
    1991     //TODO: send WM_QUERYDRAGICON to fetch icon (not really necessary)
    1992 
    1993     SendMessageA( hwnd, WM_ENTERSIZEMOVE_W, 0, 0);
    1994 
    1995     SEL sel = RestoreOS2FS();
    1996     if(fDynamicDrag && WinTrackWindow) {
    1997          ret = WinTrackWindow(win32wnd->getOS2FrameWindowHandle(), &track);
    1998     }
    1999     else ret = WinTrackRect(hwndTracking, NULL, &track);
    2000     SetFS(sel);
    2001 
    2002 //TODO:
    2003 //    if (HOOK_CallHooksA( WH_CBT_W, HCBT_MOVESIZE_W, (WPARAM)hwnd, (LPARAM)&sizingRect )) moved = FALSE;
    2004 
    2005     SendMessageA( hwnd, WM_EXITSIZEMOVE_W, 0, 0 );
    2006     SendMessageA( hwnd, WM_SETVISIBLE_W, !IsIconic(hwnd), 0L);
    2007 
    2008     if(ret) {
    2009         /* if successful copy final position back */
    2010         if(!WinEqualRect(0, &rcl, &track.rclTrack)) {
    2011             dprintf(("FrameTrackFrame: new (os/2) window rect: (%d,%d)(%d,%d)", track.rclTrack.xLeft, track.rclTrack.yBottom, track.rclTrack.xRight - track.rclTrack.xLeft, track.rclTrack.yTop - track.rclTrack.yBottom));
    2012             if(flags == TF_MOVE) {
    2013                 WinSetWindowPos(win32wnd->getOS2FrameWindowHandle(),
    2014                                 0, track.rclTrack.xLeft, track.rclTrack.yBottom,
    2015                                 0, 0, SWP_MOVE);
    2016             }
    2017             else {
    2018                 WinSetWindowPos(win32wnd->getOS2FrameWindowHandle(),
    2019                                 0, track.rclTrack.xLeft, track.rclTrack.yBottom,
    2020                                 track.rclTrack.xRight - track.rclTrack.xLeft,
    2021                                 track.rclTrack.yTop - track.rclTrack.yBottom,
    2022                                 SWP_SIZE|SWP_MOVE);
    2023             }
    2024         }
    2025         return;
    2026    }
    2027    return;
    2028 }
    2029 #endif
    20301924//******************************************************************************
    20311925//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.