Ignore:
Timestamp:
May 4, 2001, 7:02:52 PM (24 years ago)
Author:
sandervl
Message:

FrameTrackFrame & nccalcsize bugfixes

File:
1 edited

Legend:

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

    r5258 r5655  
    1 /* $Id: win32wbasepos.cpp,v 1.22 2001-02-23 14:52:42 sandervl Exp $ */
     1/* $Id: win32wbasepos.cpp,v 1.23 2001-05-04 17:02:52 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2 (nonclient/position methods)
     
    153153
    154154   /* Send WM_NCCALCSIZE message to get new client area */
    155    if((winpos->flags & (SWP_FRAMECHANGED | SWP_NOSIZE)) != SWP_NOSIZE )
     155   params.rgrc[0] = *newWindowRect;
     156   if(calcValidRect)
    156157   {
    157         params.rgrc[0] = *newWindowRect;
    158         if(calcValidRect)
    159         {
    160             winposCopy = *winpos;
    161             params.rgrc[1] = *oldWindowRect;
    162             params.rgrc[2] = *oldClientRect;
    163             //client rectangel must be in parent coordinates
    164             OffsetRect(&params.rgrc[2], rectWindow.left, rectWindow.top);
    165 
    166             params.lppos = &winposCopy;
    167         }
    168         result = SendInternalMessageA(WM_NCCALCSIZE, calcValidRect, (LPARAM)&params );
    169 
    170         /* If the application send back garbage, ignore it */
    171         if(params.rgrc[0].left <= params.rgrc[0].right && params.rgrc[0].top <= params.rgrc[0].bottom)
    172         {
    173             *newClientRect = params.rgrc[0];
    174             //client rectangle now in parent coordinates; convert to 'frame' coordinates
    175             OffsetRect(newClientRect, -rectWindow.left, -rectWindow.top);
    176         }
    177 
    178         /* FIXME: WVR_ALIGNxxx */
    179         if(newClientRect->left != rectClient.left || newClientRect->top  != rectClient.top)
    180            winpos->flags &= ~SWP_NOCLIENTMOVE;
    181 
    182         if((newClientRect->right - newClientRect->left != rectClient.right - rectClient.left) ||
    183            (newClientRect->bottom - newClientRect->top != rectClient.bottom - rectClient.top))
    184              winpos->flags &= ~SWP_NOCLIENTSIZE;
    185 
     158        winposCopy = *winpos;
     159        params.rgrc[1] = *oldWindowRect;
     160        params.rgrc[2] = *oldClientRect;
     161        //client rectangel must be in parent coordinates
     162        OffsetRect(&params.rgrc[2], rectWindow.left, rectWindow.top);
     163
     164        params.lppos = &winposCopy;
    186165   }
    187    else
    188    if(!(winpos->flags & SWP_NOMOVE) &&
    189        (newClientRect->left != rectClient.left || newClientRect->top != rectClient.top)) {
    190             winpos->flags &= ~SWP_NOCLIENTMOVE;
     166   result = SendInternalMessageA(WM_NCCALCSIZE, calcValidRect, (LPARAM)&params );
     167
     168   /* If the application send back garbage, ignore it */
     169   if(params.rgrc[0].left <= params.rgrc[0].right && params.rgrc[0].top <= params.rgrc[0].bottom)
     170   {
     171        *newClientRect = params.rgrc[0];
     172        //client rectangle now in parent coordinates; convert to 'frame' coordinates
     173        OffsetRect(newClientRect, -rectWindow.left, -rectWindow.top);
    191174   }
     175
     176   /* FIXME: WVR_ALIGNxxx */
     177   if(newClientRect->left != rectClient.left || newClientRect->top  != rectClient.top)
     178        winpos->flags &= ~SWP_NOCLIENTMOVE;
     179
     180   if((newClientRect->right - newClientRect->left != rectClient.right - rectClient.left) ||
     181       (newClientRect->bottom - newClientRect->top != rectClient.bottom - rectClient.top))
     182        winpos->flags &= ~SWP_NOCLIENTSIZE;
     183
    192184   return result;
    193185}
Note: See TracChangeset for help on using the changeset viewer.