[PATCH 2/3] comctl32/tooltips: Add a helper to set tool text.
Nikolay Sivov
nsivov at codeweavers.com
Tue May 21 05:15:55 CDT 2019
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/comctl32/tooltips.c | 83 +++++++++++++++-------------------------
1 file changed, 31 insertions(+), 52 deletions(-)
diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c
index 163821aa08..4b2298bf40 100644
--- a/dlls/comctl32/tooltips.c
+++ b/dlls/comctl32/tooltips.c
@@ -1150,6 +1150,35 @@ static void TOOLTIPS_FreeToolText(TTTOOL_INFO *toolPtr)
}
}
+static void TOOLTIPS_SetToolText(TTTOOL_INFO *toolPtr, WCHAR *text, BOOL is_unicode)
+{
+ int len;
+
+ TOOLTIPS_FreeToolText (toolPtr);
+
+ if (IS_INTRESOURCE(text))
+ toolPtr->lpszText = text;
+ else if (text == LPSTR_TEXTCALLBACKW)
+ toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
+ else if (text)
+ {
+ if (is_unicode)
+ {
+ len = lstrlenW(text);
+ toolPtr->lpszText = Alloc ((len + 1) * sizeof(WCHAR));
+ if (toolPtr->lpszText)
+ strcpyW (toolPtr->lpszText, text);
+ }
+ else
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, (char *)text, -1, NULL, 0);
+ toolPtr->lpszText = Alloc (len * sizeof(WCHAR));
+ if (toolPtr->lpszText)
+ MultiByteToWideChar(CP_ACP, 0, (char *)text, -1, toolPtr->lpszText, len);
+ }
+ }
+}
+
static LRESULT
TOOLTIPS_DelToolT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW)
{
@@ -1663,32 +1692,7 @@ TOOLTIPS_SetToolInfoT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW)
toolPtr->rect = ti->rect;
toolPtr->hinst = ti->hinst;
- TOOLTIPS_FreeToolText (toolPtr);
-
- if (IS_INTRESOURCE(ti->lpszText)) {
- TRACE("set string id %x\n", LOWORD(ti->lpszText));
- toolPtr->lpszText = ti->lpszText;
- }
- else {
- if (ti->lpszText == LPSTR_TEXTCALLBACKW)
- toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
- else {
- if (ti->lpszText) {
- if (isW) {
- INT len = lstrlenW (ti->lpszText);
- toolPtr->lpszText = Alloc ((len+1)*sizeof(WCHAR));
- strcpyW (toolPtr->lpszText, ti->lpszText);
- }
- else {
- INT len = MultiByteToWideChar(CP_ACP, 0, (LPSTR)ti->lpszText,
- -1, NULL, 0);
- toolPtr->lpszText = Alloc (len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, (LPSTR)ti->lpszText, -1,
- toolPtr->lpszText, len);
- }
- }
- }
- }
+ TOOLTIPS_SetToolText (toolPtr, ti->lpszText, isW);
if (ti->cbSize >= TTTOOLINFOW_V2_SIZE)
toolPtr->lParam = ti->lParam;
@@ -1783,34 +1787,9 @@ TOOLTIPS_UpdateTipTextT (TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *ti, BOOL isW
toolPtr = &infoPtr->tools[nTool];
- /* copy tool text */
toolPtr->hinst = ti->hinst;
- TOOLTIPS_FreeToolText(toolPtr);
-
- if (IS_INTRESOURCE(ti->lpszText)){
- toolPtr->lpszText = ti->lpszText;
- }
- else if (ti->lpszText) {
- if (ti->lpszText == LPSTR_TEXTCALLBACKW)
- toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
- else {
- if (ti->lpszText) {
- if (isW) {
- INT len = lstrlenW (ti->lpszText);
- toolPtr->lpszText = Alloc ((len+1)*sizeof(WCHAR));
- strcpyW (toolPtr->lpszText, ti->lpszText);
- }
- else {
- INT len = MultiByteToWideChar(CP_ACP, 0, (LPSTR)ti->lpszText,
- -1, NULL, 0);
- toolPtr->lpszText = Alloc (len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, (LPSTR)ti->lpszText, -1,
- toolPtr->lpszText, len);
- }
- }
- }
- }
+ TOOLTIPS_SetToolText(toolPtr, ti->lpszText, isW);
if(infoPtr->nCurrentTool == -1) return 0;
/* force repaint */
--
2.20.1
More information about the wine-devel
mailing list