Changeset 2381 for trunk/src/user32/new/scroll.cpp
- Timestamp:
- Jan 9, 2000, 3:14:25 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/new/scroll.cpp
r2290 r2381 1 /* $Id: scroll.cpp,v 1. 7 2000-01-01 14:57:22cbratschi Exp $ */1 /* $Id: scroll.cpp,v 1.8 2000-01-09 14:14:23 cbratschi Exp $ */ 2 2 /* 3 3 * Scrollbar control … … 73 73 static BOOL SCROLL_MovingThumb = FALSE; 74 74 75 // Get the scrollbar handle: works only with frame/control handles76 77 static HWND SCROLL_GetScrollHandle(HWND hwnd,INT nBar)78 {79 switch(nBar)80 {81 case SB_HORZ:82 case SB_VERT:83 {84 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);85 86 if (!win32wnd) return 0;87 //CB: I removed WS_* check due to problems, but it should work88 if (nBar == SB_HORZ)89 return /*(win32wnd->getStyle() & WS_HSCROLL) ?*/ Win32BaseWindow::OS2ToWin32Handle(win32wnd->getHorzScrollHandle())/*:0*/;90 else91 return /*(win32wnd->getStyle() & WS_VSCROLL) ?*/ Win32BaseWindow::OS2ToWin32Handle(win32wnd->getVertScrollHandle())/*:0*/;92 }93 94 case SB_CTL:95 return hwnd;96 97 default:98 return 0;99 }100 }101 102 static HWND SCROLL_GetFrameHandle(HWND hwnd)103 {104 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);105 106 if (!win32wnd) return 0;107 return Win32BaseWindow::GetWindowFromOS2FrameHandle(OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER))->getWindowHandle();108 }109 110 75 // Get the infoPtr: works only with scrollbar handles 111 76 … … 120 85 case SB_VERT: 121 86 win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 122 if (!win32wnd) return NULL;123 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER);124 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame);125 87 if (!win32wnd) return NULL; 126 88 return win32wnd->getScrollInfo(nBar); … … 157 119 { 158 120 case SB_HORZ: 121 { 122 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 123 RECT rectClient; 124 125 if (!win32wnd) return FALSE; 126 rectClient = *win32wnd->getClientRectPtr(); 127 mapWin32Rect(win32wnd->getParent() ? win32wnd->getParent()->getOS2WindowHandle():OSLIB_HWND_DESKTOP,win32wnd->getOS2FrameWindowHandle(),&rectClient); 128 lprect->left = rectClient.left; 129 lprect->top = rectClient.bottom; 130 lprect->right = rectClient.right; 131 lprect->bottom = lprect->top+GetSystemMetrics(SM_CYHSCROLL); 132 if (win32wnd->getStyle() & WS_BORDER) 133 { 134 lprect->left--; 135 lprect->right++; 136 } else if (win32wnd->getStyle() & WS_VSCROLL) 137 lprect->right++; 138 vertical = FALSE; 139 break; 140 } 141 159 142 case SB_VERT: 143 { 144 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 145 RECT rectClient; 146 147 if (!win32wnd) return FALSE; 148 rectClient = *win32wnd->getClientRectPtr(); 149 mapWin32Rect(win32wnd->getParent() ? win32wnd->getParent()->getOS2WindowHandle():OSLIB_HWND_DESKTOP,win32wnd->getOS2FrameWindowHandle(),&rectClient); 150 lprect->left = rectClient.right; 151 lprect->top = rectClient.top; 152 lprect->right = lprect->left+GetSystemMetrics(SM_CXVSCROLL); 153 lprect->bottom = rectClient.bottom; 154 if(win32wnd->getStyle() & WS_BORDER) 155 { 156 lprect->top--; 157 lprect->bottom++; 158 } else if (win32wnd->getStyle() & WS_HSCROLL) 159 lprect->bottom++; 160 vertical = TRUE; 161 break; 162 } 163 164 case SB_CTL: 165 { 166 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 167 160 168 GetClientRect( hwnd, lprect ); 161 vertical = ( nBar == SB_VERT);169 vertical = ((dwStyle & SBS_VERT) != 0); 162 170 break; 163 164 case SB_CTL: 165 { 166 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 167 168 GetClientRect( hwnd, lprect ); 169 vertical = ((dwStyle & SBS_VERT) != 0); 170 break; 171 } 171 } 172 172 173 173 default: … … 566 566 * Redraw the whole scrollbar. 567 567 */ 568 void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT nBar, 569 BOOL arrows, BOOL interior ) 568 void SCROLL_DrawScrollBar(HWND hwnd,HDC hdc,INT nBar,BOOL arrows,BOOL interior) 570 569 { 571 570 INT arrowSize, thumbSize, thumbPos; … … 584 583 HBRUSH hBrush; 585 584 586 hdc = GetDC (hwnd);585 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 587 586 hBrush = GetSysColorBrush(COLOR_3DFACE); 588 587 GetClientRect(hwnd,&rect); … … 635 634 BOOL arrows, BOOL interior ) 636 635 { 637 Win32BaseWindow *window; 638 HDC hdc; 639 640 641 hdc = GetDC(hwnd); 642 643 if (!hdc) return; 644 645 SCROLL_DrawScrollBar( hwnd, hdc, nBar, arrows, interior ); 646 ReleaseDC( hwnd, hdc ); 636 HDC hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 637 638 if (!hdc) return; 639 640 SCROLL_DrawScrollBar( hwnd, hdc, nBar, arrows, interior ); 641 ReleaseDC( hwnd, hdc ); 647 642 } 648 643 … … 763 758 764 759 vertical = SCROLL_GetScrollBarRect(hwnd,nBar,&rect,&arrowSize,&thumbSize,&thumbPos); 765 if (nBar == SB_CTL) hwndOwner = GetParent(hwnd); else 766 { 767 Win32BaseWindow *win32wnd; 768 HWND hwndFrame; 769 770 win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 771 if (!win32wnd) return res; 772 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER); 773 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame); 774 if (!win32wnd) return res; 775 hwndOwner = win32wnd->getWindowHandle(); 776 } 760 hwndOwner = (nBar == SB_CTL) ? GetParent(hwnd):hwnd; 777 761 778 762 hwndCtl = (nBar == SB_CTL) ? hwnd:0; … … 795 779 if ((SCROLL_FocusWin == hwnd) && SCROLL_Highlighted) 796 780 { 797 hdc = GetDC (hwnd);781 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 798 782 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 799 783 ReleaseDC(hwnd,hdc); … … 854 838 { 855 839 SCROLL_Highlighted = FALSE; 856 hdc = GetDC (hwnd);840 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 857 841 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 858 842 ReleaseDC(hwnd,hdc); … … 873 857 if (!SCROLL_Scrolling) 874 858 { 875 hdc = GetDC (hwnd);859 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 876 860 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 877 861 ReleaseDC(hwnd,hdc); … … 884 868 } 885 869 886 hdc = GetDC (hwnd);870 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 887 871 888 872 switch(SCROLL_trackHitTest) … … 1103 1087 INT oldPos = infoPtr->CurVal; 1104 1088 1105 SetScrollRange( (nBar == SB_CTL) ? hwnd:SCROLL_GetFrameHandle(hwnd),nBar,wParam,lParam,redraw);1089 SetScrollRange(hwnd,nBar,wParam,lParam,redraw); 1106 1090 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1107 1091 } … … 1189 1173 } 1190 1174 1191 /* frame handlers */1192 1193 VOID SCROLL_SubclassScrollBars(HWND hwndHorz,HWND hwndVert)1194 {1195 if (hwndHorz) SetWindowLongA(hwndHorz,GWL_WNDPROC,(ULONG)HorzScrollBarWndProc);1196 if (hwndVert) SetWindowLongA(hwndVert,GWL_WNDPROC,(ULONG)VertScrollBarWndProc);1197 }1198 1199 LRESULT WINAPI HorzScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )1200 {1201 switch (message)1202 {1203 case WM_LBUTTONDOWN:1204 case WM_LBUTTONUP:1205 case WM_NCHITTEST:1206 case WM_CAPTURECHANGED:1207 case WM_MOUSEMOVE:1208 case WM_SYSTIMER:1209 case WM_SETFOCUS:1210 case WM_KILLFOCUS:1211 return SCROLL_HandleScrollEvent(hwnd,wParam,lParam,SB_HORZ,message);1212 1213 case WM_ERASEBKGND:1214 return 1;1215 1216 case WM_GETDLGCODE:1217 return DLGC_WANTARROWS; /* Windows returns this value */1218 1219 case WM_PAINT:1220 return SCROLL_Paint(hwnd,wParam,lParam,SB_HORZ);1221 1222 case SBM_SETPOS:1223 return SetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_HORZ,wParam,(BOOL)lParam);1224 1225 case SBM_GETPOS:1226 return GetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_HORZ);1227 1228 case SBM_SETRANGE:1229 return SCROLL_SetRange(hwnd,wParam,lParam,SB_HORZ,FALSE);1230 1231 case SBM_GETRANGE:1232 GetScrollRange(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(LPINT)wParam,(LPINT)lParam);1233 return 0;1234 1235 case SBM_ENABLE_ARROWS:1236 return EnableScrollBar(SCROLL_GetFrameHandle(hwnd),SB_HORZ,wParam);1237 1238 case SBM_SETRANGEREDRAW:1239 return SCROLL_SetRange(hwnd,wParam,lParam,SB_HORZ,TRUE);1240 1241 case SBM_SETSCROLLINFO:1242 return SetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(SCROLLINFO*)lParam,wParam);1243 1244 case SBM_GETSCROLLINFO:1245 return GetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(SCROLLINFO*)lParam);1246 1247 default:1248 return DefWindowProcA(hwnd,message,wParam,lParam);1249 }1250 1251 return 0;1252 }1253 1254 LRESULT WINAPI VertScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )1255 {1256 switch (message)1257 {1258 case WM_LBUTTONDOWN:1259 case WM_LBUTTONUP:1260 case WM_NCHITTEST:1261 case WM_CAPTURECHANGED:1262 case WM_MOUSEMOVE:1263 case WM_SYSTIMER:1264 case WM_SETFOCUS:1265 case WM_KILLFOCUS:1266 return SCROLL_HandleScrollEvent(hwnd,wParam,lParam,SB_VERT,message);1267 1268 case WM_ERASEBKGND:1269 return 1;1270 1271 case WM_GETDLGCODE:1272 return DLGC_WANTARROWS; /* Windows returns this value */1273 1274 case WM_PAINT:1275 return SCROLL_Paint(hwnd,wParam,lParam,SB_VERT);1276 1277 case SBM_SETPOS:1278 return SetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_VERT,wParam,(BOOL)lParam);1279 1280 case SBM_GETPOS:1281 return GetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_VERT);1282 1283 case SBM_SETRANGE:1284 return SCROLL_SetRange(hwnd,wParam,lParam,SB_VERT,FALSE);1285 1286 case SBM_GETRANGE:1287 GetScrollRange(SCROLL_GetFrameHandle(hwnd),SB_VERT,(LPINT)wParam,(LPINT)lParam);1288 return 0;1289 1290 case SBM_ENABLE_ARROWS:1291 return EnableScrollBar(SCROLL_GetFrameHandle(hwnd),SB_VERT,wParam);1292 1293 case SBM_SETRANGEREDRAW:1294 return SCROLL_SetRange(hwnd,wParam,lParam,SB_VERT,TRUE);1295 1296 case SBM_SETSCROLLINFO:1297 return SetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_VERT,(SCROLLINFO*)lParam,wParam);1298 1299 case SBM_GETSCROLLINFO:1300 return GetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_VERT,(SCROLLINFO*)lParam);1301 1302 default:1303 return DefWindowProcA(hwnd,message,wParam,lParam);1304 }1305 1306 return 0;1307 }1308 1309 1175 /* Scrollbar API */ 1310 1176 … … 1331 1197 UINT new_flags; 1332 1198 INT action = 0; 1333 HWND hwndScroll = SCROLL_GetScrollHandle(hwnd,nBar);1334 1199 1335 1200 dprintf(("USER32: SetScrollInfo")); 1336 1201 1337 if (!hwndScroll) return 0; 1338 if (!(infoPtr = SCROLL_GetInfoPtr(hwndScroll,nBar))) return 0; 1202 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return 0; 1339 1203 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return 0; 1340 1204 if ((info->cbSize != sizeof(*info)) && … … 1445 1309 { 1446 1310 if (action & SA_SSI_REFRESH) 1447 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,TRUE,TRUE);1311 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,TRUE); 1448 1312 else 1449 1313 { 1450 1314 if (action & (SA_SSI_REPAINT_INTERIOR | SA_SSI_MOVE_THUMB)) 1451 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,FALSE,TRUE);1315 SCROLL_RefreshScrollBar(hwnd,nBar,FALSE,TRUE); 1452 1316 if (action & SA_SSI_REPAINT_ARROWS) 1453 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,TRUE,FALSE);1317 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,FALSE); 1454 1318 } 1455 1319 } … … 1473 1337 { 1474 1338 SCROLLBAR_INFO *infoPtr; 1475 HWND hwndScroll;1476 1339 1477 1340 dprintf(("USER32: GetScrollInfo")); 1478 1341 1479 hwndScroll = SCROLL_GetScrollHandle(hwnd,nBar); 1480 if (!hwndScroll || !(infoPtr = SCROLL_GetInfoPtr(hwndScroll,nBar))) return FALSE; 1342 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return FALSE; 1481 1343 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return FALSE; 1482 1344 if ((info->cbSize != sizeof(*info)) && … … 1486 1348 if (info->fMask & SIF_POS) info->nPos = infoPtr->CurVal; 1487 1349 if ((info->fMask & SIF_TRACKPOS) && (info->cbSize == sizeof(*info))) 1488 info->nTrackPos = (SCROLL_MovingThumb && SCROLL_TrackingWin == hwnd Scroll&& SCROLL_TrackingBar == nBar) ? SCROLL_TrackingVal:infoPtr->CurVal;1350 info->nTrackPos = (SCROLL_MovingThumb && SCROLL_TrackingWin == hwnd && SCROLL_TrackingBar == nBar) ? SCROLL_TrackingVal:infoPtr->CurVal; 1489 1351 1490 1352 if (info->fMask & SIF_RANGE) … … 1517 1379 1518 1380 dprintf(("SetScrollPos %x %d %d %d", hwnd, nBar, nPos, bRedraw)); 1519 if (!(infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar))) return 0;1381 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return 0; 1520 1382 oldPos = infoPtr->CurVal; 1521 1383 info.cbSize = sizeof(info); … … 1544 1406 dprintf(("GetScrollPos %x %d", hwnd, nBar)); 1545 1407 1546 infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar);1408 infoPtr = SCROLL_GetInfoPtr(hwnd,nBar); 1547 1409 if (!infoPtr) return 0; 1548 1410 … … 1586 1448 SCROLLBAR_INFO *infoPtr; 1587 1449 1588 infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar);1450 infoPtr = SCROLL_GetInfoPtr(hwnd,nBar); 1589 1451 if (!infoPtr) 1590 1452 { … … 1608 1470 BOOL fShow /* [I] TRUE = show, FALSE = hide */) 1609 1471 { 1472 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 1473 BOOL fShowH = (nBar == SB_HORZ) ? 0:fShow,fShowV = (nBar == SB_VERT) ? 0:fShow; 1474 1610 1475 dprintf(("ShowScrollBar %04x %d %d\n", hwnd, nBar, fShow)); 1611 1612 if (nBar == SB_CTL) 1613 { 1614 ShowWindow(hwnd,fShow ? SW_SHOW:SW_HIDE); 1615 1616 return TRUE; 1617 } else 1618 { 1619 Win32BaseWindow *window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1620 BOOL createHorz = FALSE,createVert = FALSE; 1621 1622 if (!window) 1623 { 1624 dprintf(("ShowScrollBar window not found!")); 1625 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1626 return FALSE; 1627 } 1628 1629 return window->showScrollBars(nBar == SB_HORZ || nBar == SB_BOTH,nBar == SB_VERT || nBar == SB_BOTH,fShow); 1476 if (!win32wnd) return FALSE; 1477 1478 switch(nBar) 1479 { 1480 case SB_CTL: 1481 ShowWindow(hwnd,fShow ? SW_SHOW:SW_HIDE); 1482 return TRUE; 1483 1484 case SB_BOTH: 1485 case SB_HORZ: 1486 if (fShow) 1487 { 1488 fShowH = !(win32wnd->getStyle() & WS_HSCROLL); 1489 win32wnd->setStyle(win32wnd->getStyle() | WS_HSCROLL); 1490 } 1491 else /* hide it */ 1492 { 1493 fShowH = (win32wnd->getStyle() & WS_HSCROLL); 1494 win32wnd->setStyle(win32wnd->getStyle() & ~WS_HSCROLL); 1495 } 1496 if( nBar == SB_HORZ ) 1497 { 1498 fShowV = FALSE; 1499 break; 1500 } 1501 /* fall through */ 1502 1503 case SB_VERT: 1504 if (fShowV) 1505 { 1506 fShowV = !(win32wnd->getStyle() & WS_VSCROLL); 1507 win32wnd->setStyle(win32wnd->getStyle() | WS_VSCROLL); 1508 } 1509 else /* hide it */ 1510 { 1511 fShowV = (win32wnd->getStyle() & WS_VSCROLL); 1512 win32wnd->setStyle(win32wnd->getStyle() & ~WS_VSCROLL); 1513 } 1514 if ( nBar == SB_VERT ) 1515 fShowH = FALSE; 1516 break; 1517 1518 default: 1519 return TRUE; /* Nothing to do! */ 1520 } 1521 1522 if( fShowH || fShowV ) /* frame has been changed, let the window redraw itself */ 1523 { 1524 SetWindowPos( hwnd, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE 1525 | SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED ); 1630 1526 } 1631 1527 … … 1638 1534 BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags) 1639 1535 { 1640 Win32BaseWindow *window; 1641 SCROLLBAR_INFO *infoPtr; 1642 1643 dprintf(("EnableScrollBar %04x %d %d\n", hwnd, nBar, flags)); 1644 1645 if (nBar == SB_CTL) 1646 { 1647 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return FALSE; 1648 1649 if (infoPtr->flags != flags) 1650 { 1651 infoPtr->flags = flags; 1652 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,TRUE); 1653 } 1654 1536 BOOL bFineWithMe; 1537 SCROLLBAR_INFO *infoPtr; 1538 1539 dprintf(("EnableScrollBar %04x %d %d\n", hwnd, nBar, flags)); 1540 1541 flags &= ESB_DISABLE_BOTH; 1542 1543 if (nBar == SB_BOTH) 1544 { 1545 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, SB_VERT ))) return FALSE; 1546 if (!(bFineWithMe = (infoPtr->flags == flags)) ) 1547 { 1548 infoPtr->flags = flags; 1549 SCROLL_RefreshScrollBar( hwnd, SB_VERT, TRUE, TRUE ); 1550 } 1551 nBar = SB_HORZ; 1552 } 1553 else 1554 bFineWithMe = TRUE; 1555 1556 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ))) return FALSE; 1557 if (bFineWithMe && infoPtr->flags == flags) return FALSE; 1558 infoPtr->flags = flags; 1559 1560 SCROLL_RefreshScrollBar( hwnd, nBar, TRUE, TRUE ); 1655 1561 return TRUE; 1656 } else1657 {1658 Win32BaseWindow *window = Win32BaseWindow::GetWindowFromHandle(hwnd);1659 1660 if(!window)1661 {1662 dprintf(("EnableScrollBar window not found!"));1663 SetLastError(ERROR_INVALID_WINDOW_HANDLE);1664 return FALSE;1665 }1666 1667 if(window->getStyle() & (WS_HSCROLL | WS_VSCROLL))1668 {1669 BOOL rc = FALSE;1670 1671 if (((nBar == SB_VERT) || (nBar == SB_BOTH)) && (window->getStyle() & WS_VSCROLL))1672 {1673 HWND hwndScroll = Win32BaseWindow::OS2ToWin32Handle(window->getVertScrollHandle());1674 1675 infoPtr = SCROLL_GetInfoPtr(hwndScroll,SB_VERT);1676 if (infoPtr)1677 {1678 if (infoPtr->flags != flags)1679 {1680 infoPtr->flags = flags;1681 SCROLL_RefreshScrollBar(hwndScroll,nBar,TRUE,TRUE);1682 }1683 1684 rc = TRUE;1685 }1686 }1687 if (((nBar == SB_HORZ) || (rc && (nBar == SB_BOTH))) && (window->getStyle() & WS_HSCROLL))1688 {1689 HWND hwndScroll = Win32BaseWindow::OS2ToWin32Handle(window->getHorzScrollHandle());1690 1691 infoPtr = SCROLL_GetInfoPtr(hwndScroll,SB_VERT);1692 if (infoPtr)1693 {1694 if (infoPtr->flags != flags)1695 {1696 infoPtr->flags = flags;1697 SCROLL_RefreshScrollBar(hwndScroll,nBar,TRUE,TRUE);1698 }1699 1700 rc = TRUE;1701 }1702 }1703 1704 return rc;1705 }1706 }1707 1708 return TRUE;1709 1562 } 1710 1563 … … 1720 1573 } 1721 1574 1722 HWND hwndScroll;1723 1575 INT nBar,arrowSize; 1724 1576 … … 1727 1579 case OBJID_CLIENT: 1728 1580 nBar = SB_CTL; 1729 hwndScroll = hwnd;1730 1581 break; 1731 1582 1732 1583 case OBJID_HSCROLL: 1733 1584 nBar = SB_HORZ; 1734 hwndScroll = SCROLL_GetScrollHandle(hwnd,SB_HORZ);1735 1585 break; 1736 1586 1737 1587 case OBJID_VSCROLL: 1738 1588 nBar = SB_VERT; 1739 hwndScroll = SCROLL_GetScrollHandle(hwnd,SB_VERT);1740 1589 break; 1741 1590 … … 1744 1593 } 1745 1594 1746 if (!hwndScroll) return FALSE; 1747 1748 SCROLL_GetScrollBarRect(hwndScroll,nBar,&psbi->rcScrollBar,&arrowSize,&psbi->dxyLineButton,&psbi->xyThumbTop); 1595 SCROLL_GetScrollBarRect(hwnd,nBar,&psbi->rcScrollBar,&arrowSize,&psbi->dxyLineButton,&psbi->xyThumbTop); 1749 1596 psbi->xyThumbBottom = psbi->xyThumbTop+psbi->dxyLineButton; 1750 1597 psbi->bogus = 0; //CB: undocumented! 1751 psbi->rgstate[0] = IsWindowVisible(hwnd Scroll) ? STATE_SYSTEM_INVISIBLE:0;1598 psbi->rgstate[0] = IsWindowVisible(hwnd) ? STATE_SYSTEM_INVISIBLE:0; 1752 1599 psbi->rgstate[1] = psbi->rgstate[2] = psbi->rgstate[3] = psbi->rgstate[4] = psbi->rgstate[5] = psbi->rgstate[0]; //CB: todo 1753 1600
Note:
See TracChangeset
for help on using the changeset viewer.