Sébastien Ramage : user32: End scrollbar tracking if the mouse capture is lost.
Alexandre Julliard
julliard at winehq.org
Thu Mar 25 11:44:44 CDT 2010
Module: wine
Branch: master
Commit: e7165b3921a38cccf6e6eebbf6d4041423493d5b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e7165b3921a38cccf6e6eebbf6d4041423493d5b
Author: Sébastien Ramage <sebastien.ramage at gmail.com>
Date: Thu Mar 25 09:15:37 2010 +0100
user32: End scrollbar tracking if the mouse capture is lost.
---
dlls/user32/scroll.c | 2 +-
dlls/user32/tests/scroll.c | 16 +++++++++++++++-
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c
index 423dea1..81d5d0b 100644
--- a/dlls/user32/scroll.c
+++ b/dlls/user32/scroll.c
@@ -1129,7 +1129,7 @@ void SCROLL_TrackScrollBar( HWND hwnd, INT scrollbar, POINT pt )
ReleaseCapture();
break;
}
- } while (msg.message != WM_LBUTTONUP);
+ } while (msg.message != WM_LBUTTONUP && GetCapture() == hwnd);
}
diff --git a/dlls/user32/tests/scroll.c b/dlls/user32/tests/scroll.c
index 0695639..e3f6938 100644
--- a/dlls/user32/tests/scroll.c
+++ b/dlls/user32/tests/scroll.c
@@ -42,12 +42,25 @@ static LRESULT CALLBACK MyWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP
case WM_DESTROY:
PostQuitMessage(0);
break;
-
+ case WM_HSCROLL:
+ case WM_VSCROLL:
+ /* stop tracking */
+ ReleaseCapture();
+ return 0;
default:
return DefWindowProcA(hWnd, msg, wParam, lParam);
}
return 0;
}
+static void scrollbar_test_track(void)
+{
+ /* test that scrollbar tracking is terminated when
+ * the control looses mouse capture */
+ SendMessage( hScroll, WM_LBUTTONDOWN, 0, MAKELPARAM( 1, 1));
+ /* a normal return from the sendmessage */
+ /* not normal for instance by closing the windws */
+ ok( IsWindow( hScroll), "Scrollbar has gone!\n");
+}
static void scrollbar_test1(void)
{
@@ -420,6 +433,7 @@ START_TEST ( scroll )
scrollbar_test2();
scrollbar_test3();
scrollbar_test4();
+ scrollbar_test_track();
/* Some test results vary depending of theming being active or not */
hUxtheme = LoadLibraryA("uxtheme.dll");
More information about the wine-cvs
mailing list