user32: Fix case where EM_SCROLL with page down results in trying to scroll up past the beginning.
This commit is contained in:
parent
598052b4ad
commit
5a1f8c57a8
|
@ -1632,7 +1632,7 @@ static LRESULT EDIT_EM_Scroll(EDITSTATE *es, INT action)
|
||||||
INT vlc = get_vertical_line_count(es);
|
INT vlc = get_vertical_line_count(es);
|
||||||
/* check if we are going to move too far */
|
/* check if we are going to move too far */
|
||||||
if(es->y_offset + dy > es->line_count - vlc)
|
if(es->y_offset + dy > es->line_count - vlc)
|
||||||
dy = es->line_count - vlc - es->y_offset;
|
dy = max(es->line_count - vlc, 0) - es->y_offset;
|
||||||
|
|
||||||
/* Notification is done in EDIT_EM_LineScroll */
|
/* Notification is done in EDIT_EM_LineScroll */
|
||||||
if(dy) {
|
if(dy) {
|
||||||
|
|
|
@ -1320,6 +1320,7 @@ static void test_edit_control_limittext(void)
|
||||||
static void test_edit_control_scroll(void)
|
static void test_edit_control_scroll(void)
|
||||||
{
|
{
|
||||||
static const char *single_line_str = "a";
|
static const char *single_line_str = "a";
|
||||||
|
static const char *multiline_str = "Test\r\nText";
|
||||||
HWND hwEdit;
|
HWND hwEdit;
|
||||||
LONG ret;
|
LONG ret;
|
||||||
|
|
||||||
|
@ -1348,6 +1349,22 @@ static void test_edit_control_scroll(void)
|
||||||
ok(!ret, "Returned %x, expected 0.\n", ret);
|
ok(!ret, "Returned %x, expected 0.\n", ret);
|
||||||
|
|
||||||
DestroyWindow (hwEdit);
|
DestroyWindow (hwEdit);
|
||||||
|
|
||||||
|
/* SB_PAGEDOWN while at the beginning of a buffer with few lines
|
||||||
|
should not cause EM_SCROLL to return a negative value of
|
||||||
|
scrolled lines that would put us "before" the beginning. */
|
||||||
|
hwEdit = CreateWindow(
|
||||||
|
"EDIT",
|
||||||
|
multiline_str,
|
||||||
|
WS_VSCROLL | ES_MULTILINE,
|
||||||
|
0, 0, 100, 100,
|
||||||
|
NULL, NULL, hinst, NULL);
|
||||||
|
assert(hwEdit);
|
||||||
|
|
||||||
|
ret = SendMessage(hwEdit, EM_SCROLL, SB_PAGEDOWN, 0);
|
||||||
|
ok(!ret, "Returned %x, expected 0.\n", ret);
|
||||||
|
|
||||||
|
DestroyWindow (hwEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_margins(void)
|
static void test_margins(void)
|
||||||
|
|
Loading…
Reference in New Issue