Changeset 1693 for trunk/src


Ignore:
Timestamp:
Nov 10, 1999, 6:11:31 PM (26 years ago)
Author:
cbratschi
Message:

ShowScrollBar fix

Location:
trunk/src/user32
Files:
8 edited

Legend:

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

    r1576 r1693  
    1 /* $Id: oslibwin.cpp,v 1.42 1999-11-03 19:51:42 sandervl Exp $ */
     1/* $Id: oslibwin.cpp,v 1.43 1999-11-10 17:11:29 cbratschi Exp $ */
    22/*
    33 * Window API wrappers for OS/2
     
    7171  BOOL TopLevel = hwndParent == HWND_DESKTOP;
    7272//  if(dwFrameStyle & FCF_TITLEBAR)
    73 //      TopLevel = TRUE;
     73//      TopLevel = TRUE;
    7474
    7575  FRAMECDATA FCData = {sizeof (FRAMECDATA), 0, 0, 0};
     
    8888                                TopLevel ? WC_FRAME : WIN32_INNERFRAME,
    8989                                pszName, dwWinStyle, 0, 0, 50, 30,
    90                                 hwndParent, HWND_TOP, 
     90                                hwndParent, HWND_TOP,
    9191                                id, &FCData, NULL);
    9292  if (*hwndFrame) {
     
    954954{
    955955  return WinQueryObjectWindow(HWND_DESKTOP);
    956 }
    957 //******************************************************************************
    958 //******************************************************************************
    959 BOOL OSLibWinShowScrollBar(HWND hwndParent, HWND hwndScroll, int scrollBar,
    960                            BOOL fShow, BOOL fForceChange)
    961 {
    962    HWND hwndObj = WinQueryObjectWindow(HWND_DESKTOP),hwndCurPar = WinQueryWindow(hwndScroll,QW_PARENT);
    963 
    964    if(hwndScroll == NULL) {
    965         dprintf(("OSLibWinShowScrollBar: scrollbar %d (parent %x) not found!", scrollBar, hwndParent));
    966         return FALSE;
    967    }
    968 
    969    if ((fShow && hwndCurPar == hwndObj) || (!fShow && hwndCurPar != hwndObj) || fForceChange)
    970    {
    971      //CB: bug: winhlp32: hide vert scrollbar on maximize doesn't update the frame
    972          WinSetParent(hwndScroll,fShow ? hwndParent:HWND_OBJECT,FALSE);
    973          WinSendMsg(hwndParent, WM_UPDATEFRAME,
    974                     MPFROMLONG( ( scrollBar == OSLIB_VSCROLL ) ? FCF_VERTSCROLL
    975                                                                : FCF_HORZSCROLL),
    976                     MPVOID );
    977    }
    978    return TRUE;
    979 }
    980 //******************************************************************************
    981 //******************************************************************************
    982 HWND OSLibWinQueryScrollBarHandle(HWND hwndParent, int scrollBar)
    983 {
    984    if(scrollBar == OSLIB_VSCROLL) {
    985         return WinWindowFromID(hwndParent, FID_VERTSCROLL);
    986    }
    987    else return WinWindowFromID(hwndParent, FID_HORZSCROLL);
    988956}
    989957//******************************************************************************
  • trunk/src/user32/oslibwin.h

    r1540 r1693  
    1 /* $Id: oslibwin.h,v 1.23 1999-11-01 19:11:41 sandervl Exp $ */
     1/* $Id: oslibwin.h,v 1.24 1999-11-10 17:11:29 cbratschi Exp $ */
    22/*
    33 * Window API wrappers for OS/2
     
    267267BOOL  OSLibWinEnableScrollBar(HWND hwndParent, int scrollBar, BOOL fEnable);
    268268HWND  OSLibWinQueryObjectWindow(VOID);
    269 BOOL  OSLibWinShowScrollBar(HWND hwndParent, HWND hwndScroll, int scrollBar, BOOL fShow, BOOL fForceChange = FALSE);
    270 HWND  OSLibWinQueryScrollBarHandle(HWND hwndParent, int scrollBar);
    271269ULONG OSLibWinGetScrollPos(HWND hwndParent, HWND hwndScroll);
    272270ULONG OSLibWinSetScrollPos(HWND hwndParent, HWND hwndScroll, int pos, int fRedraw);
  • trunk/src/user32/pmframe.cpp

    r1667 r1693  
    1 /* $Id: pmframe.cpp,v 1.21 1999-11-09 17:07:22 cbratschi Exp $ */
     1/* $Id: pmframe.cpp,v 1.22 1999-11-10 17:11:29 cbratschi Exp $ */
    22/*
    33 * Win32 Frame Managment Code for OS/2
     
    591591  return WinQuerySysValue(HWND_DESKTOP,SV_CXSIZEBORDER);
    592592}
     593
     594BOOL FrameCreateScrollBars(Win32BaseWindow *win32wnd,BOOL createHorz,BOOL createVert,BOOL updateFrame,DWORD *flags)
     595{
     596  HWND hwndHScroll = 0,hwndVScroll = 0;
     597  ULONG updateFlags = 0;
     598
     599  if (createHorz)
     600  {
     601    hwndHScroll = WinCreateWindow(win32wnd->getOS2FrameWindowHandle(),WC_SCROLLBAR,"",WS_VISIBLE | WS_PARENTCLIP | WS_SYNCPAINT | SBS_HORZ,0,0,0,0,win32wnd->getOS2FrameWindowHandle(),HWND_TOP,FID_HORZSCROLL,NULL,NULL);
     602    if (hwndHScroll) win32wnd->setHorzScrollHandle(hwndHScroll);
     603    else return FALSE;
     604    updateFlags = FCF_HORZSCROLL;
     605  }
     606
     607  if (createVert)
     608  {
     609    hwndVScroll = WinCreateWindow(win32wnd->getOS2FrameWindowHandle(),WC_SCROLLBAR,"",WS_VISIBLE | WS_PARENTCLIP | WS_SYNCPAINT | SBS_VERT,0,0,0,0,win32wnd->getOS2FrameWindowHandle(),HWND_TOP,FID_VERTSCROLL,NULL,NULL);
     610    if (hwndVScroll) win32wnd->setVertScrollHandle(hwndVScroll); else
     611    {
     612      if (hwndHScroll) WinDestroyWindow(hwndHScroll);
     613
     614      return FALSE;
     615    }
     616    updateFlags |= FCF_VERTSCROLL;
     617  }
     618
     619  win32wnd->subclassScrollBars(hwndHScroll,hwndVScroll);
     620
     621  if (updateFrame && updateFlags) WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)0,(MPARAM)0);
     622  if (flags) *flags = updateFlags;
     623
     624  return TRUE;
     625}
     626
     627VOID FrameGetScrollBarHandles(Win32BaseWindow *win32wnd,BOOL getHorz,BOOL getVert)
     628{
     629  if (getHorz) win32wnd->setHorzScrollHandle(WinWindowFromID(win32wnd->getOS2FrameWindowHandle(),FID_HORZSCROLL));
     630  if (getVert) win32wnd->setVertScrollHandle(WinWindowFromID(win32wnd->getOS2FrameWindowHandle(),FID_VERTSCROLL));
     631}
     632
     633BOOL FrameShowScrollBars(Win32BaseWindow *win32wnd,BOOL changeHorz,BOOL changeVert,BOOL fShow,BOOL updateFrame,DWORD *flags)
     634{
     635  HWND hwndObj = WinQueryObjectWindow(HWND_DESKTOP);
     636  ULONG updateFlags = 0;
     637
     638  if (changeHorz)
     639  {
     640    HWND hwndCurPar = WinQueryWindow(win32wnd->getHorzScrollHandle(),QW_PARENT);
     641
     642    if ((fShow && hwndCurPar == hwndObj) || (!fShow && hwndCurPar != hwndObj))
     643    {
     644      WinSetParent(win32wnd->getHorzScrollHandle(),fShow ? win32wnd->getOS2FrameWindowHandle():HWND_OBJECT,FALSE);
     645      updateFlags = FCF_HORZSCROLL;
     646    }
     647  }
     648
     649  if (changeVert)
     650  {
     651    HWND hwndCurPar = WinQueryWindow(win32wnd->getVertScrollHandle(),QW_PARENT);
     652
     653    if ((fShow && hwndCurPar == hwndObj) || (!fShow && hwndCurPar != hwndObj))
     654    {
     655      WinSetParent(win32wnd->getVertScrollHandle(),fShow ? win32wnd->getOS2FrameWindowHandle():HWND_OBJECT,FALSE);
     656      updateFlags |= FCF_VERTSCROLL;
     657    }
     658  }
     659
     660  if (updateFrame && updateFlags) WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)updateFlags,(MPARAM)0);
     661  if (flags) *flags = updateFlags;
     662
     663  return TRUE;
     664}
     665
     666VOID FrameUpdateFrame(Win32BaseWindow *win32wnd,DWORD flags)
     667{
     668  WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)flags,(MPARAM)0);
     669}
     670
  • trunk/src/user32/pmframe.h

    r1511 r1693  
    1 /* $Id: pmframe.h,v 1.3 1999-10-29 16:06:55 cbratschi Exp $ */
     1/* $Id: pmframe.h,v 1.4 1999-11-10 17:11:30 cbratschi Exp $ */
    22/*
    33 * Win32 Frame Managment Code for OS/2
     
    1313UINT  FrameGetDefSizeBorderSize(VOID);
    1414VOID  FrameTrackFrame(Win32BaseWindow *win32wnd,BOOL lefttop);
     15BOOL  FrameCreateScrollBars(Win32BaseWindow *win32wnd,BOOL createHorz,BOOL createVert,BOOL updateFrame,DWORD *flags = NULL);
     16VOID  FrameGetScrollBarHandles(Win32BaseWindow *win32wnd,BOOL getHorz,BOOL getVert);
     17BOOL  FrameShowScrollBars(Win32BaseWindow *win32wnd,BOOL changeHorz,BOOL changeVert,BOOL fShow,BOOL updateFrame,DWORD *flags = NULL);
     18VOID  FrameUpdateFrame(Win32BaseWindow *win32wnd,DWORD flags);
    1519
    1620#endif
  • trunk/src/user32/scroll.cpp

    r1667 r1693  
    1 /* $Id: scroll.cpp,v 1.19 1999-11-09 17:07:22 cbratschi Exp $ */
     1/* $Id: scroll.cpp,v 1.20 1999-11-10 17:11:30 cbratschi Exp $ */
    22/*
    33 * Scrollbar control
     
    16051605    {
    16061606      Win32BaseWindow *window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1607      BOOL createHorz = FALSE,createVert = FALSE;
    16071608
    16081609      if (!window)
     
    16131614      }
    16141615
    1615       if (window->getStyle() & (WS_HSCROLL | WS_VSCROLL))
    1616       {
    1617         BOOL rc;
    1618 
    1619         if (nBar == SB_HORZ || nBar == SB_BOTH)
    1620             rc = OSLibWinShowScrollBar(window->getOS2FrameWindowHandle(),
    1621                                        window->getHorzScrollHandle(),
    1622                                        OSLIB_HSCROLL, fShow);
    1623 
    1624         if (nBar == SB_VERT || (rc == TRUE && nBar == SB_BOTH))
    1625             rc = OSLibWinShowScrollBar(window->getOS2FrameWindowHandle(),
    1626                                        window->getVertScrollHandle(),
    1627                                        OSLIB_VSCROLL, fShow);
    1628         return rc;
    1629       }
     1616      return window->showScrollBars(nBar == SB_HORZ || nBar == SB_BOTH,nBar == SB_VERT || nBar == SB_BOTH,fShow);
    16301617    }
    16311618
  • trunk/src/user32/user32exp.def

    r1629 r1693  
    581581    _KeyTranslatePMToWin@4                    @2008
    582582    _KeyTranslatePMToWinBuf@12                @2009
     583    _wvsnprintfA@16                           @2010
  • trunk/src/user32/win32wbase.cpp

    r1671 r1693  
    1 /* $Id: win32wbase.cpp,v 1.78 1999-11-09 19:23:17 sandervl Exp $ */
     1/* $Id: win32wbase.cpp,v 1.79 1999-11-10 17:11:30 cbratschi Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    9797  fFirstShow = FALSE;
    9898
     99  SetLastError(0);
     100
    99101  //CB: replace by a secure method
    100102
     
    595597  OSLibWinSetOwner(OS2Hwnd, OS2HwndFrame);
    596598
    597   if (dwStyle & WS_HSCROLL)
    598     hwndHorzScroll = OSLibWinQueryScrollBarHandle(OS2HwndFrame, OSLIB_HSCROLL);
    599 
    600   if (dwStyle & WS_VSCROLL)
    601     hwndVertScroll = OSLibWinQueryScrollBarHandle(OS2HwndFrame, OSLIB_VSCROLL);
    602 
     599  FrameGetScrollBarHandles(this,dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);
    603600  subclassScrollBars(dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);
    604601
     
    12911288  SCROLL_SubclassScrollBars(subHorz ? hwndHorzScroll:0,subVert ? hwndVertScroll:0);
    12921289}
     1290//******************************************************************************
     1291//******************************************************************************
     1292BOOL Win32BaseWindow::showScrollBars(BOOL changeHorz,BOOL changeVert,BOOL fShow)
     1293{
     1294  BOOL rc = TRUE;
     1295  DWORD flags = 0;
     1296
     1297  if (fShow)
     1298  {
     1299    BOOL createHorz = FALSE,createVert = FALSE;
     1300    BOOL showHorz = FALSE,showVert = FALSE;
     1301
     1302    if (changeHorz)
     1303    {
     1304      if (!hwndHorzScroll)
     1305        createHorz = TRUE;
     1306      else
     1307        showHorz = TRUE;
     1308    }
     1309
     1310    if (changeVert)
     1311    {
     1312      if (!hwndVertScroll)
     1313        createVert = TRUE;
     1314      else
     1315        showVert = TRUE;
     1316    }
     1317
     1318    if (createHorz || createVert)
     1319    {
     1320      if (createHorz && !horzScrollInfo)
     1321      {
     1322        horzScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));
     1323        horzScrollInfo->MinVal = horzScrollInfo->CurVal = horzScrollInfo->Page = 0;
     1324        horzScrollInfo->MaxVal = 100;
     1325        horzScrollInfo->flags  = ESB_ENABLE_BOTH;
     1326        dwStyle |= WS_HSCROLL;
     1327      }
     1328
     1329      if (createVert && !vertScrollInfo)
     1330      {
     1331        vertScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));
     1332        vertScrollInfo->MinVal = vertScrollInfo->CurVal = vertScrollInfo->Page = 0;
     1333        vertScrollInfo->MaxVal = 100;
     1334        vertScrollInfo->flags  = ESB_ENABLE_BOTH;
     1335        dwStyle |= WS_VSCROLL;
     1336      }
     1337
     1338      rc = FrameCreateScrollBars(this,createHorz,createVert,FALSE,&flags);
     1339
     1340      if (!rc) return FALSE;
     1341      if (createHorz) dwStyle |= WS_HSCROLL;
     1342      if (createVert) dwStyle |= WS_VSCROLL;
     1343    }
     1344
     1345    if (showVert || showHorz)
     1346    {
     1347      DWORD newFlags;
     1348      rc = FrameShowScrollBars(this,showHorz,showVert,fShow,FALSE,&newFlags);
     1349      flags |= newFlags;
     1350      if (rc)
     1351      {
     1352        if (showHorz) dwStyle |= WS_HSCROLL;
     1353        if (showVert) dwStyle |= WS_VSCROLL;
     1354      }
     1355    }
     1356
     1357    if (flags) FrameUpdateFrame(this,flags);
     1358  } else
     1359  {
     1360    rc = FrameShowScrollBars(this,changeHorz && hwndHorzScroll,changeVert && hwndVertScroll,fShow,TRUE);
     1361
     1362    if (rc)
     1363    {
     1364      if (changeHorz) dwStyle &= ~WS_HSCROLL;
     1365      if (changeVert) dwStyle &= ~WS_VSCROLL;
     1366    }
     1367  }
     1368
     1369  return rc;
     1370}
    12931371/***********************************************************************
    12941372 *           NC_HandleSysCommand
  • trunk/src/user32/win32wbase.h

    r1583 r1693  
    1 /* $Id: win32wbase.h,v 1.41 1999-11-03 22:04:24 cbratschi Exp $ */
     1/* $Id: win32wbase.h,v 1.42 1999-11-10 17:11:31 cbratschi Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    188188
    189189 SCROLLBAR_INFO *getScrollInfo(int nBar);
    190        HWND      getVertScrollHandle()        { return hwndVertScroll; };
    191        HWND      getHorzScrollHandle()        { return hwndHorzScroll; };
     190       HWND      getVertScrollHandle()               { return hwndVertScroll; };
     191       VOID      setVertScrollHandle(HWND newHandle) { hwndVertScroll = newHandle; }
     192       HWND      getHorzScrollHandle()               { return hwndHorzScroll; };
     193       VOID      setHorzScrollHandle(HWND newHandle) { hwndHorzScroll = newHandle; }
    192194       VOID      subclassScrollBars(BOOL subHorz,BOOL subVert);
     195       BOOL      showScrollBars(BOOL changeHorz,BOOL changeVert,BOOL fShow);
    193196
    194197       LRESULT  SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam);
Note: See TracChangeset for help on using the changeset viewer.