Ignore:
Timestamp:
May 2, 2003, 5:33:17 PM (22 years ago)
Author:
sandervl
Message:

Keep track of all open DCs and query the visible region during WM_VRNENABLED to work around a PM bug

File:
1 edited

Legend:

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

    r10045 r10060  
    1 /* $Id: pmwindow.cpp,v 1.212 2003-04-28 08:41:07 sandervl Exp $ */
     1/* $Id: pmwindow.cpp,v 1.213 2003-05-02 15:33:15 sandervl Exp $ */
    22/*
    33 * Win32 Window Managment Code for OS/2
     
    655655
    656656        win32wnd->callVisibleRgnNotifyProc(TRUE);
     657
     658        //Workaround for PM/GPI bug when moving/sizing a window with open DCs
     659        //
     660        //Windows applictions often get a DC and keep it open for the duration
     661        //of the application. When the DC's window is moved (full window dragging on)
     662        //PM/GPI doesn't seem to update the DC properly/in time.
     663        //This can result is visible distortions on the screen.
     664        //Debugging showed that querying the visible region of a DC will cure
     665        //this problem (GPI probably recalculates the visible region).
     666        int  nrdcs = 0;
     667        HDC  hdcWindow[MAX_OPENDCS];
     668
     669        if(win32wnd->queryOpenDCs(hdcWindow, MAX_OPENDCS, &nrdcs))
     670        {
     671            RECTL rcl = {0,0,1,1};
     672            HRGN hrgnRect;
     673
     674            for(int i=0;i<nrdcs;i++) {
     675                dprintf(("Recalc visible region of DC %x for window %x", hdcWindow[i], win32wnd->getWindowHandle()));
     676                hrgnRect = GreCreateRectRegion(hdcWindow[i], &rcl, 1);
     677                GreCopyClipRegion(hdcWindow[i], hrgnRect, 0, COPYCRGN_VISRGN);
     678                GreDestroyRegion(hdcWindow[i], hrgnRect);
     679            }
     680        }
     681
     682        //Workaround END
     683
    657684        if(!win32wnd->isComingToTop() && ((win32wnd->getExStyle() & WS_EX_TOPMOST_W) == WS_EX_TOPMOST_W))
    658685        {
Note: See TracChangeset for help on using the changeset viewer.