Esme Povirk (@madewokherd) commented about dlls/comdlg32/navbar.c:
+static LRESULT NAVBAR_OVERFLOW_DrawIcon(HWND hwnd, NAVBAR_INFO *info, UINT msg, WPARAM wparam, LPARAM lparam) +{
- DRAWITEMSTRUCT *dis = (DRAWITEMSTRUCT *)lparam;
- ITEMIDLIST *pidl = (ITEMIDLIST *)dis->itemData;
- SHFILEINFOW file_info = {0};
- IImageList *icon_list;
- icon_list = (IImageList *)SHGetFileInfoW((const WCHAR *)pidl, 0, &file_info, sizeof(file_info),
SHGFI_PIDL | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX);
- if (icon_list)
- {
int icon_width, icon_height;
IImageList_GetIconSize(icon_list, &icon_width, &icon_height);
DrawIconEx(dis->hDC, dis->rcItem.left - (icon_width / 2), dis->rcItem.top,
Drawing outside of rcItem doesn't seem right. Why is this necessary?