Akihiro Sagawa : comctl32: Truncate the info tip text when using ANSI version messages.
Alexandre Julliard
julliard at winehq.org
Mon Apr 16 13:35:44 CDT 2012
Module: wine
Branch: master
Commit: 8cedea0d60f567b68531be06efc4f0a21ad8b516
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8cedea0d60f567b68531be06efc4f0a21ad8b516
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Fri Apr 13 22:45:22 2012 +0900
comctl32: Truncate the info tip text when using ANSI version messages.
---
dlls/comctl32/tests/tooltips.c | 6 +++---
dlls/comctl32/tooltips.c | 10 +++++++---
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/comctl32/tests/tooltips.c b/dlls/comctl32/tests/tooltips.c
index cf571de..c92ed62 100644
--- a/dlls/comctl32/tests/tooltips.c
+++ b/dlls/comctl32/tests/tooltips.c
@@ -668,7 +668,7 @@ static void test_longtextA(void)
toolinfoA.lpszText = bufA;
SendMessageA(hwnd, TTM_ENUMTOOLSA, 0, (LPARAM)&toolinfoA);
textlen = lstrlenA(toolinfoA.lpszText);
- todo_wine ok(textlen == 80, "lpszText has %d chars\n", textlen);
+ ok(textlen == 80, "lpszText has %d chars\n", textlen);
ok(toolinfoA.uId == 0x1234ABCD,
"uId should be retrieved, got %p\n", (void*)toolinfoA.uId);
@@ -678,7 +678,7 @@ static void test_longtextA(void)
toolinfoA.lpszText = bufA;
SendMessageA(hwnd, TTM_GETTOOLINFOA, 0, (LPARAM)&toolinfoA);
textlen = lstrlenA(toolinfoA.lpszText);
- todo_wine ok(textlen == 80, "lpszText has %d chars\n", textlen);
+ ok(textlen == 80, "lpszText has %d chars\n", textlen);
memset(bufA, 0, sizeof(bufA));
toolinfoA.hwnd = NULL;
@@ -686,7 +686,7 @@ static void test_longtextA(void)
toolinfoA.lpszText = bufA;
SendMessageA(hwnd, TTM_GETTEXTA, 0, (LPARAM)&toolinfoA);
textlen = lstrlenA(toolinfoA.lpszText);
- todo_wine ok(textlen == 80, "lpszText has %d chars\n", textlen);
+ ok(textlen == 80, "lpszText has %d chars\n", textlen);
}
DestroyWindow(hwnd);
diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c
index 1d758b4..d1e57a3 100644
--- a/dlls/comctl32/tooltips.c
+++ b/dlls/comctl32/tooltips.c
@@ -171,6 +171,8 @@ typedef struct
#define ICON_HEIGHT 16
#define ICON_WIDTH 16
+#define MAX_TEXT_SIZE_A 80 /* maximum retriving text size by ANSI message */
+
static LRESULT CALLBACK
TOOLTIPS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR dwRef);
@@ -954,8 +956,9 @@ TOOLTIPS_CopyInfoT (const TTTOOL_INFO *toolPtr, TTTOOLINFOW *ti, BOOL isW)
else if (isW)
strcpyW (ti->lpszText, toolPtr->lpszText);
else
+ /* ANSI version, the buffer is maximum 80 bytes without null. */
WideCharToMultiByte(CP_ACP, 0, toolPtr->lpszText, -1,
- (LPSTR)ti->lpszText, INFOTIPSIZE, NULL, NULL);
+ (LPSTR)ti->lpszText, MAX_TEXT_SIZE_A, NULL, NULL);
}
}
@@ -1341,12 +1344,13 @@ TOOLTIPS_GetTextT (const TOOLTIPS_INFO *infoPtr, TTTOOLINFOW *ti, BOOL isW)
/* NB this API is broken, there is no way for the app to determine
what size buffer it requires nor a way to specify how long the
- one it supplies is. We'll assume it's up to INFOTIPSIZE */
+ one it supplies is. According to the test result, it's up to
+ 80 bytes by the ANSI version. */
buffer[0] = '\0';
TOOLTIPS_GetTipText(infoPtr, nTool, buffer);
WideCharToMultiByte(CP_ACP, 0, buffer, -1, (LPSTR)ti->lpszText,
- INFOTIPSIZE, NULL, NULL);
+ MAX_TEXT_SIZE_A, NULL, NULL);
}
return 0;
More information about the wine-cvs
mailing list