[EXPLORER] Workaround for something that may or may not be an "unintended feature" of the comctl toolbar.

Apparently the indices provided in NMTBGETINFOTIP (TBN_GETINFOTIP data struct), are not reliable,
but since the lParam values are, and it saves us a lookup, we will be using those instead. Win-Win!
This commit is contained in:
David Quintana 2018-01-23 23:10:44 +01:00
parent bc43733e48
commit 5ec441a867

View file

@ -853,14 +853,17 @@ public:
} }
VOID GetTooltipText(int index, LPTSTR szTip, DWORD cchTip) VOID GetTooltipText(LPARAM data, LPTSTR szTip, DWORD cchTip)
{ {
InternalIconData * notifyItem = GetItemData(index); InternalIconData * notifyItem = reinterpret_cast<InternalIconData *>(data);
if (notifyItem) if (notifyItem)
{ {
StringCchCopy(szTip, cchTip, notifyItem->szTip); StringCchCopy(szTip, cchTip, notifyItem->szTip);
} }
else
{
StringCchCopy(szTip, cchTip, L"");
}
} }
VOID ResizeImagelist() VOID ResizeImagelist()
@ -1240,7 +1243,7 @@ public:
LRESULT OnGetInfoTip(INT uCode, LPNMHDR hdr, BOOL& bHandled) LRESULT OnGetInfoTip(INT uCode, LPNMHDR hdr, BOOL& bHandled)
{ {
NMTBGETINFOTIPW * nmtip = (NMTBGETINFOTIPW *) hdr; NMTBGETINFOTIPW * nmtip = (NMTBGETINFOTIPW *) hdr;
Toolbar.GetTooltipText(nmtip->iItem, nmtip->pszText, nmtip->cchTextMax); Toolbar.GetTooltipText(nmtip->lParam, nmtip->pszText, nmtip->cchTextMax);
return TRUE; return TRUE;
} }