diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 22ffba2667..7c3cdd0e8c 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -2611,21 +2611,8 @@ TAttrView::AddMimeTypeAttrs() void -TAttrView::AddMimeTypeAttrs(BMenu *menu) +TAttrView::AddAttributes(BMenu *menu, const BMimeType &mimeType) { - FindPanel *mainView = dynamic_cast(Parent()-> - Parent()->FindView("MainView")); - if (!mainView) - return; - - const char *typeName; - if (mainView->CurrentMimeType(&typeName) == NULL) - return; - - BMimeType mimeType(typeName); - if (!mimeType.IsInstalled()) - return; - // only add things to menu which have "user-visible" data BMessage attributeMessage; if (mimeType.GetAttrInfo(&attributeMessage) != B_OK) @@ -2722,7 +2709,34 @@ TAttrView::AddMimeTypeAttrs(BMenu *menu) break; } submenu->SetTargetForItems(this); + } +} + + +void +TAttrView::AddMimeTypeAttrs(BMenu *menu) +{ + FindPanel *mainView = dynamic_cast(Parent()-> + Parent()->FindView("MainView")); + if (!mainView) + return; + + const char *typeName; + if (mainView->CurrentMimeType(&typeName) == NULL) + return; + + BMimeType mimeType(typeName); + if (!mimeType.IsInstalled()) + return; + + if (!mimeType.IsSupertypeOnly()) { + // add supertype attributes + BMimeType supertype; + mimeType.GetSupertype(&supertype); + AddAttributes(menu, supertype); } + + AddAttributes(menu, mimeType); } diff --git a/src/kits/tracker/FindPanel.h b/src/kits/tracker/FindPanel.h index 5aed8806cb..59c088f040 100644 --- a/src/kits/tracker/FindPanel.h +++ b/src/kits/tracker/FindPanel.h @@ -304,6 +304,7 @@ class TAttrView : public BView { void GetDefaultName(BString &result) const; private: + void AddAttributes(BMenu *, const BMimeType &); void AddMimeTypeAttrs(BMenu *); BMenuField *fMenuField;