user32: Fix TEXT_WordBreak() when no characters fit.
This commit is contained in:
parent
cbfeef4b8b
commit
ec66785f02
|
@ -42,6 +42,8 @@ static void test_DrawTextCalcRect(void)
|
||||||
's','t','r','i','n','g','\0'};
|
's','t','r','i','n','g','\0'};
|
||||||
static CHAR emptystring[] = "";
|
static CHAR emptystring[] = "";
|
||||||
static WCHAR emptystringW[] = { 0 };
|
static WCHAR emptystringW[] = { 0 };
|
||||||
|
static CHAR wordbreak_text[] = "line1 line2";
|
||||||
|
static WCHAR wordbreak_textW[] = {'l','i','n','e','1',' ','l','i','n','e','2',0};
|
||||||
INT textlen, textheight, heightcheck;
|
INT textlen, textheight, heightcheck;
|
||||||
RECT rect = { 0, 0, 100, 0 };
|
RECT rect = { 0, 0, 100, 0 };
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
@ -556,6 +558,20 @@ static void test_DrawTextCalcRect(void)
|
||||||
ok(rect.bottom, "rect.bottom should not be 0\n");
|
ok(rect.bottom, "rect.bottom should not be 0\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetRect(&rect, 0, 0, 1, 1);
|
||||||
|
heightcheck = DrawTextA(hdc, wordbreak_text, -1, &rect, DT_CALCRECT);
|
||||||
|
SetRect(&rect, 0, 0, 1, 1);
|
||||||
|
textheight = DrawTextA(hdc, wordbreak_text, -1, &rect, DT_CALCRECT | DT_WORDBREAK);
|
||||||
|
ok(textheight == heightcheck * 2, "Got unexpected textheight %d, expected %d.\n",
|
||||||
|
textheight, heightcheck * 2);
|
||||||
|
|
||||||
|
SetRect(&rect, 0, 0, 1, 1);
|
||||||
|
heightcheck = DrawTextW(hdc, wordbreak_textW, -1, &rect, DT_CALCRECT);
|
||||||
|
SetRect(&rect, 0, 0, 1, 1);
|
||||||
|
textheight = DrawTextW(hdc, wordbreak_textW, -1, &rect, DT_CALCRECT | DT_WORDBREAK);
|
||||||
|
ok(textheight == heightcheck * 2, "Got unexpected textheight %d, expected %d.\n",
|
||||||
|
textheight, heightcheck * 2);
|
||||||
|
|
||||||
SelectObject(hdc, hOldFont);
|
SelectObject(hdc, hOldFont);
|
||||||
ret = DeleteObject(hFont);
|
ret = DeleteObject(hFont);
|
||||||
ok( ret, "DeleteObject error %u\n", GetLastError());
|
ok( ret, "DeleteObject error %u\n", GetLastError());
|
||||||
|
|
|
@ -379,7 +379,7 @@ static void TEXT_WordBreak (HDC hdc, WCHAR *str, unsigned int max_str,
|
||||||
i = chars_fit;
|
i = chars_fit;
|
||||||
word_fits = TRUE;
|
word_fits = TRUE;
|
||||||
if (!chars_fit)
|
if (!chars_fit)
|
||||||
; /* we pretend that it fits anyway */
|
word_fits = FALSE;
|
||||||
else if (sla[i].fSoftBreak) /* chars_fit < *len_str so this is valid */
|
else if (sla[i].fSoftBreak) /* chars_fit < *len_str so this is valid */
|
||||||
{
|
{
|
||||||
/* the word just fitted */
|
/* the word just fitted */
|
||||||
|
@ -392,7 +392,7 @@ static void TEXT_WordBreak (HDC hdc, WCHAR *str, unsigned int max_str,
|
||||||
word_fits = (i != 0 || sla[i+1].fSoftBreak );
|
word_fits = (i != 0 || sla[i+1].fSoftBreak );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there was one or the first character didn't fit then */
|
/* If there was one. */
|
||||||
if (word_fits)
|
if (word_fits)
|
||||||
{
|
{
|
||||||
BOOL next_is_space;
|
BOOL next_is_space;
|
||||||
|
|
Loading…
Reference in New Issue