Changeset 6965


Ignore:
Timestamp:
Oct 8, 2001, 2:19:10 PM (24 years ago)
Author:
sandervl
Message:

WM_WINDOWPOSCHANGED activation fix

File:
1 edited

Legend:

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

    r6961 r6965  
    1 /* $Id: pmwindow.cpp,v 1.153 2001-10-07 11:48:28 sandervl Exp $ */
     1/* $Id: pmwindow.cpp,v 1.154 2001-10-08 12:19:10 sandervl Exp $ */
    22/*
    33 * Win32 Window Managment Code for OS/2
     
    6767void FrameReplaceMenuItem(HWND hwndMenu, ULONG nIndex, ULONG idOld, ULONG   idNew,
    6868                          HBITMAP hbmNew);
     69void FrameSetFocus(HWND hwnd);
    6970
    7071VOID APIENTRY DspInitSystemDriverName(PSZ pszDriverName, ULONG lenDriverName);
     
    913914            if(ulFlags & SWP_ACTIVATE)
    914915            {
    915                 ULONG ulFrameFlags;
    916 
    917916                if(ulFlags & SWP_ZORDER) {
    918                     ulFrameFlags = WinQueryWindowUShort(hwnd, QWS_FLAGS);
     917                    dprintf(("Set FF_NOACTIVATESWP"));
     918                    ULONG ulFrameFlags = WinQueryWindowUShort(hwnd, QWS_FLAGS);
    919919                    WinSetWindowUShort(hwnd, QWS_FLAGS, ulFrameFlags | FF_NOACTIVATESWP);
    920920                }
     
    926926                else
    927927                {
    928                     HWND hwndFocusSave = WinQueryWindowULong(hwnd, QWL_HWNDFOCUSSAVE);
    929                     if(!WinIsWindow(hab, hwndFocusSave)) {
    930                         hwndFocusSave = WinWindowFromID(hwnd, FID_CLIENT);
    931                         WinSetWindowULong(hwnd, QWL_HWNDFOCUSSAVE, hwndFocusSave);
    932                     }
    933                     dprintf(("WM_ADJUSTWINDOWPOS: hwndFocusSave %x %x", OS2ToWin32Handle(hwndFocusSave), hwndFocusSave));
    934                     WinSetFocus(HWND_DESKTOP, hwndFocusSave);
    935 
    936                     ulFrameFlags  = WinQueryWindowUShort(hwnd, QWS_FLAGS);
    937                     ulFrameFlags &= ~FF_NOACTIVATESWP;
    938                     WinSetWindowUShort(hwnd, QWS_FLAGS, ulFrameFlags);
     928                    FrameSetFocus(hwnd);
    939929                }
    940930            }
     
    959949            }
    960950        }
    961         dprintf(("WM_ADJUSTWINDOWPOS ret %x", ret));
     951        dprintf(("WM_ADJUSTWINDOWPOS ret %x flags %x", ret, WinQueryWindowUShort(hwnd, QWS_FLAGS)));
    962952        rc = (MRESULT)ret;
    963953        break;
     
    966956    case WM_WINDOWPOSCHANGED:
    967957    {
    968       PSWP      pswp   = (PSWP)mp1,pswpOld = pswp+1;
    969       SWP       swpOld = *(pswp + 1);
     958      PSWP      pswp    = (PSWP)mp1,pswpOld = pswp+1;
     959      SWP       swpOld  = *(pswp + 1);
    970960      WINDOWPOS wp;
     961      ULONG     flAfp   = (ULONG)mp2;
    971962      HWND      hParent = NULLHANDLE;
    972963      RECTL     rect;
     
    990981                WinShowWindow(win32wnd->getOS2WindowHandle(), 0);
    991982            }
     983            //MUST call the old frame window proc!
    992984            goto RunDefFrameWndProc;
    993985        }
     
    10291021        if(pswp->fl & SWP_HIDE) {
    10301022            WinShowWindow(win32wnd->getOS2WindowHandle(), 0);
     1023        }
     1024
     1025        if(flAfp & AWP_ACTIVATE)
     1026        {
     1027            FrameSetFocus(hwnd);
    10311028        }
    10321029
     
    14601457    return WinDefWindowProc( hwnd, msg, mp1, mp2 );
    14611458}
     1459//******************************************************************************
     1460//******************************************************************************
     1461void FrameSetFocus(HWND hwnd)
     1462{
     1463    HWND hwndFocusSave = WinQueryWindowULong(hwnd, QWL_HWNDFOCUSSAVE);
     1464    if(!WinIsWindow(hab, hwndFocusSave)) {
     1465        hwndFocusSave = WinWindowFromID(hwnd, FID_CLIENT);
     1466        WinSetWindowULong(hwnd, QWL_HWNDFOCUSSAVE, hwndFocusSave);
     1467    }
     1468    dprintf(("FrameSetFocus: hwndFocusSave %x %x", OS2ToWin32Handle(hwndFocusSave), hwndFocusSave));
     1469    WinSetFocus(HWND_DESKTOP, hwndFocusSave);
     1470
     1471    ULONG ulFrameFlags  = WinQueryWindowUShort(hwnd, QWS_FLAGS);
     1472    ulFrameFlags &= ~FF_NOACTIVATESWP;
     1473    WinSetWindowUShort(hwnd, QWS_FLAGS, ulFrameFlags);
     1474}
    14621475#ifndef CUSTOM_TRACKFRAME
    14631476//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.