mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-26 22:17:41 +00:00
Revert "update canAutoOpenFile/autoOpenFile implementation to new MacOSX API, avoid deprecated calls"
This reverts commit d568846e03
.
Unfortunately the used alternative API LSCopyDefaultApplicationURLForContentType
is available with 10.10 and later only and cannot be used therefore. So there
is no alternative to deprecated calls ATM. LyX 2.3 should run on 10.7 at least.
This commit is contained in:
parent
4f75026176
commit
b5c2859a92
@ -238,46 +238,32 @@ char path_separator(path_type)
|
||||
void windows_style_tex_paths(bool)
|
||||
{}
|
||||
|
||||
|
||||
#ifdef __APPLE__
|
||||
bool canAutoOpenFile(CFStringRef cfs_uti, LSRolesMask role)
|
||||
{
|
||||
// Reference:
|
||||
// https://developer.apple.com/reference/coreservices/1447734-lscopydefaultapplicationurlforco
|
||||
CFURLRef outAppRef = LSCopyDefaultApplicationURLForContentType(cfs_uti, role, NULL);
|
||||
|
||||
if (outAppRef == NULL) return false;
|
||||
CFRelease(outAppRef);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool canAutoOpenFile(string const & ext, auto_open_mode const mode)
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
// References:
|
||||
// https://developer.apple.com/reference/coreservices/1447734-lscopydefaultapplicationurlforco
|
||||
// Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/
|
||||
CFStringRef cfs_ext = CFStringCreateWithBytes(kCFAllocatorDefault,
|
||||
(UInt8 *) ext.c_str(), ext.length(),
|
||||
kCFStringEncodingISOLatin1, false);
|
||||
CFStringRef cfs_uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, cfs_ext, NULL);
|
||||
// this is what we would like to do but it seems that the
|
||||
// viewer for PDF is often quicktime...
|
||||
//LSRolesMask role = (mode == VIEW) ? kLSRolesViewer : kLSRolesEditor;
|
||||
(void)mode;
|
||||
LSRolesMask role = kLSRolesAll;
|
||||
FSRef outAppRef;
|
||||
OSStatus status =
|
||||
LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator,
|
||||
cfs_ext, role, &outAppRef, NULL);
|
||||
CFRelease(cfs_ext);
|
||||
if (cfs_uti == NULL) return false;
|
||||
|
||||
LSRolesMask role = (mode == VIEW) ? kLSRolesViewer : kLSRolesEditor;
|
||||
bool result = canAutoOpenFile(cfs_uti, role);
|
||||
if (!result && mode == VIEW)
|
||||
result = canAutoOpenFile(cfs_uti, kLSRolesEditor);
|
||||
|
||||
CFRelease(cfs_uti);
|
||||
return result;
|
||||
return status != kLSApplicationNotFoundErr;
|
||||
#else
|
||||
// silence compiler warnings
|
||||
(void)ext;
|
||||
(void)mode;
|
||||
|
||||
// currently, no default viewer is tried for non-apple system
|
||||
// support for KDE/Gnome may be added later
|
||||
// currently, no default viewer is tried for non-windows system
|
||||
// support for KDE/Gnome/Macintosh may be added later
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@ -292,11 +278,14 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode,
|
||||
// viewer for PDF is often quicktime...
|
||||
//LSRolesMask role = (mode == VIEW) ? kLSRolesViewer : kLSRolesEditor;
|
||||
(void)mode;
|
||||
LSRolesMask role = (mode == VIEW) ? kLSRolesAll : kLSRolesEditor;
|
||||
LSRolesMask role = kLSRolesAll;
|
||||
|
||||
CFURLRef docURL = CFURLCreateFromFileSystemRepresentation(
|
||||
NULL, (UInt8 *) filename.c_str(), filename.size(), false);
|
||||
CFURLRef appURL = LSCopyDefaultApplicationURLForURL(docURL, role, NULL);
|
||||
CFURLRef appURL;
|
||||
OSStatus status = LSGetApplicationForURL(docURL, role, NULL, &appURL);
|
||||
if (status == kLSApplicationNotFoundErr)
|
||||
return false;
|
||||
|
||||
CFURLRef docURLs[] = { docURL };
|
||||
CFArrayRef launchItems = CFArrayCreate(
|
||||
@ -324,7 +313,7 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode,
|
||||
setEnv("BSTINPUTS", newbstinputs);
|
||||
setEnv("TEXFONTS", newtexfonts);
|
||||
}
|
||||
OSStatus const status = LSOpenFromURLSpec (&launchUrlSpec, NULL);
|
||||
status = LSOpenFromURLSpec (&launchUrlSpec, NULL);
|
||||
CFRelease(launchItems);
|
||||
if (!path.empty() && !lyxrc.texinputs_prefix.empty()) {
|
||||
setEnv("TEXINPUTS", oldtexinputs);
|
||||
@ -339,8 +328,8 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode,
|
||||
(void)mode;
|
||||
(void)path;
|
||||
|
||||
// currently, no default viewer is tried for non-apple system
|
||||
// support for KDE/Gnome may be added later
|
||||
// currently, no default viewer is tried for non-windows system
|
||||
// support for KDE/Gnome/Macintosh may be added later
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user