comctl32: trackbar: Correctly set lSetMin and lSelMax.

Modify the behavior when the messages TBM_SETSEL, TBM_SETSELSTART, and
TBM_SETSELEND are sent and TBS_ENABLESELRANGE is not set.  When the
style TBS_ENABLESELRANGE is not set, Windows observed behavior is to
set the Selection Start and End values to 0, rather than leave them
unchanged.
This commit is contained in:
Keith Stevens 2007-03-15 22:04:45 -07:00 committed by Alexandre Julliard
parent 86ea6b5820
commit de608991ea
2 changed files with 14 additions and 15 deletions

View File

@ -902,16 +902,12 @@ static void test_ignore_selection(HWND hWndTrackbar){
/* test TBM_SETSEL ensure that it is ignored */
SendMessage(hWndTrackbar, TBM_SETSEL, TRUE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
todo_wine{
expect(0, r);
}
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSEL, FALSE, MAKELONG(0,10));
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
todo_wine{
expect(0, r);
}
expect(0, r);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);
@ -921,9 +917,7 @@ static void test_ignore_selection(HWND hWndTrackbar){
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSELEND, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
todo_wine{
expect(0,r);
}
expect(0,r);
SendMessage(hWndTrackbar, TBM_SETSELEND, FALSE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELEND, 0,0);
expect(0, r);
@ -934,9 +928,7 @@ static void test_ignore_selection(HWND hWndTrackbar){
expect(0, r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, TRUE, 10);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
todo_wine{
expect(0,r);
}
expect(0,r);
SendMessage(hWndTrackbar, TBM_SETSELSTART, FALSE, 0);
r = SendMessage(hWndTrackbar, TBM_GETSELSTART, 0,0);
expect(0, r);

View File

@ -1216,8 +1216,11 @@ TRACKBAR_SetRangeMin (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lMin)
inline static LRESULT
TRACKBAR_SetSel (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lSel)
{
if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)
if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){
infoPtr->lSelMin = 0;
infoPtr->lSelMax = 0;
return 0;
}
infoPtr->lSelMin = (SHORT)LOWORD(lSel);
infoPtr->lSelMax = (SHORT)HIWORD(lSel);
@ -1237,8 +1240,10 @@ TRACKBAR_SetSel (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lSel)
inline static LRESULT
TRACKBAR_SetSelEnd (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lEnd)
{
if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)
if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){
infoPtr->lSelMax = 0;
return 0;
}
infoPtr->lSelMax = lEnd;
infoPtr->flags |= TB_SELECTIONCHANGED;
@ -1255,8 +1260,10 @@ TRACKBAR_SetSelEnd (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lEnd)
inline static LRESULT
TRACKBAR_SetSelStart (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lStart)
{
if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)
if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){
infoPtr->lSelMin = 0;
return 0;
}
infoPtr->lSelMin = lStart;
infoPtr->flags |=TB_SELECTIONCHANGED;