[EXPLORER] Workaround for something that may or may not be an "unintended feature...
authorDavid Quintana <gigaherz@gmail.com>
Tue, 23 Jan 2018 22:10:44 +0000 (23:10 +0100)
committerDavid Quintana <gigaherz@gmail.com>
Tue, 23 Jan 2018 22:10:44 +0000 (23:10 +0100)
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!

base/shell/explorer/trayntfy.cpp

index f61e1f6..1b05b50 100644 (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)
         {
             StringCchCopy(szTip, cchTip, notifyItem->szTip);
         }
+        else
+        {
+            StringCchCopy(szTip, cchTip, L"");
+        }
     }
 
     VOID ResizeImagelist()
@@ -1240,7 +1243,7 @@ public:
     LRESULT OnGetInfoTip(INT uCode, LPNMHDR hdr, BOOL& bHandled)
     {
         NMTBGETINFOTIPW * nmtip = (NMTBGETINFOTIPW *) hdr;
-        Toolbar.GetTooltipText(nmtip->iItem, nmtip->pszText, nmtip->cchTextMax);
+        Toolbar.GetTooltipText(nmtip->lParam, nmtip->pszText, nmtip->cchTextMax);
         return TRUE;
     }