Commit 74e9b904 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

comctl32: Replace nonprintable characters with spaces on SB_SETTEXT.

parent 6655d3f7
...@@ -762,6 +762,7 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style, ...@@ -762,6 +762,7 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style,
part->text = (LPWSTR)text; part->text = (LPWSTR)text;
} else { } else {
LPWSTR ntext; LPWSTR ntext;
WCHAR *idx;
if (text && !isW) { if (text && !isW) {
LPCSTR atxt = (LPCSTR)text; LPCSTR atxt = (LPCSTR)text;
...@@ -775,6 +776,16 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style, ...@@ -775,6 +776,16 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style,
strcpyW (ntext, text); strcpyW (ntext, text);
} else ntext = 0; } else ntext = 0;
/* replace nonprintable characters with spaces */
if (ntext) {
idx = ntext;
while (*idx) {
if(!isprintW(*idx))
*idx = ' ';
idx++;
}
}
/* check if text is unchanged -> no need to redraw */ /* check if text is unchanged -> no need to redraw */
if (text) { if (text) {
if (!changed && part->text && !lstrcmpW(ntext, part->text)) { if (!changed && part->text && !lstrcmpW(ntext, part->text)) {
......
...@@ -258,6 +258,8 @@ static void test_status_control(void) ...@@ -258,6 +258,8 @@ static void test_status_control(void)
RECT rc; RECT rc;
CHAR charArray[20]; CHAR charArray[20];
HICON hIcon; HICON hIcon;
char ch;
char chstr[10] = "Inval id";
hWndStatus = create_status_control(WS_VISIBLE, 0); hWndStatus = create_status_control(WS_VISIBLE, 0);
...@@ -307,7 +309,7 @@ static void test_status_control(void) ...@@ -307,7 +309,7 @@ static void test_status_control(void)
/* Test resetting text with different characters */ /* Test resetting text with different characters */
r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)"First@Again"); r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)"First@Again");
expect(TRUE,r); expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, 1, (LPARAM)"InvalidChars\\7\7"); r = SendMessage(hWndStatus, SB_SETTEXT, 1, (LPARAM)"Invalid\tChars\\7\7");
expect(TRUE,r); expect(TRUE,r);
r = SendMessage(hWndStatus, SB_SETTEXT, 2, (LPARAM)"InvalidChars\\n\n"); r = SendMessage(hWndStatus, SB_SETTEXT, 2, (LPARAM)"InvalidChars\\n\n");
expect(TRUE,r); expect(TRUE,r);
...@@ -318,20 +320,28 @@ static void test_status_control(void) ...@@ -318,20 +320,28 @@ static void test_status_control(void)
expect(11,LOWORD(r)); expect(11,LOWORD(r));
expect(0,HIWORD(r)); expect(0,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXT, 1, (LPARAM) charArray); r = SendMessage(hWndStatus, SB_GETTEXT, 1, (LPARAM) charArray);
todo_wine ok(strcmp(charArray,"Invalid\tChars\\7 ") == 0, "Expected Invalid\tChars\\7 , got %s\n", charArray);
{
ok(strcmp(charArray,"InvalidChars\\7 ") == 0, "Expected InvalidChars\\7 , got %s\n", charArray); expect(16,LOWORD(r));
}
expect(15,LOWORD(r));
expect(0,HIWORD(r)); expect(0,HIWORD(r));
r = SendMessage(hWndStatus, SB_GETTEXT, 2, (LPARAM) charArray); r = SendMessage(hWndStatus, SB_GETTEXT, 2, (LPARAM) charArray);
todo_wine ok(strcmp(charArray,"InvalidChars\\n ") == 0, "Expected InvalidChars\\n , got %s\n", charArray);
{
ok(strcmp(charArray,"InvalidChars\\n ") == 0, "Expected InvalidChars\\n , got %s\n", charArray);
}
expect(15,LOWORD(r)); expect(15,LOWORD(r));
expect(0,HIWORD(r)); expect(0,HIWORD(r));
/* test more nonprintable chars */
for(ch = 0x00; ch < 0x7F; ch++) {
chstr[5] = ch;
r = SendMessage(hWndStatus, SB_SETTEXT, 0, (LPARAM)chstr);
expect(TRUE,r);
r = SendMessage(hWndStatus, SB_GETTEXT, 0, (LPARAM)charArray);
/* substitution with single space */
if (ch > 0x00 && ch < 0x20 && ch != '\t')
chstr[5] = ' ';
ok(strcmp(charArray, chstr) == 0, "Expected %s, got %s\n", chstr, charArray);
}
/* Set background color */ /* Set background color */
r = SendMessage(hWndStatus, SB_SETBKCOLOR , 0, RGB(255,0,0)); r = SendMessage(hWndStatus, SB_SETBKCOLOR , 0, RGB(255,0,0));
ok(r == CLR_DEFAULT || ok(r == CLR_DEFAULT ||
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment