diff --git a/headers/private/tracker/NavMenu.h b/headers/private/tracker/NavMenu.h index 81b398c730..64ec6ec5f9 100644 --- a/headers/private/tracker/NavMenu.h +++ b/headers/private/tracker/NavMenu.h @@ -128,7 +128,8 @@ protected: void BuildVolumeMenu(); void AddOneItem(Model*); - void AddRootItemsIfNeeded(); + void AddRootItem(); + void AddVolumeItems(); void AddTrashItem(); static void SetTrackingHookDeep(BMenu*, bool (*)(BMenu*, void*), void*); diff --git a/src/kits/tracker/NavMenu.cpp b/src/kits/tracker/NavMenu.cpp index c053a3324c..47534bc73f 100644 --- a/src/kits/tracker/NavMenu.cpp +++ b/src/kits/tracker/NavMenu.cpp @@ -431,7 +431,10 @@ BNavMenu::StartBuildingItemList() fIteratingDesktop = true; fContainer = DesktopPoseView::InitDesktopDirentIterator(0, startModel.EntryRef()); if (TrackerSettings().MountVolumesOntoDesktop()) - AddRootItemsIfNeeded(); + AddVolumeItems(); + else if (TrackerSettings().ShowDisksIcon()) + AddRootItem(); + AddTrashItem(); } else if (startModel.IsTrash()) { // the trash window needs to display a union of all the @@ -470,7 +473,19 @@ BNavMenu::StartBuildingItemList() void -BNavMenu::AddRootItemsIfNeeded() +BNavMenu::AddRootItem() +{ + BEntry entry("/"); + Model model(&entry); + if (model.InitCheck() != B_OK) + return; + + AddOneItem(&model); +} + + +void +BNavMenu::AddVolumeItems() { BVolumeRoster roster; roster.Rewind();