Module: wine Branch: master Commit: ff826eb14a9e3b70e2755f7d9fdd15e117bedc5a URL: http://source.winehq.org/git/wine.git/?a=commit;h=ff826eb14a9e3b70e2755f7d9f...
Author: Jason Edmeades jason.edmeades@googlemail.com Date: Mon Aug 13 23:57:05 2007 +0100
comctl32: Fix missing tooltips.
---
dlls/comctl32/tooltips.c | 39 +++++++++++++++++++++++++++++++++++---- 1 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c index 9dd1970..3b41dda 100644 --- a/dlls/comctl32/tooltips.c +++ b/dlls/comctl32/tooltips.c @@ -314,7 +314,7 @@ static void TOOLTIPS_GetDispInfoA(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOA)); ttnmdi.hdr.hwndFrom = hwnd; ttnmdi.hdr.idFrom = toolPtr->uId; - ttnmdi.hdr.code = TTN_GETDISPINFOA; + ttnmdi.hdr.code = TTN_GETDISPINFOA; /* == TTN_NEEDTEXTA */ ttnmdi.lpszText = (LPSTR)&ttnmdi.szText; ttnmdi.uFlags = toolPtr->uFlags; ttnmdi.lParam = toolPtr->lParam; @@ -332,7 +332,6 @@ static void TOOLTIPS_GetDispInfoA(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO } } else if (ttnmdi.lpszText == 0) { - /* no text available */ infoPtr->szTipText[0] = '\0'; } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) { @@ -347,6 +346,22 @@ static void TOOLTIPS_GetDispInfoA(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO ERR("recursive text callback!\n"); infoPtr->szTipText[0] = '\0'; } + + /* no text available - try calling parent instead as per native */ + /* FIXME: Unsure if SETITEM should save the value or not */ + if (infoPtr->szTipText[0] == 0x00) { + + SendMessageW(GetParent(toolPtr->hwnd), WM_NOTIFY, + (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi); + + if (IS_INTRESOURCE(ttnmdi.lpszText)) { + LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText), + infoPtr->szTipText, INFOTIPSIZE); + } else if (ttnmdi.lpszText && + ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) { + Str_GetPtrAtoW(ttnmdi.lpszText, infoPtr->szTipText, INFOTIPSIZE); + } + } }
static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO *toolPtr) @@ -357,7 +372,7 @@ static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOW)); ttnmdi.hdr.hwndFrom = hwnd; ttnmdi.hdr.idFrom = toolPtr->uId; - ttnmdi.hdr.code = TTN_GETDISPINFOW; + ttnmdi.hdr.code = TTN_GETDISPINFOW; /* == TTN_NEEDTEXTW */ ttnmdi.lpszText = (LPWSTR)&ttnmdi.szText; ttnmdi.uFlags = toolPtr->uFlags; ttnmdi.lParam = toolPtr->lParam; @@ -375,7 +390,6 @@ static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO } } else if (ttnmdi.lpszText == 0) { - /* no text available */ infoPtr->szTipText[0] = '\0'; } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) { @@ -390,6 +404,23 @@ static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO ERR("recursive text callback!\n"); infoPtr->szTipText[0] = '\0'; } + + /* no text available - try calling parent instead as per native */ + /* FIXME: Unsure if SETITEM should save the value or not */ + if (infoPtr->szTipText[0] == 0x00) { + + SendMessageW(GetParent(toolPtr->hwnd), WM_NOTIFY, + (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi); + + if (IS_INTRESOURCE(ttnmdi.lpszText)) { + LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText), + infoPtr->szTipText, INFOTIPSIZE); + } else if (ttnmdi.lpszText && + ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) { + Str_GetPtrW(ttnmdi.lpszText, infoPtr->szTipText, INFOTIPSIZE); + } + } + }
static void