richedit: Correct limitations on values for setting zoom ratio.

This commit is contained in:
Dylan Smith 2009-01-13 13:39:39 -05:00 committed by Alexandre Julliard
parent fcabbbf30f
commit b81144b350
2 changed files with 17 additions and 16 deletions

View File

@ -1230,18 +1230,19 @@ ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator)
{
/* TODO: Zoom images and objects */
if (numerator != 0)
if (numerator == 0 && denominator == 0)
{
if (denominator == 0)
return FALSE;
if (1.0 / 64.0 > (float)numerator / (float)denominator
|| (float)numerator / (float)denominator > 64.0)
return FALSE;
editor->nZoomNumerator = editor->nZoomDenominator = 0;
return TRUE;
}
if (numerator <= 0 || denominator <= 0)
return FALSE;
if (numerator * 64 <= denominator || numerator / denominator >= 64)
return FALSE;
editor->nZoomNumerator = numerator;
editor->nZoomDenominator = denominator;
ME_RewrapRepaint(editor);
return TRUE;
}

View File

@ -6376,27 +6376,27 @@ static void test_zoom(void)
ok(ret == TRUE, "EM_SETZOOM rejected valid values (%d).\n", ret);
ret = SendMessage(hwnd, EM_SETZOOM, (WPARAM)2, (LPARAM)128);
todo_wine ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
ret = SendMessage(hwnd, EM_GETZOOM, (WPARAM)&numerator, (LPARAM)&denominator);
todo_wine ok(numerator == 127, "incorrect numerator is %d\n", numerator);
todo_wine ok(denominator == 2, "incorrect denominator is %d\n", denominator);
ok(numerator == 127, "incorrect numerator is %d\n", numerator);
ok(denominator == 2, "incorrect denominator is %d\n", denominator);
ok(ret == TRUE, "EM_GETZOOM failed (%d).\n", ret);
ret = SendMessage(hwnd, EM_SETZOOM, (WPARAM)128, (LPARAM)2);
todo_wine ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
/* See if negative numbers are accepted. */
ret = SendMessage(hwnd, EM_SETZOOM, (WPARAM)-100, (LPARAM)-100);
todo_wine ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
ok(ret == FALSE, "EM_SETZOOM accepted invalid values (%d).\n", ret);
/* See if negative numbers are accepted. */
ret = SendMessage(hwnd, EM_SETZOOM, (WPARAM)0, (LPARAM)100);
todo_wine ok(ret == FALSE, "EM_SETZOOM failed (%d).\n", ret);
ok(ret == FALSE, "EM_SETZOOM failed (%d).\n", ret);
ret = SendMessage(hwnd, EM_GETZOOM, (WPARAM)&numerator, (LPARAM)&denominator);
todo_wine ok(numerator == 127, "incorrect numerator is %d\n", numerator);
todo_wine ok(denominator == 2, "incorrect denominator is %d\n", denominator);
ok(numerator == 127, "incorrect numerator is %d\n", numerator);
ok(denominator == 2, "incorrect denominator is %d\n", denominator);
ok(ret == TRUE, "EM_GETZOOM failed (%d).\n", ret);
/* Reset the zoom value */