diff --git a/src/kits/tracker/FSUtils.cpp b/src/kits/tracker/FSUtils.cpp index 732f9c91f8..e6284f3d76 100644 --- a/src/kits/tracker/FSUtils.cpp +++ b/src/kits/tracker/FSUtils.cpp @@ -2356,7 +2356,6 @@ CalcItemsAndSize(CopyLoopControl* loopControl, BObjectList *refList, status_t FSGetTrashDir(BDirectory *trashDir, dev_t dev) { - BVolume volume(dev); status_t result = volume.InitCheck(); if (result != B_OK) @@ -2371,6 +2370,38 @@ FSGetTrashDir(BDirectory *trashDir, dev_t dev) if (result != B_OK) return result; + // make trash invisible + StatStruct sbuf; + trashDir->GetStat(&sbuf); + + PoseInfo poseInfo; + poseInfo.fInvisible = true; + poseInfo.fInitedDirectory = sbuf.st_ino; + trashDir->WriteAttr(kAttrPoseInfo, B_RAW_TYPE, 0, &poseInfo, + sizeof(PoseInfo)); + + size_t size; + const void* data = GetTrackerResources()-> + LoadResource('ICON', R_TrashIcon, &size); + if (data != NULL) { + trashDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, + data, size); + } + data = GetTrackerResources()-> + LoadResource('MICN', R_TrashIcon, &size); + if (data != NULL) { + trashDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, + data, size); + } +#ifdef __HAIKU__ + data = GetTrackerResources()-> + LoadResource(B_VECTOR_ICON_TYPE, R_TrashIcon, &size); + if (data != NULL) { + trashDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, + data, size); + } +#endif + return B_OK; } @@ -2855,39 +2886,7 @@ FSCreateTrashDirs() find_directory(B_TRASH_DIRECTORY, &path, true, &volume); BDirectory trashDir; - if (FSGetTrashDir(&trashDir, volume.Device()) == B_OK) { - // make trash invisible - StatStruct sbuf; - trashDir.GetStat(&sbuf); - - PoseInfo poseInfo; - poseInfo.fInvisible = true; - poseInfo.fInitedDirectory = sbuf.st_ino; - trashDir.WriteAttr(kAttrPoseInfo, B_RAW_TYPE, 0, &poseInfo, - sizeof(PoseInfo)); - - size_t size; - const void* data = GetTrackerResources()-> - LoadResource('ICON', R_TrashIcon, &size); - if (data != NULL) { - trashDir.WriteAttr(kAttrLargeIcon, 'ICON', 0, - data, size); - } - data = GetTrackerResources()-> - LoadResource('MICN', R_TrashIcon, &size); - if (data != NULL) { - trashDir.WriteAttr(kAttrMiniIcon, 'MICN', 0, - data, size); - } -#ifdef __HAIKU - data = GetTrackerResources()-> - LoadResource(B_VECTOR_ICON_TYPE, R_TrashIcon, &size); - if (data != NULL) { - trashDir.WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, - data, size); - } -#endif - } + FSGetTrashDir(&trashDir, volume.Device()); } }