diff --git a/src/preferences/filetypes/IconView.cpp b/src/preferences/filetypes/IconView.cpp index b9b688a927..f6850d58a6 100644 --- a/src/preferences/filetypes/IconView.cpp +++ b/src/preferences/filetypes/IconView.cpp @@ -4,6 +4,7 @@ */ +#include "FileTypes.h" #include "IconView.h" #include "MimeTypeListView.h" @@ -1026,12 +1027,12 @@ IconView::Update() if (file.InitCheck() != B_OK) return; - BAppFileInfo info; + BNodeInfo info; if (info.SetTo(&file) != B_OK) return; icon = Icon::AllocateBitmap(fIconSize); - if (icon != NULL && info.GetIconForType(fType.Type(), icon, + if (icon != NULL && info.GetTrackerIcon(icon, (icon_size)fIconSize) != B_OK) { delete icon; return; @@ -1234,15 +1235,26 @@ IconView::_SetIcon(BBitmap* large, BBitmap* mini, const uint8* data, if (fHasRef) { BFile file(&fRef, B_READ_WRITE); - BAppFileInfo info(&file); - info.SetInfoLocation(B_USE_ATTRIBUTES); - if (info.InitCheck() == B_OK) { - if (large != NULL || force) - info.SetIconForType(fType.Type(), large, B_LARGE_ICON); - if (mini != NULL || force) - info.SetIconForType(fType.Type(), mini, B_MINI_ICON); - if (data != NULL || force) - info.SetIconForType(fType.Type(), data, size); + if (is_application(file)) { + BAppFileInfo info(&file); + if (info.InitCheck() == B_OK) { + if (large != NULL || force) + info.SetIconForType(fType.Type(), large, B_LARGE_ICON); + if (mini != NULL || force) + info.SetIconForType(fType.Type(), mini, B_MINI_ICON); + if (data != NULL || force) + info.SetIconForType(fType.Type(), data, size); + } + } else { + BNodeInfo info(&file); + if (info.InitCheck() == B_OK) { + if (large != NULL || force) + info.SetIcon(large, B_LARGE_ICON); + if (mini != NULL || force) + info.SetIcon(mini, B_MINI_ICON); + if (data != NULL || force) + info.SetIcon(data, size); + } } // the icon shown will be updated using node monitoring } else if (fHasType) {