Revision: 15497
http://sourceforge.net/p/skim-app/code/15497
Author: hofman
Date: 2025-06-18 15:55:54 +0000 (Wed, 18 Jun 2025)
Log Message:
-----------
combine conditions, create tmpdata only when needed
Modified Paths:
--------------
trunk/SKMainDocument.m
Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m 2025-06-18 15:48:40 UTC (rev 15496)
+++ trunk/SKMainDocument.m 2025-06-18 15:55:54 UTC (rev 15497)
@@ -899,11 +899,10 @@
NSData *fileData = nil;
NSData *data = nil;
PDFDocument *pdfDoc = nil;
+ NSArray *notes = nil;
NSError *error = nil;
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
- tmpData = [[SKTemporaryData alloc] init];
-
if ([ws type:docType conformsToType:SKDocumentTypePDFBundle]) {
NSURL *pdfURL = [[NSFileManager defaultManager]
bundledFileURLWithExtension:@"pdf" inPDFBundleAtURL:absoluteURL error:&error];
if (pdfURL) {
@@ -932,7 +931,7 @@
BOOL foundEANotes = [array count] > 0;
// if we found no notes, see if we had an error finding notes. If
EAs were not supported we ignore the error, as we may assume there won't be any
notes
if (foundEANotes) {
- [tmpData setNoteDicts:array];
+ notes = array;
} else if (array == nil && isIgnorablePOSIXError(error) == NO &&
[self shouldDiscontinueAfterReadNotesError:error fromURL:absoluteURL]) {
fileData = nil;
data = nil;
@@ -947,8 +946,8 @@
readOption = [self definitiveOption:readOption
usingMessageText:NSLocalizedString(@"Found Separate Notes", @"Message in alert
dialog") informativeText:foundEANotes ? NSLocalizedString(@"A Skim notes file
with the same name was found. Do you want Skim to read the notes from this
file?", @"Informative text in alert dialog") : [NSString
stringWithFormat:NSLocalizedString(@"Unable to read notes for %@, but a Skim
notes file with the same name was found. Do you want Skim to read the notes
from this file?", @"Informative text in alert dialog"), [[absoluteURL path]
stringByAbbreviatingWithTildeInPath]]];
if (readOption == SKOptionAlways) {
array = [[NSFileManager defaultManager]
readSkimNotesFromSkimFileAtURL:notesURL error:NULL];
- if ([array count] && [array
isEqualToArray:[tmpData noteDicts]] == NO) {
- [tmpData setNoteDicts:array];
+ if ([array count] && [array isEqualToArray:notes]
== NO) {
+ notes = array;
[self
updateChangeCount:NSChangeReadOtherContents];
}
}
@@ -958,46 +957,43 @@
}
}
- if (data) {
- if (pdfDoc) {
- [self setPDFData:data];
- [tmpData setPdfDocument:pdfDoc];
- [self setOriginalData:fileData];
- [fileUpdateChecker didUpdateFromURL:absoluteURL];
-
- NSDictionary *dictionary = nil;
- NSArray *array = nil;
- NSNumber *number = nil;
- if ([docType isEqualToString:SKDocumentTypePDFBundle]) {
- NSDictionary *info = [NSDictionary
dictionaryWithContentsOfURL:[[absoluteURL
URLByAppendingPathComponent:BUNDLE_DATA_FILENAME isDirectory:NO]
URLByAppendingPathExtension:@"plist"]];
- if ([info isKindOfClass:[NSDictionary class]]) {
- dictionary = [info objectForKey:SKPresentationOptionsKey];
- array = [info objectForKey:SKTagsKey];
- number = [info objectForKey:SKRatingKey];
- }
- } else {
- SKNExtendedAttributeManager *eam =
[SKNExtendedAttributeManager sharedNoSplitManager];
- NSError *err = nil;
- dictionary = [eam
propertyListFromExtendedAttributeNamed:PRESENTATION_OPTIONS_KEY
atPath:[absoluteURL path] traverseLink:YES error:&err];
- array = [eam
propertyListFromExtendedAttributeNamed:OPEN_META_TAGS_KEY atPath:[absoluteURL
path] traverseLink:YES error:NULL];
- number = [eam
propertyListFromExtendedAttributeNamed:OPEN_META_RATING_KEY atPath:[absoluteURL
path] traverseLink:YES error:NULL];
+ if (data && pdfDoc) {
+ tmpData = [[SKTemporaryData alloc] init];
+ [tmpData setPdfDocument:pdfDoc];
+ [tmpData setNoteDicts:notes];
+ [self setPDFData:data];
+ [self setOriginalData:fileData];
+ [fileUpdateChecker didUpdateFromURL:absoluteURL];
+
+ NSDictionary *dictionary = nil;
+ NSArray *array = nil;
+ NSNumber *number = nil;
+ if ([docType isEqualToString:SKDocumentTypePDFBundle]) {
+ NSDictionary *info = [NSDictionary
dictionaryWithContentsOfURL:[[absoluteURL
URLByAppendingPathComponent:BUNDLE_DATA_FILENAME isDirectory:NO]
URLByAppendingPathExtension:@"plist"]];
+ if ([info isKindOfClass:[NSDictionary class]]) {
+ dictionary = [info objectForKey:SKPresentationOptionsKey];
+ array = [info objectForKey:SKTagsKey];
+ number = [info objectForKey:SKRatingKey];
}
- if ([dictionary isKindOfClass:[NSDictionary class]] && [dictionary
count])
- [tmpData setPresentationOptions:dictionary];
- if ([array isKindOfClass:[NSArray class]] && [array count])
- [tmpData setOpenMetaTags:array];
- if ([number respondsToSelector:@selector(doubleValue)] && [number
doubleValue] > 0.0)
- [tmpData setOpenMetaRating:[number doubleValue]];
+ } else {
+ SKNExtendedAttributeManager *eam = [SKNExtendedAttributeManager
sharedNoSplitManager];
+ NSError *err = nil;
+ dictionary = [eam
propertyListFromExtendedAttributeNamed:PRESENTATION_OPTIONS_KEY
atPath:[absoluteURL path] traverseLink:YES error:&err];
+ array = [eam
propertyListFromExtendedAttributeNamed:OPEN_META_TAGS_KEY atPath:[absoluteURL
path] traverseLink:YES error:NULL];
+ number = [eam
propertyListFromExtendedAttributeNamed:OPEN_META_RATING_KEY atPath:[absoluteURL
path] traverseLink:YES error:NULL];
}
- }
-
- if ([tmpData pdfDocument] == nil) {
- tmpData = nil;
+ if ([dictionary isKindOfClass:[NSDictionary class]] && [dictionary
count])
+ [tmpData setPresentationOptions:dictionary];
+ if ([array isKindOfClass:[NSArray class]] && [array count])
+ [tmpData setOpenMetaTags:array];
+ if ([number respondsToSelector:@selector(doubleValue)] && [number
doubleValue] > 0.0)
+ [tmpData setOpenMetaRating:[number doubleValue]];
+
+ return YES;
+ } else {
if (outError)
*outError = error ?: [NSError
readFileErrorWithLocalizedDescription:NSLocalizedString(@"Unable to load file",
@"Error description")];
return NO;
- } else {
- return YES;
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit