Skip to content

Commit 1588de8

Browse files
committed
Upgrade 'open' example to recursively check parents
1 parent e605262 commit 1588de8

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

examples/open.d

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,32 @@ void main(string[] args)
5050
continue;
5151
}
5252

53-
auto defaultApp = findDefaultApplication(mimeTypeName, mimeAppsLists, mimeInfoCaches, provider).rebindable;
54-
if (!defaultApp && mimeType !is null && mimeType.parents().length) {
55-
writefln("Could not find default application for MIME type %s, but it has parent types. Will try them.", mimeTypeName);
53+
auto findDefaultApplicationForParents(const(MimeType) mimeType)
54+
{
5655
foreach(parent; mimeType.parents()) {
57-
defaultApp = findDefaultApplication(parent, mimeAppsLists, mimeInfoCaches, provider).rebindable;
56+
writefln("Trying to find default application for %s...", parent);
57+
auto defaultApp = findDefaultApplication(parent, mimeAppsLists, mimeInfoCaches, provider).rebindable;
5858
if (defaultApp) {
5959
mimeTypeName = parent;
6060
writefln("Found default application for parent type %s", parent);
61+
return defaultApp;
62+
}
63+
}
64+
foreach(parent; mimeType.parents()) {
65+
auto parentMimeType = mimeDatabase.mimeType(parent);
66+
if (parentMimeType !is null && parentMimeType.parents().length) {
67+
auto defaultApp = findDefaultApplicationForParents(parentMimeType);
68+
if (defaultApp)
69+
return defaultApp;
6170
}
6271
}
72+
return Rebindable!(const(DesktopFile)).init;
73+
}
74+
75+
auto defaultApp = findDefaultApplication(mimeTypeName, mimeAppsLists, mimeInfoCaches, provider).rebindable;
76+
if (!defaultApp && mimeType !is null && mimeType.parents().length) {
77+
writefln("Could not find default application for MIME type %s, but it has parent types. Will try them.", mimeTypeName);
78+
defaultApp = findDefaultApplicationForParents(mimeType);
6379
}
6480

6581
if (defaultApp) {

0 commit comments

Comments
 (0)