@@ -50,16 +50,32 @@ void main(string[] args)
50
50
continue ;
51
51
}
52
52
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
+ {
56
55
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;
58
58
if (defaultApp) {
59
59
mimeTypeName = parent;
60
60
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;
61
70
}
62
71
}
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);
63
79
}
64
80
65
81
if (defaultApp) {
0 commit comments