| 759 | } ICONTHREADINFO, *LPICONTHREADINFO; |
| 760 | |
| 761 | DWORD WINAPI FileMRUIconThread ( LPVOID lpParam ) |
| 762 | { |
| 763 | HWND hwnd; |
| 764 | LPICONTHREADINFO lpit; |
| 765 | LV_ITEM lvi; |
| 766 | WCHAR tch[MAX_PATH]; |
| 767 | SHFILEINFO shfi; |
| 768 | DWORD dwFlags = SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_ATTRIBUTES | SHGFI_ATTR_SPECIFIED; |
| 769 | DWORD dwAttr = 0; |
| 770 | int iItem = 0; |
| 771 | int iMaxItem; |
| 772 | lpit = ( LPICONTHREADINFO ) lpParam; |
| 773 | ResetEvent ( lpit->hTerminatedThread ); |
| 774 | hwnd = lpit->hwnd; |
| 775 | iMaxItem = ListView_GetItemCount ( hwnd ); |
| 776 | CoInitialize ( NULL ); |
| 777 | ZeroMemory ( &lvi, sizeof ( LV_ITEM ) ); |
| 778 | while ( iItem < iMaxItem && WaitForSingleObject ( lpit->hExitThread, 0 ) != WAIT_OBJECT_0 ) { |
| 779 | lvi.mask = LVIF_TEXT; |
| 780 | lvi.pszText = tch; |
| 781 | lvi.cchTextMax = COUNTOF ( tch ); |
| 782 | lvi.iItem = iItem; |
| 783 | if ( ListView_GetItem ( hwnd, &lvi ) ) { |
| 784 | if ( PathIsUNC ( tch ) || !PathFileExists ( tch ) ) { |
| 785 | dwFlags |= SHGFI_USEFILEATTRIBUTES; |
| 786 | dwAttr = FILE_ATTRIBUTE_NORMAL; |
| 787 | shfi.dwAttributes = 0; |
| 788 | SHGetFileInfo ( PathFindFileName ( tch ), dwAttr, &shfi, sizeof ( SHFILEINFO ), dwFlags ); |
| 789 | } else { |
| 790 | shfi.dwAttributes = SFGAO_LINK | SFGAO_SHARE; |
| 791 | SHGetFileInfo ( tch, dwAttr, &shfi, sizeof ( SHFILEINFO ), dwFlags ); |
| 792 | } |
| 793 | lvi.mask = LVIF_IMAGE; |
| 794 | lvi.iImage = shfi.iIcon; |
| 795 | lvi.stateMask = 0; |
| 796 | lvi.state = 0; |
| 797 | if ( shfi.dwAttributes & SFGAO_LINK ) { |
| 798 | lvi.mask |= LVIF_STATE; |
| 799 | lvi.stateMask |= LVIS_OVERLAYMASK; |
| 800 | lvi.state |= INDEXTOOVERLAYMASK ( 2 ); |
| 801 | } |
| 802 | if ( shfi.dwAttributes & SFGAO_SHARE ) { |
| 803 | lvi.mask |= LVIF_STATE; |
| 804 | lvi.stateMask |= LVIS_OVERLAYMASK; |
| 805 | lvi.state |= INDEXTOOVERLAYMASK ( 1 ); |
| 806 | } |
| 807 | if ( PathIsUNC ( tch ) ) { |
| 808 | dwAttr = FILE_ATTRIBUTE_NORMAL; |
| 809 | } else { |
| 810 | dwAttr = GetFileAttributes ( tch ); |
| 811 | } |
| 812 | if ( !flagNoFadeHidden && |
| 813 | dwAttr != INVALID_FILE_ATTRIBUTES && |
| 814 | dwAttr & ( FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM ) ) { |
| 815 | lvi.mask |= LVIF_STATE; |
| 816 | lvi.stateMask |= LVIS_CUT; |
| 817 | lvi.state |= LVIS_CUT; |
| 818 | } |
nothing calls this directly
no outgoing calls
no test coverage detected