Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
926a8632
Commit
926a8632
authored
Feb 17, 2005
by
Vitaly Lipatov
Committed by
Alexandre Julliard
Feb 17, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename SCROLL_GetScrollBarInfo to SCROLL_GetInternalInfo and make
allocation of a new info structure optional. Add some descriptions.
parent
9074f257
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
31 deletions
+51
-31
scroll.c
dlls/user/scroll.c
+51
-31
No files found.
dlls/user/scroll.c
View file @
926a8632
...
...
@@ -130,14 +130,14 @@ const struct builtin_class_descr SCROLL_builtin_class =
IDC_ARROW
,
/* cursor */
0
/* brush */
};
/***********************************************************************
* SCROLL_ScrollInfoValid
*
* Determine if the supplied SCROLLINFO struct is valid.
* info [in] The SCROLLINFO struct to be tested
*/
inline
static
BOOL
SCROLL_ScrollInfoValid
(
LPSCROLLINFO
info
/* [in] The SCROLLINFO struct to be tested */
)
inline
static
BOOL
SCROLL_ScrollInfoValid
(
LPCSCROLLINFO
info
)
{
return
!
(
info
->
fMask
&
~
(
SIF_ALL
|
SIF_DISABLENOSCROLL
)
||
(
info
->
cbSize
!=
sizeof
(
*
info
)
...
...
@@ -146,11 +146,15 @@ LPSCROLLINFO info /* [in] The SCROLLINFO struct to be tested */)
/***********************************************************************
* SCROLL_GetScrollBarInfo
* SCROLL_GetInternalInfo
* Returns pointer to internal SCROLLBAR_INFO structure for nBar
* or NULL if failed (f.i. scroll bar does not exist yet)
* If alloc is TRUE and the struct does not exist yet, create it.
*/
static
SCROLLBAR_INFO
*
SCROLL_Get
ScrollBarInfo
(
HWND
hwnd
,
INT
nBar
)
static
SCROLLBAR_INFO
*
SCROLL_Get
InternalInfo
(
HWND
hwnd
,
INT
nBar
,
BOOL
alloc
)
{
SCROLLBAR_INFO
*
infoPtr
;
SCROLLBAR_INFO
*
infoPtr
=
NULL
;
WND
*
wndPtr
=
WIN_GetPtr
(
hwnd
);
if
(
!
wndPtr
||
wndPtr
==
WND_OTHER_PROCESS
)
return
NULL
;
...
...
@@ -159,17 +163,20 @@ static SCROLLBAR_INFO *SCROLL_GetScrollBarInfo( HWND hwnd, INT nBar )
case
SB_HORZ
:
infoPtr
=
(
SCROLLBAR_INFO
*
)
wndPtr
->
pHScroll
;
break
;
case
SB_VERT
:
infoPtr
=
(
SCROLLBAR_INFO
*
)
wndPtr
->
pVScroll
;
break
;
case
SB_CTL
:
infoPtr
=
(
SCROLLBAR_INFO
*
)
wndPtr
->
wExtra
;
break
;
default:
WIN_ReleaseWndPtr
(
wndPtr
);
return
NULL
;
case
SB_BOTH
:
WARN
(
"with SB_BOTH"
);
break
;
}
if
(
!
infoPtr
)
/* Create the info structure if needed */
if
(
!
infoPtr
&&
alloc
)
{
if
((
infoPtr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
SCROLLBAR_INFO
)
)))
if
(
nBar
!=
SB_HORZ
&&
nBar
!=
SB_VERT
)
WARN
(
"Cannot initialize nBar=%d
\n
"
,
nBar
);
else
if
((
infoPtr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
SCROLLBAR_INFO
)
)))
{
/* Set default values */
infoPtr
->
minVal
=
infoPtr
->
curVal
=
infoPtr
->
page
=
0
;
/* From MSDN: max for a standard scroll bar is 100 by default. */
infoPtr
->
maxVal
=
100
;
/* Scroll bar is enabled by default after create */
infoPtr
->
flags
=
ESB_ENABLE_BOTH
;
if
(
nBar
==
SB_HORZ
)
wndPtr
->
pHScroll
=
infoPtr
;
else
wndPtr
->
pVScroll
=
infoPtr
;
...
...
@@ -255,8 +262,12 @@ static BOOL SCROLL_GetScrollBarRect( HWND hwnd, INT nBar, RECT *lprect,
}
else
{
SCROLLBAR_INFO
*
info
=
SCROLL_GetScrollBarInfo
(
hwnd
,
nBar
);
SCROLLBAR_INFO
*
info
=
SCROLL_GetInternalInfo
(
hwnd
,
nBar
,
FALSE
);
if
(
!
info
)
{
WARN
(
"called for missing scroll bar"
);
return
FALSE
;
}
*
arrowSize
=
GetSystemMetrics
(
SM_CXVSCROLL
);
pixels
-=
(
2
*
(
GetSystemMetrics
(
SM_CXVSCROLL
)
-
SCROLL_ARROW_THUMB_OVERLAP
));
...
...
@@ -662,7 +673,7 @@ void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT nBar,
INT
arrowSize
,
thumbSize
,
thumbPos
;
RECT
rect
;
BOOL
vertical
;
SCROLLBAR_INFO
*
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
);
SCROLLBAR_INFO
*
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
);
BOOL
Save_SCROLL_MovingThumb
=
SCROLL_MovingThumb
;
DWORD
style
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
);
...
...
@@ -813,7 +824,7 @@ static void SCROLL_HandleScrollEvent( HWND hwnd, INT nBar, UINT msg, POINT pt)
RECT
rect
;
HDC
hdc
;
SCROLLBAR_INFO
*
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
);
SCROLLBAR_INFO
*
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
);
if
(
!
infoPtr
)
return
;
if
((
SCROLL_trackHitTest
==
SCROLL_NOWHERE
)
&&
(
msg
!=
WM_LBUTTONDOWN
))
return
;
...
...
@@ -1112,7 +1123,7 @@ void SCROLL_TrackScrollBar( HWND hwnd, INT scrollbar, POINT pt )
*/
static
void
SCROLL_CreateScrollBar
(
HWND
hwnd
,
LPCREATESTRUCTW
lpCreate
)
{
LPSCROLLBAR_INFO
info
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
SB_CTL
);
LPSCROLLBAR_INFO
info
=
SCROLL_Get
InternalInfo
(
hwnd
,
SB_CTL
,
TRUE
);
if
(
!
info
)
return
;
TRACE
(
"hwnd=%p lpCreate=%p
\n
"
,
hwnd
,
lpCreate
);
...
...
@@ -1169,6 +1180,9 @@ static void SCROLL_CreateScrollBar(HWND hwnd, LPCREATESTRUCTW lpCreate)
* hwnd [I] Handle of window with scrollbar(s)
* nBar [I] One of SB_HORZ, SB_VERT, or SB_CTL
* info [IO] fMask specifies which values to retrieve
*
* RETURNS
* FALSE if requested field not filled (f.i. scroll bar does not exist)
*/
static
BOOL
SCROLL_GetScrollInfo
(
HWND
hwnd
,
INT
nBar
,
LPSCROLLINFO
info
)
{
...
...
@@ -1176,7 +1190,7 @@ static BOOL SCROLL_GetScrollInfo(HWND hwnd, INT nBar, LPSCROLLINFO info)
/* handle invalid data structure */
if
(
!
SCROLL_ScrollInfoValid
(
info
)
||
!
(
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
)))
||
!
(
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
)))
return
FALSE
;
/* fill in the desired scroll info structure */
...
...
@@ -1205,7 +1219,7 @@ static BOOL SCROLL_GetScrollInfo(HWND hwnd, INT nBar, LPSCROLLINFO info)
*/
static
INT
SCROLL_GetScrollPos
(
HWND
hwnd
,
INT
nBar
)
{
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
);
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
);
return
infoPtr
?
infoPtr
->
curVal
:
0
;
}
...
...
@@ -1225,7 +1239,9 @@ static INT SCROLL_GetScrollPos(HWND hwnd, INT nBar)
*/
static
BOOL
SCROLL_GetScrollRange
(
HWND
hwnd
,
INT
nBar
,
LPINT
lpMin
,
LPINT
lpMax
)
{
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_GetScrollBarInfo
(
hwnd
,
nBar
);
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_GetInternalInfo
(
hwnd
,
nBar
,
FALSE
);
if
(
!
infoPtr
)
return
FALSE
;
if
(
lpMin
)
*
lpMin
=
infoPtr
?
infoPtr
->
minVal
:
0
;
if
(
lpMax
)
*
lpMax
=
infoPtr
?
infoPtr
->
maxVal
:
0
;
...
...
@@ -1246,7 +1262,7 @@ static BOOL SCROLL_GetScrollRange(HWND hwnd, INT nBar, LPINT lpMin, LPINT lpMax)
*/
static
BOOL
SCROLL_SetScrollRange
(
HWND
hwnd
,
INT
nBar
,
INT
minVal
,
INT
maxVal
)
{
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
);
LPSCROLLBAR_INFO
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
);
TRACE
(
"hwnd=%p nBar=%d min=%d max=%d
\n
"
,
hwnd
,
nBar
,
minVal
,
maxVal
);
...
...
@@ -1275,7 +1291,7 @@ static LRESULT WINAPI ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam,
case
WM_ENABLE
:
{
SCROLLBAR_INFO
*
infoPtr
;
if
((
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
SB_CTL
)))
if
((
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
SB_CTL
,
FALSE
)))
{
infoPtr
->
flags
=
wParam
?
ESB_ENABLE_BOTH
:
ESB_DISABLE_BOTH
;
SCROLL_RefreshScrollBar
(
hwnd
,
SB_CTL
,
TRUE
,
TRUE
);
...
...
@@ -1487,10 +1503,10 @@ static INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar, const SCROLLINFO *info, BO
BOOL
bChangeParams
=
FALSE
;
/* don't show/hide scrollbar if params don't change */
INT
action
=
0
;
if
(
!
(
infoPtr
=
SCROLL_GetScrollBarInfo
(
hwnd
,
nBar
)))
return
0
;
if
(
info
->
fMask
&
~
(
SIF_ALL
|
SIF_DISABLENOSCROLL
))
return
0
;
if
((
info
->
cbSize
!=
sizeof
(
*
info
))
&&
(
info
->
cbSize
!=
sizeof
(
*
info
)
-
sizeof
(
info
->
nTrackPos
)))
return
0
;
/* handle invalid data structure */
if
(
!
SCROLL_ScrollInfoValid
(
info
)
||
!
(
infoPtr
=
SCROLL_GetInternalInfo
(
hwnd
,
nBar
,
TRUE
)))
return
0
;
if
(
TRACE_ON
(
scroll
))
{
...
...
@@ -1635,7 +1651,8 @@ done:
* nBar [I] One of SB_HORZ, SB_VERT, or SB_CTL
* info [IO] fMask specifies which values to retrieve
*
* RETURNS STD
* RETURNS
* TRUE if SCROLLINFO is filled
*/
BOOL
WINAPI
GetScrollInfo
(
HWND
hwnd
,
INT
nBar
,
LPSCROLLINFO
info
)
{
...
...
@@ -1676,7 +1693,7 @@ INT WINAPI SetScrollPos( HWND hwnd, INT nBar, INT nPos, BOOL bRedraw)
SCROLLBAR_INFO
*
infoPtr
;
INT
oldPos
;
if
(
!
(
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
)))
return
0
;
if
(
!
(
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
FALSE
)))
return
0
;
oldPos
=
infoPtr
->
curVal
;
info
.
cbSize
=
sizeof
(
info
);
info
.
nPos
=
nPos
;
...
...
@@ -1717,6 +1734,8 @@ INT WINAPI GetScrollPos(HWND hwnd, INT nBar)
/*************************************************************************
* SetScrollRange (USER32.@)
* The SetScrollRange function sets the minimum and maximum scroll box positions
* If nMinPos and nMaxPos is the same value, the scroll bar will hide
*
* Sets the range of the scroll bar.
*
...
...
@@ -1734,7 +1753,7 @@ BOOL WINAPI SetScrollRange(HWND hwnd, INT nBar, INT minVal, INT maxVal, BOOL bRe
SCROLLINFO
info
;
TRACE
(
"hwnd=%p nBar=%d min=%d max=%d, bRedraw=%d
\n
"
,
hwnd
,
nBar
,
minVal
,
maxVal
,
bRedraw
);
info
.
cbSize
=
sizeof
(
info
);
info
.
fMask
=
SIF_RANGE
;
info
.
nMin
=
minVal
;
...
...
@@ -1781,7 +1800,8 @@ INT SCROLL_SetNCSbState(HWND hwnd, int vMin, int vMax, int vPos,
* lpMin [O] Where to store minimum value
* lpMax [O] Where to store maximum value
*
* RETURNS STD
* RETURNS
* TRUE if values is filled
*/
BOOL
WINAPI
GetScrollRange
(
HWND
hwnd
,
INT
nBar
,
LPINT
lpMin
,
LPINT
lpMax
)
{
...
...
@@ -1877,7 +1897,7 @@ BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags )
if
(
nBar
==
SB_BOTH
)
{
if
(
!
(
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
SB_VERT
)))
return
FALSE
;
if
(
!
(
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
SB_VERT
,
TRUE
)))
return
FALSE
;
if
(
!
(
bFineWithMe
=
(
infoPtr
->
flags
==
flags
))
)
{
infoPtr
->
flags
=
flags
;
...
...
@@ -1888,7 +1908,7 @@ BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags )
else
bFineWithMe
=
TRUE
;
if
(
!
(
infoPtr
=
SCROLL_Get
ScrollBarInfo
(
hwnd
,
nBar
)))
return
FALSE
;
if
(
!
(
infoPtr
=
SCROLL_Get
InternalInfo
(
hwnd
,
nBar
,
TRUE
)))
return
FALSE
;
if
(
bFineWithMe
&&
infoPtr
->
flags
==
flags
)
return
FALSE
;
infoPtr
->
flags
=
flags
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment