mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 16:36:07 +00:00
added hittesting for scrollbars and fixed passing the cursor coordinates to NCL messages
svn path=/trunk/; revision=6011
This commit is contained in:
parent
61009dcbf6
commit
19c18b7f2c
7 changed files with 184 additions and 39 deletions
|
@ -4592,6 +4592,22 @@ extern "C" {
|
||||||
/* GetFileCompressedSize */
|
/* GetFileCompressedSize */
|
||||||
#define INVALID_FILE_SIZE ((DWORD)-1)
|
#define INVALID_FILE_SIZE ((DWORD)-1)
|
||||||
|
|
||||||
|
/* system ids */
|
||||||
|
#define OBJID_WINDOW ((LONG)0x00000000)
|
||||||
|
#define OBJID_SYSMENU ((LONG)0xFFFFFFFF)
|
||||||
|
#define OBJID_TITLEBAR ((LONG)0xFFFFFFFE)
|
||||||
|
#define OBJID_MENU ((LONG)0xFFFFFFFD)
|
||||||
|
#define OBJID_CLIENT ((LONG)0xFFFFFFFC)
|
||||||
|
#define OBJID_VSCROLL ((LONG)0xFFFFFFFB)
|
||||||
|
#define OBJID_HSCROLL ((LONG)0xFFFFFFFA)
|
||||||
|
#define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9)
|
||||||
|
#define OBJID_CARET ((LONG)0xFFFFFFF8)
|
||||||
|
#define OBJID_CURSOR ((LONG)0xFFFFFFF7)
|
||||||
|
#define OBJID_ALERT ((LONG)0xFFFFFFF6)
|
||||||
|
#define OBJID_SOUND ((LONG)0xFFFFFFF5)
|
||||||
|
#define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4)
|
||||||
|
#define OBJID_NATIVEOM ((LONG)0xFFFFFFF0)
|
||||||
|
|
||||||
/* --------------------- old stuff, need to organize! --------------- */
|
/* --------------------- old stuff, need to organize! --------------- */
|
||||||
|
|
||||||
/* BEGINNING of windowsx.h stuff from old headers: */
|
/* BEGINNING of windowsx.h stuff from old headers: */
|
||||||
|
|
|
@ -468,7 +468,7 @@ NtUserInsertMenuItem(
|
||||||
LPCMENUITEMINFOW lpmii);
|
LPCMENUITEMINFOW lpmii);
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserEnableScrollBar(
|
NtUserEnableScrollBar(
|
||||||
HWND hWnd,
|
HWND hWnd,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: scrollbar.c,v 1.12 2003/09/07 09:55:52 weiden Exp $
|
/* $Id: scrollbar.c,v 1.13 2003/09/08 02:14:20 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -54,12 +54,12 @@ static HBITMAP hRgArrowI;
|
||||||
#define SA_SSI_REPAINT_ARROWS 0x0008
|
#define SA_SSI_REPAINT_ARROWS 0x0008
|
||||||
|
|
||||||
/* Scroll-bar hit testing */
|
/* Scroll-bar hit testing */
|
||||||
#define SCROLL_NOWHERE 0x01 /* Outside the scroll bar */
|
#define SCROLL_NOWHERE 0x00 /* Outside the scroll bar */
|
||||||
#define SCROLL_TOP_ARROW 0x02 /* Top or left arrow */
|
#define SCROLL_TOP_ARROW 0x01 /* Top or left arrow */
|
||||||
#define SCROLL_TOP_RECT 0x04 /* Rectangle between the top arrow and the thumb */
|
#define SCROLL_TOP_RECT 0x02 /* Rectangle between the top arrow and the thumb */
|
||||||
#define SCROLL_THUMB 0x08 /* Thumb rectangle */
|
#define SCROLL_THUMB 0x03 /* Thumb rectangle */
|
||||||
#define SCROLL_BOTTOM_RECT 0x10 /* Rectangle between the thumb and the bottom arrow */
|
#define SCROLL_BOTTOM_RECT 0x04 /* Rectangle between the thumb and the bottom arrow */
|
||||||
#define SCROLL_BOTTOM_ARROW 0x20 /* Bottom or right arrow */
|
#define SCROLL_BOTTOM_ARROW 0x05 /* Bottom or right arrow */
|
||||||
|
|
||||||
static BOOL SCROLL_MovingThumb = FALSE; /* Is the moving thumb being displayed? */
|
static BOOL SCROLL_MovingThumb = FALSE; /* Is the moving thumb being displayed? */
|
||||||
|
|
||||||
|
@ -75,21 +75,6 @@ static BOOL SCROLL_trackVertical;
|
||||||
|
|
||||||
HBRUSH DefWndControlColor (HDC hDC, UINT ctlType);
|
HBRUSH DefWndControlColor (HDC hDC, UINT ctlType);
|
||||||
|
|
||||||
|
|
||||||
DWORD FASTCALL
|
|
||||||
SCROLL_HitTest(HWND hwnd, LONG idObject, POINT Point)
|
|
||||||
{
|
|
||||||
RECT WindowRect;
|
|
||||||
|
|
||||||
GetWindowRect(hwnd, &WindowRect);
|
|
||||||
if (!PtInRect(&WindowRect, Point))
|
|
||||||
{
|
|
||||||
return(SCROLL_NOWHERE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return SCROLL_NOWHERE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ported from WINE20020904 */
|
/* Ported from WINE20020904 */
|
||||||
/* Draw the scroll bar interior (everything except the arrows). */
|
/* Draw the scroll bar interior (everything except the arrows). */
|
||||||
static void
|
static void
|
||||||
|
@ -101,11 +86,11 @@ arrowSize, PSCROLLBARINFO psbi)
|
||||||
HBRUSH hSaveBrush, hBrush;
|
HBRUSH hSaveBrush, hBrush;
|
||||||
BOOLEAN top_selected = FALSE, bottom_selected = FALSE;
|
BOOLEAN top_selected = FALSE, bottom_selected = FALSE;
|
||||||
DbgPrint("[SCROLL_DrawInterior:%d]\n", nBar);
|
DbgPrint("[SCROLL_DrawInterior:%d]\n", nBar);
|
||||||
if(psbi->rgstate[2] & STATE_SYSTEM_PRESSED)
|
if(psbi->rgstate[SCROLL_TOP_RECT] & STATE_SYSTEM_PRESSED)
|
||||||
{
|
{
|
||||||
top_selected = TRUE;
|
top_selected = TRUE;
|
||||||
}
|
}
|
||||||
if(psbi->rgstate[4] & STATE_SYSTEM_PRESSED)
|
if(psbi->rgstate[SCROLL_BOTTOM_RECT] & STATE_SYSTEM_PRESSED)
|
||||||
{
|
{
|
||||||
bottom_selected = TRUE;
|
bottom_selected = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -274,20 +259,20 @@ SCROLL_DrawScrollBar (HWND hwnd, HDC hdc, INT nBar,
|
||||||
BOOL vertical;
|
BOOL vertical;
|
||||||
|
|
||||||
info.cbSize = sizeof(SCROLLBARINFO);
|
info.cbSize = sizeof(SCROLLBARINFO);
|
||||||
NtUserGetScrollBarInfo (hwnd, nBar, &info);
|
|
||||||
|
|
||||||
thumbSize = info.xyThumbBottom - info.xyThumbTop;
|
|
||||||
|
|
||||||
switch ( nBar )
|
switch ( nBar )
|
||||||
{
|
{
|
||||||
case SB_HORZ:
|
case SB_HORZ:
|
||||||
vertical = FALSE;
|
vertical = FALSE;
|
||||||
|
NtUserGetScrollBarInfo (hwnd, OBJID_HSCROLL, &info);
|
||||||
break;
|
break;
|
||||||
case SB_VERT:
|
case SB_VERT:
|
||||||
vertical = TRUE;
|
vertical = TRUE;
|
||||||
|
NtUserGetScrollBarInfo (hwnd, OBJID_VSCROLL, &info);
|
||||||
break;
|
break;
|
||||||
case SB_CTL:
|
case SB_CTL:
|
||||||
vertical = (GetWindowLongW(hwnd,GWL_STYLE)&SBS_VERT) != 0;
|
vertical = (GetWindowLongW(hwnd,GWL_STYLE)&SBS_VERT) != 0;
|
||||||
|
NtUserGetScrollBarInfo (hwnd, OBJID_CLIENT, &info);
|
||||||
break;
|
break;
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
default:
|
default:
|
||||||
|
@ -295,6 +280,8 @@ SCROLL_DrawScrollBar (HWND hwnd, HDC hdc, INT nBar,
|
||||||
break;
|
break;
|
||||||
#endif /* DBG */
|
#endif /* DBG */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
thumbSize = info.xyThumbBottom - info.xyThumbTop;
|
||||||
|
|
||||||
if (vertical)
|
if (vertical)
|
||||||
arrowSize = GetSystemMetrics(SM_CXVSCROLL);
|
arrowSize = GetSystemMetrics(SM_CXVSCROLL);
|
||||||
|
@ -348,6 +335,82 @@ END:;
|
||||||
/* WIN_ReleaseWndPtr(wndPtr); */
|
/* WIN_ReleaseWndPtr(wndPtr); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
SCROLL_PtInRectEx( LPRECT lpRect, POINT pt, BOOL vertical )
|
||||||
|
{
|
||||||
|
RECT rect = *lpRect;
|
||||||
|
|
||||||
|
if (vertical)
|
||||||
|
{
|
||||||
|
rect.left -= lpRect->right - lpRect->left;
|
||||||
|
rect.right += lpRect->right - lpRect->left;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rect.top -= lpRect->bottom - lpRect->top;
|
||||||
|
rect.bottom += lpRect->bottom - lpRect->top;
|
||||||
|
}
|
||||||
|
return PtInRect( &rect, pt );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
DWORD FASTCALL
|
||||||
|
SCROLL_HitTest(HWND hwnd, LONG idObject, POINT Point)
|
||||||
|
{
|
||||||
|
RECT WindowRect;
|
||||||
|
|
||||||
|
GetWindowRect(hwnd, &WindowRect);
|
||||||
|
if (!PtInRect(&WindowRect, Point))
|
||||||
|
{
|
||||||
|
return(SCROLL_NOWHERE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SCROLL_NOWHERE;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
SCROLL_HitTest( HWND hwnd, INT nBar, POINT pt, BOOL bDragging )
|
||||||
|
{
|
||||||
|
SCROLLBARINFO sbi;
|
||||||
|
RECT wndrect;
|
||||||
|
INT arrowSize, thumbSize, thumbPos;
|
||||||
|
BOOL vertical = (nBar == SB_VERT); /* FIXME - ((Window->Style & SBS_VERT) != 0) */
|
||||||
|
|
||||||
|
NtUserGetWindowRect(hwnd, &wndrect);
|
||||||
|
|
||||||
|
sbi.cbSize = sizeof(SCROLLBARINFO);
|
||||||
|
NtUserGetScrollBarInfo(hwnd, vertical ? OBJID_VSCROLL : OBJID_HSCROLL, &sbi);
|
||||||
|
|
||||||
|
OffsetRect(&sbi.rcScrollBar, wndrect.left, wndrect.top);
|
||||||
|
|
||||||
|
if ( (bDragging && !SCROLL_PtInRectEx( &sbi.rcScrollBar, pt, vertical )) ||
|
||||||
|
(!PtInRect( &sbi.rcScrollBar, pt )) ) return SCROLL_NOWHERE;
|
||||||
|
|
||||||
|
|
||||||
|
if (vertical)
|
||||||
|
{
|
||||||
|
arrowSize = GetSystemMetrics(SM_CYVSCROLL);
|
||||||
|
if (pt.y < sbi.rcScrollBar.top + arrowSize) return SCROLL_TOP_ARROW;
|
||||||
|
if (pt.y >= sbi.rcScrollBar.bottom - arrowSize) return SCROLL_BOTTOM_ARROW;
|
||||||
|
if (!thumbPos) return SCROLL_TOP_RECT;
|
||||||
|
pt.y -= sbi.rcScrollBar.top;
|
||||||
|
if (pt.y < thumbPos) return SCROLL_TOP_RECT;
|
||||||
|
if (pt.y >= thumbPos + thumbSize) return SCROLL_BOTTOM_RECT;
|
||||||
|
}
|
||||||
|
else /* horizontal */
|
||||||
|
{
|
||||||
|
arrowSize = GetSystemMetrics(SM_CXHSCROLL);
|
||||||
|
if (pt.x < sbi.rcScrollBar.left + arrowSize) return SCROLL_TOP_ARROW;
|
||||||
|
if (pt.x >= sbi.rcScrollBar.right - arrowSize) return SCROLL_BOTTOM_ARROW;
|
||||||
|
if (!thumbPos) return SCROLL_TOP_RECT;
|
||||||
|
pt.x -= sbi.rcScrollBar.left;
|
||||||
|
if (pt.x < thumbPos) return SCROLL_TOP_RECT;
|
||||||
|
if (pt.x >= thumbPos + thumbSize) return SCROLL_BOTTOM_RECT;
|
||||||
|
}
|
||||||
|
return SCROLL_THUMB;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS ******************************************************************/
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -19,3 +19,6 @@ ULONG
|
||||||
UserHasDlgFrameStyle(ULONG Style, ULONG ExStyle);
|
UserHasDlgFrameStyle(ULONG Style, ULONG ExStyle);
|
||||||
ULONG
|
ULONG
|
||||||
UserHasThickFrameStyle(ULONG Style, ULONG ExStyle);
|
UserHasThickFrameStyle(ULONG Style, ULONG ExStyle);
|
||||||
|
|
||||||
|
DWORD
|
||||||
|
SCROLL_HitTest( HWND hwnd, INT nBar, POINT pt, BOOL bDragging );
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: defwnd.c,v 1.81 2003/09/07 17:35:15 ekohl Exp $
|
/* $Id: defwnd.c,v 1.82 2003/09/08 02:14:20 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS user32.dll
|
* PROJECT: ReactOS user32.dll
|
||||||
|
@ -933,9 +933,15 @@ VOID STATIC
|
||||||
DefWndDoScrollBarDown(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
DefWndDoScrollBarDown(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
POINT Point;
|
POINT Point;
|
||||||
|
DWORD hit;
|
||||||
Point.x = SLOWORD(lParam);
|
Point.x = SLOWORD(lParam);
|
||||||
Point.y = SHIWORD(lParam);
|
Point.y = SHIWORD(lParam);
|
||||||
|
|
||||||
|
hit = SCROLL_HitTest(hWnd, (wParam == HTHSCROLL) ? SB_HORZ : SB_VERT, Point, FALSE);
|
||||||
|
|
||||||
|
if(hit)
|
||||||
|
DbgPrint("SCROLL_HitTest() == 0x%x\n", hit);
|
||||||
|
|
||||||
SendMessageA(hWnd, WM_SYSCOMMAND, Msg + (UINT)wParam, lParam);
|
SendMessageA(hWnd, WM_SYSCOMMAND, Msg + (UINT)wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: msgqueue.c,v 1.21 2003/08/29 19:17:32 weiden Exp $
|
/* $Id: msgqueue.c,v 1.22 2003/09/08 02:14:20 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -208,8 +208,7 @@ MsqTranslateMouseMessage(HWND hWnd, UINT FilterLow, UINT FilterHigh,
|
||||||
|
|
||||||
if (Msg == WM_LBUTTONDBLCLK || Msg == WM_RBUTTONDBLCLK || Msg == WM_MBUTTONDBLCLK)
|
if (Msg == WM_LBUTTONDBLCLK || Msg == WM_RBUTTONDBLCLK || Msg == WM_MBUTTONDBLCLK)
|
||||||
{
|
{
|
||||||
if (!(IntGetClassLong(Window, GCL_STYLE, FALSE) & CS_DBLCLKS) &&
|
if (((*HitTest) != HTCLIENT) || !(IntGetClassLong(Window, GCL_STYLE, FALSE) & CS_DBLCLKS))
|
||||||
((*HitTest) == HTCLIENT))
|
|
||||||
{
|
{
|
||||||
Msg -= (WM_LBUTTONDBLCLK - WM_LBUTTONDOWN);
|
Msg -= (WM_LBUTTONDBLCLK - WM_LBUTTONDOWN);
|
||||||
/* FIXME set WindowStation's system cursor variables:
|
/* FIXME set WindowStation's system cursor variables:
|
||||||
|
@ -224,6 +223,7 @@ MsqTranslateMouseMessage(HWND hWnd, UINT FilterLow, UINT FilterHigh,
|
||||||
}
|
}
|
||||||
|
|
||||||
*ScreenPoint = Message->Msg.pt;
|
*ScreenPoint = Message->Msg.pt;
|
||||||
|
Point = Message->Msg.pt;
|
||||||
|
|
||||||
if ((*HitTest) != HTCLIENT)
|
if ((*HitTest) != HTCLIENT)
|
||||||
{
|
{
|
||||||
|
@ -232,7 +232,6 @@ MsqTranslateMouseMessage(HWND hWnd, UINT FilterLow, UINT FilterHigh,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Point = Message->Msg.pt;
|
|
||||||
Point.x -= Window->ClientRect.left;
|
Point.x -= Window->ClientRect.left;
|
||||||
Point.y -= Window->ClientRect.top;
|
Point.y -= Window->ClientRect.top;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: scrollbar.c,v 1.10 2003/09/07 11:52:54 weiden Exp $
|
/* $Id: scrollbar.c,v 1.11 2003/09/08 02:14:20 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -187,12 +187,57 @@ IntDestroyScrollBar(PWINDOW_OBJECT Window, LONG idObject)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHANGERGSTATE(item, status) \
|
||||||
|
if(Info->rgstate[(item)] != (status)) \
|
||||||
|
Chg = TRUE; \
|
||||||
|
Info->rgstate[(item)] = (status);
|
||||||
|
|
||||||
|
|
||||||
|
BOOL STDCALL
|
||||||
|
IntEnableScrollBar(BOOL Horz, PSCROLLBARINFO Info, UINT wArrows)
|
||||||
|
{
|
||||||
|
BOOL Chg = FALSE;
|
||||||
|
switch(wArrows)
|
||||||
|
{
|
||||||
|
case ESB_DISABLE_BOTH:
|
||||||
|
CHANGERGSTATE(SBRG_TOPRIGHTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
CHANGERGSTATE(SBRG_BOTTOMLEFTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
break;
|
||||||
|
case ESB_DISABLE_RTDN:
|
||||||
|
if(Horz)
|
||||||
|
{
|
||||||
|
CHANGERGSTATE(SBRG_BOTTOMLEFTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CHANGERGSTATE(SBRG_TOPRIGHTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ESB_DISABLE_LTUP:
|
||||||
|
if(Horz)
|
||||||
|
{
|
||||||
|
CHANGERGSTATE(SBRG_TOPRIGHTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CHANGERGSTATE(SBRG_BOTTOMLEFTBTN, STATE_SYSTEM_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ESB_ENABLE_BOTH:
|
||||||
|
CHANGERGSTATE(SBRG_TOPRIGHTBTN, 0);
|
||||||
|
CHANGERGSTATE(SBRG_BOTTOMLEFTBTN, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return Chg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
||||||
{
|
{
|
||||||
PWINDOW_OBJECT Window;
|
PWINDOW_OBJECT Window;
|
||||||
|
INT Bar;
|
||||||
|
|
||||||
if(!psbi || (psbi->cbSize != sizeof(SCROLLBARINFO)))
|
if(!psbi || (psbi->cbSize != sizeof(SCROLLBARINFO)))
|
||||||
{
|
{
|
||||||
|
@ -210,23 +255,26 @@ NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
||||||
|
|
||||||
switch(idObject)
|
switch(idObject)
|
||||||
{
|
{
|
||||||
case SB_HORZ:
|
case OBJID_HSCROLL:
|
||||||
if(Window->pHScroll)
|
if(Window->pHScroll)
|
||||||
{
|
{
|
||||||
|
Bar = SB_HORZ;
|
||||||
memcpy(psbi, Window->pHScroll, sizeof(SCROLLBARINFO));
|
memcpy(psbi, Window->pHScroll, sizeof(SCROLLBARINFO));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case SB_VERT:
|
case OBJID_VSCROLL:
|
||||||
if(Window->pVScroll)
|
if(Window->pVScroll)
|
||||||
{
|
{
|
||||||
|
Bar = SB_VERT;
|
||||||
memcpy(psbi, Window->pVScroll, sizeof(SCROLLBARINFO));
|
memcpy(psbi, Window->pVScroll, sizeof(SCROLLBARINFO));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case SB_CTL:
|
case OBJID_CLIENT:
|
||||||
if(Window->wExtra)
|
if(Window->wExtra)
|
||||||
{
|
{
|
||||||
|
Bar = SB_CTL;
|
||||||
memcpy(psbi, Window->wExtra, sizeof(SCROLLBARINFO));
|
memcpy(psbi, Window->wExtra, sizeof(SCROLLBARINFO));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -237,7 +285,7 @@ NtUserGetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntGetScrollBarRect (Window, idObject, &(psbi->rcScrollBar));
|
IntGetScrollBarRect (Window, Bar, &(psbi->rcScrollBar));
|
||||||
|
|
||||||
IntReleaseWindowObject(Window);
|
IntReleaseWindowObject(Window);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -280,7 +328,7 @@ NtUserGetScrollInfo(HWND hwnd, int fnBar, LPSCROLLINFO lpsi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserEnableScrollBar(
|
NtUserEnableScrollBar(
|
||||||
HWND hWnd,
|
HWND hWnd,
|
||||||
|
@ -289,6 +337,7 @@ NtUserEnableScrollBar(
|
||||||
{
|
{
|
||||||
PWINDOW_OBJECT Window;
|
PWINDOW_OBJECT Window;
|
||||||
PSCROLLBARINFO InfoV = NULL, InfoH = NULL;
|
PSCROLLBARINFO InfoV = NULL, InfoH = NULL;
|
||||||
|
BOOL Chg = FALSE;
|
||||||
|
|
||||||
Window = IntGetWindowObject(hWnd);
|
Window = IntGetWindowObject(hWnd);
|
||||||
|
|
||||||
|
@ -317,6 +366,15 @@ NtUserEnableScrollBar(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(InfoV)
|
||||||
|
Chg = IntEnableScrollBar(FALSE, InfoV, wArrows);
|
||||||
|
|
||||||
|
if(InfoH)
|
||||||
|
Chg = (IntEnableScrollBar(TRUE, InfoH, wArrows) || Chg);
|
||||||
|
|
||||||
|
if(Chg)
|
||||||
|
/* FIXME - repaint scrollbars */
|
||||||
|
|
||||||
IntReleaseWindowObject(Window);
|
IntReleaseWindowObject(Window);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue