Ignore:
Timestamp:
Feb 20, 2001, 4:40:23 PM (25 years ago)
Author:
sandervl
Message:

ScrollWindow, maximized window + system menu fixes

File:
1 edited

Legend:

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

    r4597 r5215  
    1 /* $Id: win32wbasenonclient.cpp,v 1.26 2000-11-15 13:57:57 sandervl Exp $ */
     1/* $Id: win32wbasenonclient.cpp,v 1.27 2001-02-20 15:40:23 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2 (non-client methods)
     
    229229            pt.y = msg.pt.y;
    230230            ScreenToClient(getWindowHandle(), &pt);
    231             pt.x += rectClient.left;
    232             pt.y += rectClient.top;
     231        pt.x += rectClient.left;
     232        pt.y += rectClient.top;
    233233            msg.lParam = MAKELONG(pt.x,pt.y);
    234234
     
    264264      Win32BaseWindow *topparent = GetTopParent();
    265265
    266         if (GetActiveWindow() != topparent->getWindowHandle())
     266        if((getStyle() & WS_CHILD) && !(getExStyle() & WS_EX_MDICHILD))
    267267        {
    268             //SvL: Calling topparent->SetActiveWindow() causes focus problems
    269 //          topparent->SetActiveWindow();
    270             OSLibWinSetFocus(topparent->getOS2WindowHandle());
     268            if (GetActiveWindow() != topparent->getWindowHandle())
     269            {
     270                //SvL: Calling topparent->SetActiveWindow() causes focus problems
     271                topparent->SetActiveWindow();
     272////            OSLibWinSetFocus(topparent->getOS2WindowHandle());
     273            }
     274            if (GetActiveWindow() == topparent->getWindowHandle())
     275                 SendInternalMessageA(WM_SYSCOMMAND,SC_MOVE+HTCAPTION,lParam);
     276            else dprintf(("ACtive window (%x) != toplevel wnd %x", OSLibWinQueryActiveWindow(), topparent->getWindowHandle()));
    271277        }
    272 
    273         if (GetActiveWindow() == topparent->getWindowHandle())
    274             SendInternalMessageA(WM_SYSCOMMAND,SC_MOVE+HTCAPTION,lParam);
    275         else dprintf(("ACtive window (%x) != toplevel wnd %x", OSLibWinQueryActiveWindow(), topparent->getWindowHandle()));
     278        else {
     279            SetActiveWindow();
     280            if (GetActiveWindow() == topparent->getWindowHandle())
     281                 SendInternalMessageA(WM_SYSCOMMAND,SC_MOVE+HTCAPTION,lParam);
     282            else dprintf(("ACtive window (%x) != wnd %x", OSLibWinQueryActiveWindow(), getWindowHandle()));
     283        }
    276284        break;
    277285    }
    278286
    279287    case HTSYSMENU:
    280       if(dwStyle & WS_SYSMENU )
    281       {
    282         SendInternalMessageA(WM_SYSCOMMAND,SC_MOUSEMENU+HTSYSMENU,lParam);
    283       }
    284       break;
     288        if(dwStyle & WS_SYSMENU )
     289        {
     290            SendInternalMessageA(WM_SYSCOMMAND,SC_MOUSEMENU+HTSYSMENU,lParam);
     291        }
     292        break;
    285293
    286294    case HTMENU:
    287       SendInternalMessageA(WM_SYSCOMMAND,SC_MOUSEMENU,lParam);
    288       break;
     295        SendInternalMessageA(WM_SYSCOMMAND,SC_MOUSEMENU,lParam);
     296        break;
    289297
    290298    case HTHSCROLL:
    291       SendInternalMessageA(WM_SYSCOMMAND,SC_HSCROLL+HTHSCROLL,lParam);
    292       break;
     299        SendInternalMessageA(WM_SYSCOMMAND,SC_HSCROLL+HTHSCROLL,lParam);
     300        break;
    293301
    294302    case HTVSCROLL:
    295       SendInternalMessageA(WM_SYSCOMMAND,SC_VSCROLL+HTVSCROLL,lParam);
    296       break;
     303        SendInternalMessageA(WM_SYSCOMMAND,SC_VSCROLL+HTVSCROLL,lParam);
     304        break;
    297305
    298306    case HTMINBUTTON:
    299307    case HTMAXBUTTON:
    300308    case HTHELP:
    301       TrackMinMaxHelpBox(wParam);
    302       break;
     309        TrackMinMaxHelpBox(wParam);
     310        break;
    303311
    304312    case HTCLOSE:
    305       TrackCloseButton(wParam);
    306       break;
     313        TrackCloseButton(wParam);
     314        break;
    307315
    308316    case HTLEFT:
     
    664672}
    665673//******************************************************************************
     674//Returns position of system menu in screen coordinates
    666675//******************************************************************************
    667676BOOL Win32BaseWindow::GetSysPopupPos(RECT* rect)
    668677{
    669   if(hSysMenu)
    670   {
    671       if(dwStyle & WS_MINIMIZE )
    672         *rect = rectWindow;
    673       else
    674       {
    675           GetInsideRect(rect );
    676           OffsetRect( rect, rectWindow.left, rectWindow.top);
    677           rect->right = rect->left + GetSystemMetrics(SM_CYCAPTION) - 1;
    678           rect->bottom = rect->top + GetSystemMetrics(SM_CYCAPTION) - 1;
    679       }
    680       return TRUE;
    681   }
    682   return FALSE;
     678    if(hSysMenu)
     679    {
     680        if(dwStyle & WS_MINIMIZE) {
     681            *rect = rectWindow;
     682        }
     683        else
     684        {
     685            GetInsideRect(rect );
     686            OffsetRect( rect, rectWindow.left, rectWindow.top);
     687                if(getStyle() & WS_CHILD)
     688                ClientToScreen(getParent()->getWindowHandle(), (POINT *)rect);
     689
     690            rect->right = rect->left + GetSystemMetrics(SM_CYCAPTION) - 1;
     691            rect->bottom = rect->top + GetSystemMetrics(SM_CYCAPTION) - 1;
     692        }
     693        return TRUE;
     694    }
     695    return FALSE;
    683696}
    684697//******************************************************************************
     
    13401353        if (wParam == SC_PUTMARK)
    13411354            WriteLog(("Mark requested by user\n"));
    1342         else
    1343         if (wParam == SC_DEBUGINT3) 
     1355    else
     1356        if (wParam == SC_DEBUGINT3)
    13441357            DebugInt3();
    13451358#endif
Note: See TracChangeset for help on using the changeset viewer.