You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
(23) |
Apr
(254) |
May
(252) |
Jun
(209) |
Jul
(198) |
Aug
(192) |
Sep
(207) |
Oct
(120) |
Nov
(179) |
Dec
(52) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(48) |
Feb
(69) |
Mar
(129) |
Apr
(250) |
May
(113) |
Jun
(177) |
Jul
(228) |
Aug
(155) |
Sep
(218) |
Oct
(185) |
Nov
(109) |
Dec
(88) |
2009 |
Jan
(83) |
Feb
(39) |
Mar
(70) |
Apr
(47) |
May
(48) |
Jun
(67) |
Jul
(61) |
Aug
(97) |
Sep
(221) |
Oct
(141) |
Nov
(70) |
Dec
(61) |
2010 |
Jan
(45) |
Feb
(76) |
Mar
(178) |
Apr
(106) |
May
(57) |
Jun
(32) |
Jul
(64) |
Aug
(98) |
Sep
(96) |
Oct
(19) |
Nov
(34) |
Dec
(117) |
2011 |
Jan
(55) |
Feb
(48) |
Mar
(64) |
Apr
(21) |
May
(39) |
Jun
(53) |
Jul
(99) |
Aug
(56) |
Sep
(39) |
Oct
(26) |
Nov
(19) |
Dec
(69) |
2012 |
Jan
(17) |
Feb
(40) |
Mar
(17) |
Apr
|
May
(2) |
Jun
(8) |
Jul
(2) |
Aug
(10) |
Sep
(10) |
Oct
(38) |
Nov
(48) |
Dec
(70) |
2013 |
Jan
(43) |
Feb
(47) |
Mar
(39) |
Apr
(37) |
May
(25) |
Jun
(6) |
Jul
(20) |
Aug
(49) |
Sep
(33) |
Oct
(34) |
Nov
(75) |
Dec
(6) |
2014 |
Jan
(32) |
Feb
(10) |
Mar
(17) |
Apr
|
May
|
Jun
(26) |
Jul
(5) |
Aug
|
Sep
(4) |
Oct
(23) |
Nov
(80) |
Dec
(48) |
2015 |
Jan
(80) |
Feb
(50) |
Mar
(58) |
Apr
(20) |
May
(11) |
Jun
(16) |
Jul
(24) |
Aug
(27) |
Sep
(56) |
Oct
(30) |
Nov
(16) |
Dec
(6) |
2016 |
Jan
(31) |
Feb
(14) |
Mar
(23) |
Apr
(17) |
May
(40) |
Jun
(12) |
Jul
(17) |
Aug
(9) |
Sep
(32) |
Oct
(36) |
Nov
(23) |
Dec
(9) |
2017 |
Jan
(37) |
Feb
(23) |
Mar
(65) |
Apr
(22) |
May
(6) |
Jun
(3) |
Jul
|
Aug
|
Sep
(3) |
Oct
(22) |
Nov
(63) |
Dec
(71) |
2018 |
Jan
(83) |
Feb
(21) |
Mar
(35) |
Apr
(44) |
May
(14) |
Jun
(12) |
Jul
(8) |
Aug
(18) |
Sep
(10) |
Oct
(145) |
Nov
(144) |
Dec
(76) |
2019 |
Jan
(18) |
Feb
(28) |
Mar
(5) |
Apr
(208) |
May
(291) |
Jun
(158) |
Jul
(27) |
Aug
(8) |
Sep
(10) |
Oct
(83) |
Nov
(41) |
Dec
(31) |
2020 |
Jan
(16) |
Feb
(46) |
Mar
(100) |
Apr
(78) |
May
(69) |
Jun
(71) |
Jul
(28) |
Aug
(131) |
Sep
(176) |
Oct
(89) |
Nov
(147) |
Dec
(19) |
2021 |
Jan
(19) |
Feb
(25) |
Mar
(91) |
Apr
(98) |
May
(14) |
Jun
(44) |
Jul
(8) |
Aug
(3) |
Sep
(38) |
Oct
(57) |
Nov
(97) |
Dec
(74) |
2022 |
Jan
(89) |
Feb
(47) |
Mar
(15) |
Apr
(50) |
May
(54) |
Jun
(56) |
Jul
(80) |
Aug
(12) |
Sep
(11) |
Oct
(60) |
Nov
(48) |
Dec
(4) |
2023 |
Jan
(75) |
Feb
(49) |
Mar
(84) |
Apr
(24) |
May
(13) |
Jun
(74) |
Jul
(32) |
Aug
(66) |
Sep
(50) |
Oct
(38) |
Nov
(105) |
Dec
(181) |
2024 |
Jan
(21) |
Feb
(49) |
Mar
(77) |
Apr
(84) |
May
(20) |
Jun
(71) |
Jul
(53) |
Aug
(33) |
Sep
(54) |
Oct
(124) |
Nov
(151) |
Dec
(73) |
2025 |
Jan
(61) |
Feb
(17) |
Mar
(136) |
Apr
(72) |
May
(200) |
Jun
(238) |
Jul
(91) |
Aug
(8) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <ho...@us...> - 2007-06-07 20:48:52
|
Revision: 2257 http://skim-app.svn.sourceforge.net/skim-app/?rev=2257&view=rev Author: hofman Date: 2007-06-07 13:48:50 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Close hover window when loading pdfDocument in pdfView to avoid a possible crash do to delayed showing of hover window. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-06-07 19:48:38 UTC (rev 2256) +++ trunk/SKPDFView.m 2007-06-07 20:48:50 UTC (rev 2257) @@ -383,6 +383,7 @@ readingBar = nil; selectionRect = NSZeroRect; [self removeHoverRects]; + [[SKPDFHoverWindow sharedHoverWindow] orderOut:self]; [super setDocument:document]; [self resetHoverRects]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-07 19:48:43
|
Revision: 2256 http://skim-app.svn.sourceforge.net/skim-app/?rev=2256&view=rev Author: hofman Date: 2007-06-07 12:48:38 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Hidden defaults for magnification tool sizes. Modified Paths: -------------- trunk/InitialUserDefaults.plist trunk/SKPDFView.m Modified: trunk/InitialUserDefaults.plist =================================================================== --- trunk/InitialUserDefaults.plist 2007-06-07 17:36:20 UTC (rev 2255) +++ trunk/InitialUserDefaults.plist 2007-06-07 19:48:38 UTC (rev 2256) @@ -151,6 +151,14 @@ <real>10.0</real> <key>SKAutoCropBoxMarginWidth</key> <real>10.0</real> + <key>SKSmallMagnificationHeight</key> + <real>200.0</real> + <key>SKSmallMagnificationWidth</key> + <real>300.0</real> + <key>SKLargeMagnificationHeight</key> + <real>400.0</real> + <key>SKLargeMagnificationWidth</key> + <real>600.0</real> <key>SUScheduledCheckInterval</key> <integer>86400</integer> </dict> Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-06-07 17:36:20 UTC (rev 2255) +++ trunk/SKPDFView.m 2007-06-07 19:48:38 UTC (rev 2256) @@ -2968,9 +2968,6 @@ [controller showSnapshotAtPageNumber:[[self document] indexForPage:page] forRect:[self convertRect:rect toPage:page] factor:factor]; } -#define MAG_RECT_1 NSMakeRect(-150.0, -100.0, 300.0, 200.0) -#define MAG_RECT_2 NSMakeRect(-300.0, -200.0, 600.0, 400.0) - - (void)magnifyWithEvent:(NSEvent *)theEvent { NSPoint mouseLoc = [theEvent locationInWindow]; NSScrollView *scrollView = [[self documentView] enclosingScrollView]; @@ -2984,6 +2981,13 @@ int currentLevel = 0; int originalLevel = [theEvent clickCount]; // this should be at least 1 BOOL postNotification = [documentView postsBoundsChangedNotifications]; + NSUserDefaults *sud = [NSUserDefaults standardUserDefaults]; + float smallWidth = [sud floatForKey:@"SKSmallMagnificationWidth"]; + float smallHeight = [sud floatForKey:@"SKSmallMagnificationHeight"]; + float largeWidth = [sud floatForKey:@"SKLargeMagnificationWidth"]; + float largeHeight = [sud floatForKey:@"SKLargeMagnificationHeight"]; + NSRect smallMagRect = NSMakeRect(-0.5 * smallWidth, -0.5 * smallHeight, smallWidth, smallHeight); + NSRect largeMagRect = NSMakeRect(-0.5 * largeWidth, -0.5 * largeHeight, largeWidth, largeHeight); [documentView setPostsBoundsChangedNotifications: NO]; @@ -3019,7 +3023,7 @@ if (currentLevel > 2) { magRect = visibleRect; } else { - magRect = currentLevel == 2 ? MAG_RECT_2 : MAG_RECT_1; + magRect = currentLevel == 2 ? largeMagRect : smallMagRect; magRect.origin.x += mouseLoc.x; magRect.origin.y += mouseLoc.y; // restore the cached image in order to clear the rect This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-07 17:36:22
|
Revision: 2255 http://skim-app.svn.sourceforge.net/skim-app/?rev=2255&view=rev Author: hofman Date: 2007-06-07 10:36:20 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Improvement to magnifying tool drawing. Temporarily disable flush-window to avoid flickering of the border. Draw a thicker border with rounded corners. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-06-07 16:41:53 UTC (rev 2254) +++ trunk/SKPDFView.m 2007-06-07 17:36:20 UTC (rev 2255) @@ -51,6 +51,7 @@ #import "SKDocument.h" #import "SKPDFSynchronizer.h" #import "PDFSelection_SKExtensions.h" +#import "NSBezierPath_BDSKExtensions.h" #import <Carbon/Carbon.h> NSString *SKPDFViewToolModeChangedNotification = @"SKPDFViewToolModeChangedNotification"; @@ -2983,7 +2984,6 @@ int currentLevel = 0; int originalLevel = [theEvent clickCount]; // this should be at least 1 BOOL postNotification = [documentView postsBoundsChangedNotifications]; - NSBezierPath *path; [documentView setPostsBoundsChangedNotifications: NO]; @@ -3013,6 +3013,8 @@ mouseInside = YES; [NSCursor hide]; } + // make sure we flush the complete drawing to avoid flickering + [[self window] disableFlushWindow]; // define rect for magnification in window coordinate if (currentLevel > 2) { magRect = visibleRect; @@ -3032,21 +3034,21 @@ magScale * NSWidth(originalBounds), magScale * NSHeight(originalBounds)); [documentView setBounds:magBounds]; - [self displayRect:[self convertRect:NSInsetRect(magRect, 1.0, 1.0) fromView:nil]]; // this flushes the buffer + [self displayRect:[self convertRect:NSInsetRect(magRect, 3.0, 3.0) fromView:nil]]; // this flushes the buffer [documentView setBounds:originalBounds]; [clipView lockFocus]; - NSGraphicsContext *ctxt = [NSGraphicsContext currentContext]; - [ctxt saveGraphicsState]; - outlineRect = NSInsetRect(NSIntegralRect([clipView convertRect:magRect fromView:nil]), 0.5, 0.5); - path = [NSBezierPath bezierPathWithRect:outlineRect]; - [path setLineWidth:1.0]; - [[NSColor blackColor] set]; - [path stroke]; - [ctxt flushGraphics]; - [ctxt restoreGraphicsState]; + [[NSGraphicsContext currentContext] saveGraphicsState]; + outlineRect = NSInsetRect(NSIntegralRect([clipView convertRect:magRect fromView:nil]), 1.5, 1.5); + [NSBezierPath setDefaultLineWidth:3.0]; + [[NSColor colorWithDeviceWhite:0.2 alpha:1.0] set]; + [NSBezierPath strokeRoundRectInRect:outlineRect radius:8.0]; + [[NSGraphicsContext currentContext] restoreGraphicsState]; [clipView unlockFocus]; + [[self window] enableFlushWindow]; + [[self window] flushWindowIfNeeded]; + } else { // mouse is not in the rect // show cursor if (mouseInside == YES) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-07 16:41:55
|
Revision: 2254 http://skim-app.svn.sourceforge.net/skim-app/?rev=2254&view=rev Author: amaxwell Date: 2007-06-07 09:41:53 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Open files lazily, as the path objects may be created just for removal or comparison. Implement -isEqual: in terms of isEqualToString: since that's what NSPathStore2 apparently overrides. Modified Paths: -------------- trunk/vendorsrc/ulikusterer/UKKQueue.m Modified: trunk/vendorsrc/ulikusterer/UKKQueue.m =================================================================== --- trunk/vendorsrc/ulikusterer/UKKQueue.m 2007-06-07 12:04:55 UTC (rev 2253) +++ trunk/vendorsrc/ulikusterer/UKKQueue.m 2007-06-07 16:41:53 UTC (rev 2254) @@ -436,12 +436,15 @@ @implementation UKWatchedPath +// open() is documented to return -1 in case of an error and >=0 for success +static const int UNOPENED_DESCRIPTOR = -2; + - (id)initWatchedPathWithPath:(NSString *)fullPath; { if (self = [super init]) { path = [fullPath copy]; - fd = open( [path fileSystemRepresentation], O_EVTONLY, 0 ); - // don't return nil even if the fd is invalid; we may need this for a path comparison to remove a stale file + // allows us to open files lazily, since these may be created just for a path comparison when removing from the queue + fd = UNOPENED_DESCRIPTOR; } return self; } @@ -461,8 +464,13 @@ } - (unsigned int)hash { return [path hash]; } -- (BOOL)isEqual:(id)other { return [other isKindOfClass:[self class]] ? [path isEqual:[other path]] : NO; } -- (int)fileDescriptor { return fd; } +// implement in terms of -isEqualToString: since that's what NSPathStore2 uses +- (BOOL)isEqual:(id)other { return [other isKindOfClass:[self class]] ? [path isEqualToString:[other path]] : NO; } +- (int)fileDescriptor { + if (fd == UNOPENED_DESCRIPTOR) + fd = open([path fileSystemRepresentation], O_EVTONLY, 0); + return fd; +} - (NSString *)path { return path; } @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-07 12:05:00
|
Revision: 2253 http://skim-app.svn.sourceforge.net/skim-app/?rev=2253&view=rev Author: hofman Date: 2007-06-07 05:04:55 -0700 (Thu, 07 Jun 2007) Log Message: ----------- Include background image in disk image. Modified Paths: -------------- trunk/Skim.dmg.zip Modified: trunk/Skim.dmg.zip =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 20:38:09
|
Revision: 2252 http://skim-app.svn.sourceforge.net/skim-app/?rev=2252&view=rev Author: hofman Date: 2007-06-06 13:38:07 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Always update mod date to prevent repeating messages. Changes should be notified only once. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 20:28:46 UTC (rev 2251) +++ trunk/SKDocument.m 2007-06-06 20:38:07 UTC (rev 2252) @@ -616,10 +616,14 @@ - (void)checkForFileModification:(NSTimer *)timer { NSDate *currentFileModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:[self fileName] traverseLink:YES] fileModificationDate]; - if (nil == lastModifiedDate) + if (nil == lastModifiedDate) { lastModifiedDate = [currentFileModifiedDate copy]; - else if ([lastModifiedDate compare:currentFileModifiedDate] == NSOrderedAscending) - [self handleFileUpdateNotification:nil]; // lastModifiedDate gets reset only if it's valid PDF + } else if ([lastModifiedDate compare:currentFileModifiedDate] == NSOrderedAscending) { + // Always reset mod date to prevent repeating messages; note that the kqueue also notifies only once + [lastModifiedDate release]; + lastModifiedDate = [currentFileModifiedDate copy]; + [self handleFileUpdateNotification:nil]; + } } @@ -656,10 +660,6 @@ [[alert window] orderOut:nil]; [self presentError:error modalForWindow:[self windowForSheet] delegate:nil didPresentSelector:NULL contextInfo:NULL]; } - } else { - // if the file load succeeded, reset the modification date - [lastModifiedDate release]; - lastModifiedDate = [[[[NSFileManager defaultManager] fileAttributesAtPath:[self fileName] traverseLink:YES] fileModificationDate] copy]; } if (returnCode == NSAlertAlternateReturn) autoUpdate = YES; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 20:28:47
|
Revision: 2251 http://skim-app.svn.sourceforge.net/skim-app/?rev=2251&view=rev Author: hofman Date: 2007-06-06 13:28:46 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Set file mod date when reading or saving, to prevent us from noticing our own changes, or failing to take into account manual reloading. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 19:09:18 UTC (rev 2250) +++ trunk/SKDocument.m 2007-06-06 20:28:46 UTC (rev 2251) @@ -204,6 +204,8 @@ [[self undoManager] removeAllActions]; [self updateChangeCount:NSChangeCleared]; fileChangedOnDisk = NO; + [lastModifiedDate release]; + lastModifiedDate = [[[[NSFileManager defaultManager] fileAttributesAtPath:[self fileName] traverseLink:YES] fileModificationDate] retain]; } } @@ -377,6 +379,8 @@ [pdfDoc release]; [data release]; fileChangedOnDisk = NO; + [lastModifiedDate release]; + lastModifiedDate = [[[[NSFileManager defaultManager] fileAttributesAtPath:[absoluteURL path] traverseLink:YES] fileModificationDate] retain]; } else { [self setPDFData:nil]; } @@ -743,6 +747,7 @@ if ([window isEqual:[[window windowController] window]]) { [[UKKQueue sharedFileWatcher] removePath:[self fileName]]; [fileUpdateTimer invalidate]; + fileUpdateTimer = nil; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-06 19:09:22
|
Revision: 2250 http://skim-app.svn.sourceforge.net/skim-app/?rev=2250&view=rev Author: amaxwell Date: 2007-06-06 12:09:18 -0700 (Wed, 06 Jun 2007) Log Message: ----------- remove log Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 19:06:56 UTC (rev 2249) +++ trunk/SKDocument.m 2007-06-06 19:09:18 UTC (rev 2250) @@ -665,7 +665,7 @@ - (void)handleFileUpdateNotification:(NSNotification *)notification { NSString *fileName = [self fileName]; - NSLog(@"file update notification"); + // should never happen if (notification && [[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) NSLog(@"*** received change notice for %@", [notification object]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-06 19:07:03
|
Revision: 2249 http://skim-app.svn.sourceforge.net/skim-app/?rev=2249&view=rev Author: amaxwell Date: 2007-06-06 12:06:56 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Add polling mechanism for filesystems that don't support kqueue. Uses kqueue notification handler, so code path for reverting should be identical. Modified Paths: -------------- trunk/SKDocument.h trunk/SKDocument.m Modified: trunk/SKDocument.h =================================================================== --- trunk/SKDocument.h 2007-06-06 16:41:39 UTC (rev 2248) +++ trunk/SKDocument.h 2007-06-06 19:06:56 UTC (rev 2249) @@ -61,6 +61,10 @@ BOOL autoUpdate; BOOL isSaving; BOOL fileChangedOnDisk; + + // only used for network filesystems; fileUpdateTimer is not retained by the doc + NSDate *lastModifiedDate; + NSTimer *fileUpdateTimer; } - (IBAction)readNotes:(id)sender; Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 16:41:39 UTC (rev 2248) +++ trunk/SKDocument.m 2007-06-06 19:06:56 UTC (rev 2249) @@ -89,6 +89,7 @@ [pdfData release]; [noteDicts release]; [readNotesAccessoryView release]; + [lastModifiedDate release]; [super dealloc]; } @@ -575,25 +576,67 @@ - (void)stopCheckingFileUpdatesForFile:(NSString *)fileName { if (fileName) { + // remove from kqueue and invalidate timer; maybe we've changed filesystems [[UKKQueue sharedFileWatcher] removePath:fileName]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc removeObserver:self name:UKFileWatcherWriteNotification object:fileName]; [nc removeObserver:self name:UKFileWatcherRenameNotification object:fileName]; [nc removeObserver:self name:UKFileWatcherDeleteNotification object:fileName]; + + if (fileUpdateTimer) { + [fileUpdateTimer invalidate]; + fileUpdateTimer = nil; + } } } +static BOOL isFileOnHFSVolume(NSString *fileName) +{ + FSRef fileRef; + OSStatus err; + err = FSPathMakeRef((const UInt8 *)[fileName fileSystemRepresentation], &fileRef, NULL); + + FSCatalogInfo fileInfo; + if (noErr == err) + err = FSGetCatalogInfo(&fileRef, kFSCatInfoVolume, &fileInfo, NULL, NULL, NULL); + + FSVolumeInfo volInfo; + if (noErr == err) + err = FSGetVolumeInfo(fileInfo.volume, 0, NULL, kFSVolInfoFSInfo, &volInfo, NULL, NULL); + + // HFS and HFS+ are documented to have zero for filesystemID; AFP at least is non-zero + BOOL isHFSVolume = (noErr == err) ? (0 == volInfo.filesystemID) : NO; + + return isHFSVolume; +} + +- (void)checkForFileModification:(NSTimer *)timer { + NSDate *currentFileModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:[self fileName] traverseLink:YES] fileModificationDate]; + if (nil == lastModifiedDate) + lastModifiedDate = [currentFileModifiedDate copy]; + else if ([lastModifiedDate compare:currentFileModifiedDate] == NSOrderedAscending) + [self handleFileUpdateNotification:nil]; // lastModifiedDate gets reset only if it's valid PDF + +} + - (void)checkFileUpdatesIfNeeded { NSString *fileName = [self fileName]; if (fileName) { [self stopCheckingFileUpdatesForFile:fileName]; if ([[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey]) { - [[UKKQueue sharedFileWatcher] addPath:[self fileName]]; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self selector:@selector(handleFileUpdateNotification:) name:UKFileWatcherWriteNotification object:fileName]; - [nc addObserver:self selector:@selector(handleFileMoveNotification:) name:UKFileWatcherRenameNotification object:fileName]; - [nc addObserver:self selector:@selector(handleFileMoveNotification:) name:UKFileWatcherDeleteNotification object:fileName]; + + // AFP, NFS, SMB etc. don't support kqueues, so we have to manually poll and compare mod dates + if (isFileOnHFSVolume(fileName)) { + [[UKKQueue sharedFileWatcher] addPath:[self fileName]]; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self selector:@selector(handleFileUpdateNotification:) name:UKFileWatcherWriteNotification object:fileName]; + [nc addObserver:self selector:@selector(handleFileMoveNotification:) name:UKFileWatcherRenameNotification object:fileName]; + [nc addObserver:self selector:@selector(handleFileMoveNotification:) name:UKFileWatcherDeleteNotification object:fileName]; + } else if (nil == fileUpdateTimer) { + // Let the runloop retain the timer; timer retains us. Use a fairly long delay since this is likely a network volume. + fileUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:(double)2.0 target:self selector:@selector(checkForFileModification:) userInfo:nil repeats:YES]; + } } } } @@ -609,6 +652,10 @@ [[alert window] orderOut:nil]; [self presentError:error modalForWindow:[self windowForSheet] delegate:nil didPresentSelector:NULL contextInfo:NULL]; } + } else { + // if the file load succeeded, reset the modification date + [lastModifiedDate release]; + lastModifiedDate = [[[[NSFileManager defaultManager] fileAttributesAtPath:[self fileName] traverseLink:YES] fileModificationDate] copy]; } if (returnCode == NSAlertAlternateReturn) autoUpdate = YES; @@ -618,7 +665,7 @@ - (void)handleFileUpdateNotification:(NSNotification *)notification { NSString *fileName = [self fileName]; - + NSLog(@"file update notification"); // should never happen if (notification && [[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) NSLog(@"*** received change notice for %@", [notification object]); @@ -695,6 +742,7 @@ // ignore when we're switching fullscreen/main windows if ([window isEqual:[[window windowController] window]]) { [[UKKQueue sharedFileWatcher] removePath:[self fileName]]; + [fileUpdateTimer invalidate]; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 16:41:40
|
Revision: 2248 http://skim-app.svn.sourceforge.net/skim-app/?rev=2248&view=rev Author: hofman Date: 2007-06-06 09:41:39 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Remove log for debugging. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 16:40:28 UTC (rev 2247) +++ trunk/SKDocument.m 2007-06-06 16:41:39 UTC (rev 2248) @@ -660,7 +660,7 @@ foundTrailer = (bcmp(&buffer[i], pattern, patternLength) == 0); } - if (foundTrailer) {NSLog(@"%i %i",autoUpdate,[self isDocumentEdited]); + if (foundTrailer) { if (autoUpdate && [self isDocumentEdited] == NO) { // tried queuing this with a delayed perform/cancel previous, but revert takes long enough that the cancel was never used [self fileUpdateAlertDidEnd:nil returnCode:NSAlertDefaultReturn contextInfo:NULL]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 16:41:27
|
Revision: 2247 http://skim-app.svn.sourceforge.net/skim-app/?rev=2247&view=rev Author: hofman Date: 2007-06-06 09:40:28 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Add comments and make sure the sheet is ended before reloading the document. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 16:26:51 UTC (rev 2246) +++ trunk/SKDocument.m 2007-06-06 16:40:28 UTC (rev 2247) @@ -660,7 +660,7 @@ foundTrailer = (bcmp(&buffer[i], pattern, patternLength) == 0); } - if (foundTrailer) { + if (foundTrailer) {NSLog(@"%i %i",autoUpdate,[self isDocumentEdited]); if (autoUpdate && [self isDocumentEdited] == NO) { // tried queuing this with a delayed perform/cancel previous, but revert takes long enough that the cancel was never used [self fileUpdateAlertDidEnd:nil returnCode:NSAlertDefaultReturn contextInfo:NULL]; @@ -699,8 +699,10 @@ } - (void)handleWindowDidEndSheetNotification:(NSNotification *)notification { + // This is only called to delay a file update handling [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidEndSheetNotification object:[notification object]]; - [self handleFileUpdateNotification:nil]; + // Make sure we finish the sheet event first. E.g. the documentEdited status may need to be updated. + [self performSelector:@selector(handleFileUpdateNotification:) withObject:nil afterDelay:0.0]; } #pragma mark Notification observation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 16:26:52
|
Revision: 2246 http://skim-app.svn.sourceforge.net/skim-app/?rev=2246&view=rev Author: hofman Date: 2007-06-06 09:26:51 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Delay reloading document when there is a sheet attched to the window. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 16:10:41 UTC (rev 2245) +++ trunk/SKDocument.m 2007-06-06 16:26:51 UTC (rev 2246) @@ -74,6 +74,7 @@ - (void)handleFileUpdateNotification:(NSNotification *)notification; - (void)handleFileMoveNotification:(NSNotification *)notification; - (void)handleWindowWillCloseNotification:(NSNotification *)notification; +- (void)handleWindowDidEndSheetNotification:(NSNotification *)notification; @end @@ -619,15 +620,21 @@ NSString *fileName = [self fileName]; // should never happen - if ([[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) + if (notification && [[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) NSLog(@"*** received change notice for %@", [notification object]); - // check for attached sheet, since reloading the document while an alert is up looks a bit strange if ([[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey] && - [[NSFileManager defaultManager] fileExistsAtPath:fileName] && nil == [[self windowForSheet] attachedSheet]) { + [[NSFileManager defaultManager] fileExistsAtPath:fileName]) { fileChangedOnDisk = YES; + // check for attached sheet, since reloading the document while an alert is up looks a bit strange + if ([[self windowForSheet] attachedSheet]) { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleWindowDidEndSheetNotification:) + name:NSWindowDidEndSheetNotification object:[self windowForSheet]]; + return; + } + NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:fileName]; // read the last 1024 bytes of the file (or entire file); Adobe's spec says they allow %%EOF anywhere in that range @@ -691,6 +698,11 @@ } } +- (void)handleWindowDidEndSheetNotification:(NSNotification *)notification { + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidEndSheetNotification object:[notification object]]; + [self handleFileUpdateNotification:nil]; +} + #pragma mark Notification observation - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-06 16:10:45
|
Revision: 2245 http://skim-app.svn.sourceforge.net/skim-app/?rev=2245&view=rev Author: amaxwell Date: 2007-06-06 09:10:41 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Avoid reloading the document when a sheet is displayed. Add comment. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-06 16:09:30 UTC (rev 2244) +++ trunk/SKDocument.m 2007-06-06 16:10:41 UTC (rev 2245) @@ -622,10 +622,9 @@ if ([[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) NSLog(@"*** received change notice for %@", [notification object]); - NSFileManager *fm = [NSFileManager defaultManager]; - + // check for attached sheet, since reloading the document while an alert is up looks a bit strange if ([[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey] && - [fm fileExistsAtPath:fileName]) { + [[NSFileManager defaultManager] fileExistsAtPath:fileName] && nil == [[self windowForSheet] attachedSheet]) { fileChangedOnDisk = YES; @@ -656,6 +655,7 @@ if (foundTrailer) { if (autoUpdate && [self isDocumentEdited] == NO) { + // tried queuing this with a delayed perform/cancel previous, but revert takes long enough that the cancel was never used [self fileUpdateAlertDidEnd:nil returnCode:NSAlertDefaultReturn contextInfo:NULL]; } else { NSString *message; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-06 16:09:31
|
Revision: 2244 http://skim-app.svn.sourceforge.net/skim-app/?rev=2244&view=rev Author: amaxwell Date: 2007-06-06 09:09:30 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Minor performance tweaks, add comments. Modified Paths: -------------- trunk/vendorsrc/ulikusterer/UKKQueue.m Modified: trunk/vendorsrc/ulikusterer/UKKQueue.m =================================================================== --- trunk/vendorsrc/ulikusterer/UKKQueue.m 2007-06-06 15:41:24 UTC (rev 2243) +++ trunk/vendorsrc/ulikusterer/UKKQueue.m 2007-06-06 16:09:30 UTC (rev 2244) @@ -300,6 +300,8 @@ // To terminate this method (and its thread), set keepThreadRunning to NO. // // REVISIONS: +// 2007-06-05 ARM Removed NSWorkspace notification posting, as it is not +// thread safe. // 2005-08-27 UK Changed to use keepThreadRunning instead of kqueueFD // being -1 as termination criterion, and to close the // queue in this thread so the main thread isn't blocked. @@ -327,7 +329,7 @@ { if( ev.fflags ) { - NSString* fpath = [[(NSString *)ev.udata retain] autorelease]; // In case one of the notified folks removes the path. + NSString* fpath = [(NSString *)ev.udata retain]; // In case one of the notified folks removes the path. //NSLog(@"UKKQueue: Detected file change: %@", fpath); //NSLog(@"ev.flags = %u",ev.fflags); // DEBUG ONLY! @@ -346,6 +348,8 @@ [self postNotification: UKFileWatcherLinkCountChangeNotification forFile: fpath]; if( (ev.fflags & NOTE_REVOKE) == NOTE_REVOKE ) [self postNotification: UKFileWatcherAccessRevocationNotification forFile: fpath]; + + [fpath release]; } } } @@ -371,6 +375,9 @@ // send them elsewhere. // // REVISIONS: +// 2007-06-05 ARM Modified to queue notifications on the main thread +// rather than posting immediately on the UKKQueue thread. +// Removed delegate methods as we only use the singleton. // 2004-02-27 UK Changed this to send new notification, and the old one // only to objects that respond to it. The old category on // NSObject could cause problems with the proxy itself. @@ -380,18 +387,22 @@ // 2004-03-13 UK Documented. // ----------------------------------------------------------------------------- +// this is only a wrapper method for enqueueNotification:postingStyle: to avoid using NSInvocation +- (void)mainThreadEnqueueNotification:(NSNotification *)note +{ + [[NSNotificationQueue defaultQueue] enqueueNotification:note postingStyle:NSPostWhenIdle]; +} + -(void) postNotification: (NSString*)nm forFile: (NSString*)fp { - NSNotificationQueue *nq = [NSNotificationQueue defaultQueue]; - NSNotification *note = [NSNotification notificationWithName:nm object:fp userInfo:[NSDictionary dictionaryWithObjectsAndKeys: fp, @"path", nil]]; - NSPostingStyle style = NSPostWhenIdle; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[nq methodSignatureForSelector:@selector(enqueueNotification:postingStyle:)]]; - [invocation setTarget:nq]; - [invocation setSelector:@selector(enqueueNotification:postingStyle:)]; - [invocation setArgument:¬e atIndex:2]; - [invocation setArgument:&style atIndex:3]; - [invocation retainArguments]; - [invocation performSelectorOnMainThread:@selector(invoke) withObject:nil waitUntilDone:NO]; + NSString *key = @"path"; + NSDictionary *userInfo = [[NSDictionary alloc] initWithObjects:&fp forKeys:&key count:1]; + + // this is the notification we'll queue on the main thread + NSNotification *note = [NSNotification notificationWithName:nm object:fp userInfo:userInfo]; + [userInfo release]; + + [self performSelectorOnMainThread:@selector(mainThreadEnqueueNotification:) withObject:note waitUntilDone:NO]; } // ----------------------------------------------------------------------------- @@ -411,7 +422,18 @@ @end +// ----------------------------------------------------------------------------- +// description: +// UKWatchedPath wraps a path and file descriptor into a single object, +// implementing -hash and -isEqual: in terms of the path. This allows +// easier management of path/file descriptor pairs from the queue, and +// enables use of NSMutableSet so duplicate paths are ignored. +// +// REVISIONS: +// 2007-06-05 ARM Created. +// ----------------------------------------------------------------------------- + @implementation UKWatchedPath - (id)initWatchedPathWithPath:(NSString *)fullPath; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 15:41:25
|
Revision: 2243 http://skim-app.svn.sourceforge.net/skim-app/?rev=2243&view=rev Author: hofman Date: 2007-06-06 08:41:24 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Add shortcut for Zoom to Selection. Modified Paths: -------------- trunk/Dutch.lproj/MainMenu.nib/info.nib trunk/Dutch.lproj/MainMenu.nib/keyedobjects.nib trunk/English.lproj/MainMenu.nib/keyedobjects.nib trunk/Italian.lproj/MainMenu.nib/keyedobjects.nib Modified: trunk/Dutch.lproj/MainMenu.nib/info.nib =================================================================== --- trunk/Dutch.lproj/MainMenu.nib/info.nib 2007-06-06 10:14:04 UTC (rev 2242) +++ trunk/Dutch.lproj/MainMenu.nib/info.nib 2007-06-06 15:41:24 UTC (rev 2243) @@ -7,10 +7,14 @@ <key>IBEditorPositions</key> <dict> <key>29</key> - <string>140 614 542 44 0 0 1440 938 </string> + <string>140 614 635 44 0 0 1440 938 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> + <key>IBOpenObjects</key> + <array> + <integer>29</integer> + </array> <key>IBSystem Version</key> <string>8P135</string> </dict> Modified: trunk/Dutch.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/English.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 10:14:06
|
Revision: 2242 http://skim-app.svn.sourceforge.net/skim-app/?rev=2242&view=rev Author: hofman Date: 2007-06-06 03:14:04 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Call super's mouseUp after selecting a markup in note tool mode. Modified Paths: -------------- trunk/SKPDFView.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2007-06-06 09:53:55 UTC (rev 2241) +++ trunk/SKPDFView.m 2007-06-06 10:14:04 UTC (rev 2242) @@ -818,6 +818,7 @@ } else if (toolMode == SKNoteToolMode && hideNotes == NO && [self currentSelection] && (annotationMode == SKHighlightNote || annotationMode == SKUnderlineNote || annotationMode == SKStrikeOutNote)) { [self addAnnotationFromSelectionWithType:annotationMode]; [self setCurrentSelection:nil]; + [super mouseUp:theEvent]; // this may be necssary to clean up a selection rect } else [super mouseUp:theEvent]; if (didBeginUndoGrouping) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-06 09:54:01
|
Revision: 2241 http://skim-app.svn.sourceforge.net/skim-app/?rev=2241&view=rev Author: hofman Date: 2007-06-06 02:53:55 -0700 (Wed, 06 Jun 2007) Log Message: ----------- Fix validation of Revert menu item. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-05 21:12:18 UTC (rev 2240) +++ trunk/SKDocument.m 2007-06-06 09:53:55 UTC (rev 2241) @@ -562,8 +562,10 @@ if ([anItem action] == @selector(performFindPanelAction:)) { return [[SKFindController sharedFindController] validateUserInterfaceItem:anItem]; } else if ([anItem action] == @selector(revertDocumentToSaved:)) { - if (fileChangedOnDisk && [self fileName]) - return YES; + NSString *fileName = [self fileName]; + if (fileName == nil || [[NSFileManager defaultManager] fileExistsAtPath:fileName] == NO) + return NO; + return [self isDocumentEdited] || fileChangedOnDisk; } return [super validateUserInterfaceItem:anItem]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 21:12:19
|
Revision: 2240 http://skim-app.svn.sourceforge.net/skim-app/?rev=2240&view=rev Author: hofman Date: 2007-06-05 14:12:18 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Remove duplicate file update checking at load time. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-05 21:03:59 UTC (rev 2239) +++ trunk/SKDocument.m 2007-06-05 21:12:18 UTC (rev 2240) @@ -106,8 +106,6 @@ [mainController setAnnotationsFromDictionaries:noteDicts]; [self setNoteDicts:nil]; - [self checkFileUpdatesIfNeeded]; - [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKey:SKAutoCheckFileUpdateKey]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleWindowWillCloseNotification:) name:NSWindowWillCloseNotification object:[mainController window]]; @@ -583,12 +581,11 @@ } - (void)checkFileUpdatesIfNeeded { - BOOL autoUpdatePref = [[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey]; NSString *fileName = [self fileName]; if (fileName) { [self stopCheckingFileUpdatesForFile:fileName]; - if (autoUpdatePref) { + if ([[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey]) { [[UKKQueue sharedFileWatcher] addPath:[self fileName]]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(handleFileUpdateNotification:) name:UKFileWatcherWriteNotification object:fileName]; @@ -617,7 +614,7 @@ - (void)handleFileUpdateNotification:(NSNotification *)notification { - NSString *fileName = [[self fileURL] path]; + NSString *fileName = [self fileName]; // should never happen if ([[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 21:04:04
|
Revision: 2239 http://skim-app.svn.sourceforge.net/skim-app/?rev=2239&view=rev Author: hofman Date: 2007-06-05 14:03:59 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Declare method. Modified Paths: -------------- trunk/SKDocument.h trunk/SKDocument.m Modified: trunk/SKDocument.h =================================================================== --- trunk/SKDocument.h 2007-06-05 19:01:59 UTC (rev 2238) +++ trunk/SKDocument.h 2007-06-05 21:03:59 UTC (rev 2239) @@ -81,8 +81,6 @@ - (SKPDFSynchronizer *)synchronizer; -- (void)handleWindowWillCloseNotification:(NSNotification *)notification; - - (unsigned int)countOfPages; - (PDFPage *)objectInPagesAtIndex:(unsigned int)index; - (NSArray *)notes; Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-05 19:01:59 UTC (rev 2238) +++ trunk/SKDocument.m 2007-06-05 21:03:59 UTC (rev 2239) @@ -68,11 +68,12 @@ - (void)setPDFData:(NSData *)data; - (void)setPDFDoc:(PDFDocument *)doc; - (void)setNoteDicts:(NSArray *)array; -- (void)setLastChangedDate:(NSDate *)date; - (void)checkFileUpdatesIfNeeded; - (void)stopCheckingFileUpdatesForFile:(NSString *)fileName; -- (void)handleFileUpdateNotification:(NSNotification *)note; +- (void)handleFileUpdateNotification:(NSNotification *)notification; +- (void)handleFileMoveNotification:(NSNotification *)notification; +- (void)handleWindowWillCloseNotification:(NSNotification *)notification; @end @@ -571,11 +572,6 @@ #pragma mark File update checking -- (void)handleFileMoveNotification:(NSNotification *)note { - [self stopCheckingFileUpdatesForFile:[[note userInfo] objectForKey:@"path"]]; - // If the file is moved, NSDocument will notice and will call setFileURL, where we start watching again -} - - (void)stopCheckingFileUpdatesForFile:(NSString *)fileName { if (fileName) { [[UKKQueue sharedFileWatcher] removePath:fileName]; @@ -619,13 +615,13 @@ } } -- (void)handleFileUpdateNotification:(NSNotification *)note { +- (void)handleFileUpdateNotification:(NSNotification *)notification { NSString *fileName = [[self fileURL] path]; // should never happen - if ([[[note userInfo] objectForKey:@"path"] isEqual:fileName] == NO) - NSLog(@"*** received change notice for %@", [note object]); + if ([[[notification userInfo] objectForKey:@"path"] isEqual:fileName] == NO) + NSLog(@"*** received change notice for %@", [notification object]); NSFileManager *fm = [NSFileManager defaultManager]; @@ -683,6 +679,19 @@ } } +- (void)handleFileMoveNotification:(NSNotification *)notification { + [self stopCheckingFileUpdatesForFile:[[notification userInfo] objectForKey:@"path"]]; + // If the file is moved, NSDocument will notice and will call setFileURL, where we start watching again +} + +- (void)handleWindowWillCloseNotification:(NSNotification *)notification { + NSWindow *window = [notification object]; + // ignore when we're switching fullscreen/main windows + if ([window isEqual:[[window windowController] window]]) { + [[UKKQueue sharedFileWatcher] removePath:[self fileName]]; + } +} + #pragma mark Notification observation - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { @@ -698,14 +707,6 @@ } } -- (void)handleWindowWillCloseNotification:(NSNotification *)notification { - NSWindow *window = [notification object]; - // ignore when we're switching fullscreen/main windows - if ([window isEqual:[[window windowController] window]]) { - [[UKKQueue sharedFileWatcher] removePath:[self fileName]]; - } -} - #pragma mark Pdfsync support - (void)setFileURL:(NSURL *)absoluteURL { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 19:02:00
|
Revision: 2238 http://skim-app.svn.sourceforge.net/skim-app/?rev=2238&view=rev Author: hofman Date: 2007-06-05 12:01:59 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Simplify interface to updater: create a shared instance, and always return it from init, so it is the same instance as the one created in the nib. Modified Paths: -------------- trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.h trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.h =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.h 2007-06-05 18:34:57 UTC (rev 2237) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.h 2007-06-05 19:01:59 UTC (rev 2238) @@ -35,6 +35,10 @@ BOOL updateInProgress; } +// This is the shared instance. It is the only existing instance, +// also returned by the standard initializer, so it can be instantiated in a nib-file. ++ (id)sharedUpdater; + // This IBAction is meant for a main menu item. Hook up any menu item to this action, // and Sparkle will check for updates and report back its findings verbosely. - (IBAction)checkForUpdates:sender; Modified: trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m =================================================================== --- trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m 2007-06-05 18:34:57 UTC (rev 2237) +++ trunk/vendorsrc/andymatuschak/Sparkle/SUUpdater.m 2007-06-05 19:01:59 UTC (rev 2238) @@ -42,10 +42,28 @@ @implementation SUUpdater +static SUUpdater *sharedUpdater = nil; + ++ (id)sharedUpdater +{ + if (sharedUpdater == nil) + sharedUpdater = [[self alloc] init]; + return sharedUpdater; +} + - init { - [super init]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:@"NSApplicationDidFinishLaunchingNotification" object:NSApp]; + self = [super init]; + if (sharedUpdater) + { + [self release]; + self = [sharedUpdater retain]; + } + else if (self) + { + sharedUpdater = self; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:@"NSApplicationDidFinishLaunchingNotification" object:NSApp]; + } return self; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ama...@us...> - 2007-06-05 18:34:59
|
Revision: 2237 http://skim-app.svn.sourceforge.net/skim-app/?rev=2237&view=rev Author: amaxwell Date: 2007-06-05 11:34:57 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Fix starting position of file offset when the file is shorter than 1024 bytes. Simplify searching, and make sure we get the last EOF marker in the file by searching from the end of the data range. Modified Paths: -------------- trunk/SKDocument.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-06-05 18:33:47 UTC (rev 2236) +++ trunk/SKDocument.m 2007-06-05 18:34:57 UTC (rev 2237) @@ -621,47 +621,44 @@ - (void)handleFileUpdateNotification:(NSNotification *)note { + NSString *fileName = [[self fileURL] path]; + // should never happen - if ([[[note userInfo] objectForKey:@"path"] isEqual:[self fileName]] == NO) + if ([[[note userInfo] objectForKey:@"path"] isEqual:fileName] == NO) NSLog(@"*** received change notice for %@", [note object]); NSFileManager *fm = [NSFileManager defaultManager]; if ([[NSUserDefaults standardUserDefaults] boolForKey:SKAutoCheckFileUpdateKey] && - [fm fileExistsAtPath:[self fileName]]) { + [fm fileExistsAtPath:fileName]) { fileChangedOnDisk = YES; - NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:[self fileName]]; + NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:fileName]; + + // read the last 1024 bytes of the file (or entire file); Adobe's spec says they allow %%EOF anywhere in that range unsigned long long fileEnd = [fh seekToEndOfFile]; - unsigned long long startPos = fileEnd < 1024 ? fileEnd : fileEnd - 1024; + unsigned long long startPos = fileEnd < 1024 ? 0 : fileEnd - 1024; [fh seekToFileOffset:startPos]; NSData *trailerData = [fh readDataToEndOfFile]; + + // done with the filehandle and offsets; now we have the trailer as NSData, so try to find the marker pattern in it const char *pattern = "%%EOF"; unsigned patternLength = strlen(pattern); + unsigned trailerLength = [trailerData length]; BOOL foundTrailer = NO; - - // adapted from OmniFoundation - if ([trailerData length] > patternLength) { - unsigned const char *bufferStart = [trailerData bytes]; - unsigned const char *ptr = bufferStart; - unsigned const char *ptrEnd = bufferStart + fileEnd - startPos - patternLength; + + int i, startIndex = trailerLength - patternLength; + const char *buffer = [trailerData bytes]; + + // Adobe says to search from the end, so we get the last %%EOF + for (i = startIndex; i >= 0 && NO == foundTrailer; i -= 1) { - for (;;) { - if (memcmp(ptr, pattern, patternLength) == 0) { - foundTrailer = YES; - break; - } - - ptr++; - if (ptr == ptrEnd) - break; - ptr = memchr(ptr, *(const char *)pattern, (ptrEnd - ptr)); - if (!ptr) - break; - } + // don't bother comparing if the first byte doesn't match + if (buffer[i] == pattern[0]) + foundTrailer = (bcmp(&buffer[i], pattern, patternLength) == 0); } - + if (foundTrailer) { if (autoUpdate && [self isDocumentEdited] == NO) { [self fileUpdateAlertDidEnd:nil returnCode:NSAlertDefaultReturn contextInfo:NULL]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 18:33:49
|
Revision: 2236 http://skim-app.svn.sourceforge.net/skim-app/?rev=2236&view=rev Author: hofman Date: 2007-06-05 11:33:47 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Simplify interface to updater: create a shared instance, and always return it from init, so it is the same instance as the one created in the nib. Modified Paths: -------------- trunk/Dutch.lproj/MainMenu.nib/classes.nib trunk/Dutch.lproj/MainMenu.nib/keyedobjects.nib trunk/English.lproj/MainMenu.nib/classes.nib trunk/English.lproj/MainMenu.nib/keyedobjects.nib trunk/Italian.lproj/MainMenu.nib/classes.nib trunk/Italian.lproj/MainMenu.nib/keyedobjects.nib trunk/SKApplicationController.h trunk/SKApplicationController.m trunk/SKPreferenceController.m Modified: trunk/Dutch.lproj/MainMenu.nib/classes.nib =================================================================== --- trunk/Dutch.lproj/MainMenu.nib/classes.nib 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/Dutch.lproj/MainMenu.nib/classes.nib 2007-06-05 18:33:47 UTC (rev 2236) @@ -71,7 +71,6 @@ }; CLASS = SKApplicationController; LANGUAGE = ObjC; - OUTLETS = {updater = SUUpdater; }; SUPERCLASS = NSObject; }, { @@ -79,6 +78,8 @@ LANGUAGE = ObjC; SUPERCLASS = NSDocumentController; }, + {CLASS = SKSplashContentView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, + {CLASS = SKSplashWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, { ACTIONS = {checkForUpdates = id; }; CLASS = SUUpdater; Modified: trunk/Dutch.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/English.lproj/MainMenu.nib/classes.nib =================================================================== --- trunk/English.lproj/MainMenu.nib/classes.nib 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/English.lproj/MainMenu.nib/classes.nib 2007-06-05 18:33:47 UTC (rev 2236) @@ -71,7 +71,6 @@ }; CLASS = SKApplicationController; LANGUAGE = ObjC; - OUTLETS = {updater = SUUpdater; }; SUPERCLASS = NSObject; }, { @@ -79,6 +78,8 @@ LANGUAGE = ObjC; SUPERCLASS = NSDocumentController; }, + {CLASS = SKSplashContentView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, + {CLASS = SKSplashWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, { ACTIONS = {checkForUpdates = id; }; CLASS = SUUpdater; Modified: trunk/English.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/MainMenu.nib/classes.nib =================================================================== --- trunk/Italian.lproj/MainMenu.nib/classes.nib 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/Italian.lproj/MainMenu.nib/classes.nib 2007-06-05 18:33:47 UTC (rev 2236) @@ -66,10 +66,10 @@ openBookmark = id; showPreferencePanel = id; showReleaseNotes = id; + visitWebSite = id; }; CLASS = SKApplicationController; LANGUAGE = ObjC; - OUTLETS = {updater = SUUpdater; }; SUPERCLASS = NSObject; }, { @@ -77,6 +77,8 @@ LANGUAGE = ObjC; SUPERCLASS = NSDocumentController; }, + {CLASS = SKSplashContentView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, + {CLASS = SKSplashWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, { ACTIONS = {checkForUpdates = id; }; CLASS = SUUpdater; Modified: trunk/Italian.lproj/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/SKApplicationController.h =================================================================== --- trunk/SKApplicationController.h 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/SKApplicationController.h 2007-06-05 18:33:47 UTC (rev 2236) @@ -41,7 +41,6 @@ @class SUUpdater; @interface SKApplicationController : NSObject { - IBOutlet SUUpdater *updater; BOOL remoteScrolling; } @@ -55,8 +54,6 @@ - (IBAction)editBookmarks:(id)sender; - (IBAction)openBookmark:(id)sender; -- (SUUpdater *)updater; - - (void)doSpotlightImportIfNeeded; - (NSString *)applicationSupportPathForDomain:(int)domain create:(BOOL)create; Modified: trunk/SKApplicationController.m =================================================================== --- trunk/SKApplicationController.m 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/SKApplicationController.m 2007-06-05 18:33:47 UTC (rev 2236) @@ -262,10 +262,6 @@ } } -- (SUUpdater *)updater { - return updater; -} - - (void)appleRemoteButton:(AppleRemoteEventIdentifier)buttonIdentifier pressedDown:(BOOL)pressedDown { NSArray *docs = [NSApp orderedDocuments]; id document = [docs count] ? [docs objectAtIndex:0] : nil; Modified: trunk/SKPreferenceController.m =================================================================== --- trunk/SKPreferenceController.m 2007-06-05 18:03:23 UTC (rev 2235) +++ trunk/SKPreferenceController.m 2007-06-05 18:33:47 UTC (rev 2236) @@ -161,7 +161,7 @@ - (IBAction)changeUpdateInterval:(id)sender { int checkInterval = [[sender selectedItem] tag]; if (checkInterval) - [[[NSApp delegate] updater] scheduleCheckWithInterval:checkInterval]; + [[SUUpdater sharedUpdater] scheduleCheckWithInterval:checkInterval]; } - (IBAction)changeTeXEditorPreset:(id)sender { @@ -196,7 +196,7 @@ if (tabID == nil || [keys containsObject:SUScheduledCheckIntervalKey]) { int checkInterval = [[NSUserDefaults standardUserDefaults] integerForKey:SUScheduledCheckIntervalKey]; if (checkInterval) - [[[NSApp delegate] updater] scheduleCheckWithInterval:checkInterval]; + [[SUUpdater sharedUpdater] scheduleCheckWithInterval:checkInterval]; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 18:03:25
|
Revision: 2235 http://skim-app.svn.sourceforge.net/skim-app/?rev=2235&view=rev Author: hofman Date: 2007-06-05 11:03:23 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Update release notes. Modified Paths: -------------- trunk/ReleaseNotes.rtf Modified: trunk/ReleaseNotes.rtf =================================================================== --- trunk/ReleaseNotes.rtf 2007-06-05 17:50:44 UTC (rev 2234) +++ trunk/ReleaseNotes.rtf 2007-06-05 18:03:23 UTC (rev 2235) @@ -1,6 +1,7 @@ {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-BoldOblique; -\f3\fnil\fcharset77 LucidaGrande;\f4\fnil\fcharset77 LucidaGrande-Bold;} +{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fnil\fcharset77 LucidaGrande;\f2\fnil\fcharset77 LucidaSans-Typewriter; +\f3\fswiss\fcharset77 Helvetica-Bold;\f4\fswiss\fcharset77 Helvetica-BoldOblique;\f5\fnil\fcharset77 LucidaGrande-Bold; +} {\colortbl;\red255\green255\blue255;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1} {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2} @@ -83,267 +84,307 @@ {\list\listtemplateid79\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid79} {\list\listtemplateid80\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid80} {\list\listtemplateid81\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid81} -{\list\listtemplateid82\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid82}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}} +{\list\listtemplateid82\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid82} +{\list\listtemplateid83\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid83} +{\list\listtemplateid84\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid84}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}{\listoverride\listid8\listoverridecount0\ls8}{\listoverride\listid9\listoverridecount0\ls9}{\listoverride\listid10\listoverridecount0\ls10}{\listoverride\listid11\listoverridecount0\ls11}{\listoverride\listid12\listoverridecount0\ls12}{\listoverride\listid13\listoverridecount0\ls13}{\listoverride\listid14\listoverridecount0\ls14}{\listoverride\listid15\listoverridecount0\ls15}{\listoverride\listid16\listoverridecount0\ls16}{\listoverride\listid17\listoverridecount0\ls17}{\listoverride\listid18\listoverridecount0\ls18}{\listoverride\listid19\listoverridecount0\ls19}{\listoverride\listid20\listoverridecount0\ls20}{\listoverride\listid21\listoverridecount0\ls21}{\listoverride\listid22\listoverridecount0\ls22}{\listoverride\listid23\listoverridecount0\ls23}{\listoverride\listid24\listoverridecount0\ls24}{\listoverride\listid25\listoverridecount0\ls25}{\listoverride\listid26\listoverridecount0\ls26}{\listoverride\listid27\listoverridecount0\ls27}{\listoverride\listid28\listoverridecount0\ls28}{\listoverride\listid29\listoverridecount0\ls29}{\listoverride\listid30\listoverridecount0\ls30}{\listoverride\listid31\listoverridecount0\ls31}{\listoverride\listid32\listoverridecount0\ls32}{\listoverride\listid33\listoverridecount0\ls33}{\listoverride\listid34\listoverridecount0\ls34}{\listoverride\listid35\listoverridecount0\ls35}{\listoverride\listid36\listoverridecount0\ls36}{\listoverride\listid37\listoverridecount0\ls37}{\listoverride\listid38\listoverridecount0\ls38}{\listoverride\listid39\listoverridecount0\ls39}{\listoverride\listid40\listoverridecount0\ls40}{\listoverride\listid41\listoverridecount0\ls41}{\listoverride\listid42\listoverridecount0\ls42}{\listoverride\listid43\listoverridecount0\ls43}{\listoverride\listid44\listoverridecount0\ls44}{\listoverride\listid45\listoverridecount0\ls45}{\listoverride\listid46\listoverridecount0\ls46}{\listoverride\listid47\listoverridecount0\ls47}{\listoverride\listid48\listoverridecount0\ls48}{\listoverride\listid49\listoverridecount0\ls49}{\listoverride\listid50\listoverridecount0\ls50}{\listoverride\listid51\listoverridecount0\ls51}{\listoverride\listid52\listoverridecount0\ls52}{\listoverride\listid53\listoverridecount0\ls53}{\listoverride\listid54\listoverridecount0\ls54}{\listoverride\listid55\listoverridecount0\ls55}{\listoverride\listid56\listoverridecount0\ls56}{\listoverride\listid57\listoverridecount0\ls57}{\listoverride\listid58\listoverridecount0\ls58}{\listoverride\listid59\listoverridecount0\ls59}{\listoverride\listid60\listoverridecount0\ls60}{\listoverride\listid61\listoverridecount0\ls61}{\listoverride\listid62\listoverridecount0\ls62}{\listoverride\listid63\listoverridecount0\ls63}{\listoverride\listid64\listoverridecount0\ls64}{\listoverride\listid65\listoverridecount0\ls65}{\listoverride\listid66\listoverridecount0\ls66}{\listoverride\listid67\listoverridecount0\ls67}{\listoverride\listid68\listoverridecount0\ls68}{\listoverride\listid69\listoverridecount0\ls69}{\listoverride\listid70\listoverridecount0\ls70}{\listoverride\listid71\listoverridecount0\ls71}{\listoverride\listid72\listoverridecount0\ls72}{\listoverride\listid73\listoverridecount0\ls73}{\listoverride\listid74\listoverridecount0\ls74}{\listoverride\listid75\listoverridecount0\ls75}{\listoverride\listid76\listoverridecount0\ls76}{\listoverride\listid77\listoverridecount0\ls77}{\listoverride\listid78\listoverridecount0\ls78}{\listoverride\listid79\listoverridecount0\ls79}{\listoverride\listid80\listoverridecount0\ls80}{\listoverride\listid81\listoverridecount0\ls81}{\listoverride\listid82\listoverridecount0\ls82}{\listoverride\listid83\listoverridecount0\ls83}{\listoverride\listid84\listoverridecount0\ls84}} \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\fs60 \cf0 Skim Release Notes\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f1\b\fs28 \cf0 \ +\f1\fs22 \cf0 \ +Last update: 5 June 2007 (rev +\f2\fs20 2234) +\f1\fs22 \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f3\b\fs28 \cf0 \ +Changes since 0.4.1\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\cf0 \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f4\i\fs26 \cf0 New Features\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\ls1\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }You can now hide all notes and highlights.\ +{\listtext \'a5 }Remember last exported type.\ +{\listtext \'a5 }Keyboard shortcut for Export.\ +{\listtext \'a5 }Use menu button on Remote Control to switch between scrolling and navigation/zoom.\ +{\listtext \'a5 }You can now change the sort order of the note table.\ +{\listtext \'a5 }You can now display only certain types of notes and highlights in the note table.\ +{\listtext \'a5 }AppleScript support for revert of a document.\ +{\listtext \'a5 }Allow dragging of the reading bar from the region outside a page in any tool mode.\ +{\listtext \'a5 }Greatly enhance file update checking. Use kqueue notifications instead of a timer and check for complete PDF files.\ +{\listtext \'a5 }Smart auto-cropping of all pages separately, but keeping the same size, for unevenly scanned papers. Accessible through Control-Command-K.\ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f3\b\fs28 \cf0 \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f4\i\fs26 \cf0 Bugs Fixed\ +\pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural +\ls2\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Use old-style check for network availability for the updater, as the newer API is not reliable for dial-up connections.\ +{\listtext \'a5 }Never add a new note on a click in note tool mode, because undoing such an addition can also remove a text edit in progress.\ +{\listtext \'a5 }Update the window title when the document is reloaded; the number of pages can change. \ +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f3\b\fs28 \cf0 \ Changes since 0.4\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\fs26 \cf0 Bugs Fixed\ +\f4\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls1\ilvl0 -\f3\i0\b0\fs22 \cf0 {\listtext \'a5 }Fixed installation of new versions by updater.\ +\ls3\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fixed installation of new versions by updater.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f1\b\fs28 \cf0 \ +\f3\b\fs28 \cf0 \ Changes since 0.3\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\f2\i\fs26 \cf0 \ +\f4\i\fs26 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls2\ilvl0 -\f3\i0\b0\fs22 \cf0 {\listtext \'a5 }Add a menu item in the Help menu to visit the web site.\ +\ls4\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add a menu item in the Help menu to visit the web site.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls3\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ +\ls5\ilvl0\cf0 {\listtext \'a5 }Add single-character shortcuts to change the note style in note mode (t, n, c, b, h, u, s, a).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls4\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ +\ls6\ilvl0\cf0 {\listtext \'a5 }Fix PDFSync support to work with file names containing spaces.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls5\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ +\ls7\ilvl0\cf0 {\listtext \'a5 }Add hidden default for activation of navigation buttons in presentation mode (SKActivatePresentationNavigationAtBottom).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls6\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ +\ls8\ilvl0\cf0 {\listtext \'a5 }Start search using the find panel at the current page when there is no selection.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls7\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ +\ls9\ilvl0\cf0 {\listtext \'a5 }Wrap selection using the find panel.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls8\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ +\ls10\ilvl0\cf0 {\listtext \'a5 }Add support for apple remote control. It can be disabled through the hidden default SKEnableAppleRemote.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls9\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKArrowNoteStartLineStyle, SKArrowNoteEndLineStyle).\ +\ls11\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for line ending style of arrows (SKArrowNoteStartLineStyle, SKArrowNoteEndLineStyle).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls10\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ +\ls12\ilvl0\cf0 {\listtext \'a5 }Hidden pref option for reading missing notes from separate .skim file (SKReadMissingNotesFromSkimFileOption). \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls11\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ +\ls13\ilvl0\cf0 {\listtext \'a5 }You can now open the corresponding PDF from a Skim Notes document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls12\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ +\ls14\ilvl0\cf0 {\listtext \'a5 }Skim can now read TIFF images from the clipboard.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls13\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ +\ls15\ilvl0\cf0 {\listtext \'a5 }New select tool. Allows you to copy PDF and TIFF images from a section of a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls14\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ +\ls16\ilvl0\cf0 {\listtext \'a5 }You can now search Skim note files from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls15\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ +\ls17\ilvl0\cf0 {\listtext \'a5 }New Crop menu items and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls16\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ +\ls18\ilvl0\cf0 {\listtext \'a5 }Cropping and page rotation are now undoable.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls17\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ +\ls19\ilvl0\cf0 {\listtext \'a5 }Allow reverting a document when it has changed on disk.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls18\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ +\ls20\ilvl0\cf0 {\listtext \'a5 }New menu item to set the selection from the content of the page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls19\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ +\ls21\ilvl0\cf0 {\listtext \'a5 }Hidden defaults for automatic crop box margins (SKAutoCropBoxMarginWidth, SKAutoCropBoxMarginHeight).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls20\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ +\ls22\ilvl0\cf0 {\listtext \'a5 }New Zoom To Selection menu item and toolbar button.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls21\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ +\ls23\ilvl0\cf0 {\listtext \'a5 }New preference option to open files fit to the PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls22\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ +\ls24\ilvl0\cf0 {\listtext \'a5 }You can now join markup highlights using shift-click, or by selecting a highlight before adding a new one.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls23\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ +\ls25\ilvl0\cf0 {\listtext \'a5 }You can now supply templates for text export of notes. See the wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\f1\b\fs28 \cf0 \ +\f3\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\fs26 \cf0 Bugs Fixed\ +\f4\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls24\ilvl0 -\f3\i0\b0\fs22 \cf0 {\listtext \'a5 }Fix links in help.\ +\ls26\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Fix links in help.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls25\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ +\ls27\ilvl0\cf0 {\listtext \'a5 }Don't create a new note in note tool mode on mousedown outside a page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls26\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ +\ls28\ilvl0\cf0 {\listtext \'a5 }Don't add new resizable notes in note tool mode when just clicking.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls27\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ +\ls29\ilvl0\cf0 {\listtext \'a5 }You can now access links that are "hidden" by transparent highlights and arrows.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls28\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ +\ls30\ilvl0\cf0 {\listtext \'a5 }Scroll reading bar to visible when it is shown.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls29\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ +\ls31\ilvl0\cf0 {\listtext \'a5 }Scroll to previous position on page when reloading PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls30\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ +\ls32\ilvl0\cf0 {\listtext \'a5 }Escape spaces in TeX editor command.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls31\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ +\ls33\ilvl0\cf0 {\listtext \'a5 }Thumbnails now use the current display box.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls32\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ +\ls34\ilvl0\cf0 {\listtext \'a5 }Retry automatic reloading of files changed on disk a few times.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls32\ilvl0 -\f1\b\fs28 \cf0 \ +\ls34\ilvl0 +\f3\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 Changes since 0.2\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\f2\i\fs26 \cf0 \ +\f4\i\fs26 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 New Features\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls33\ilvl0 -\f3\i0\b0\fs22 \cf0 {\listtext \'a5 }Add shortcuts for bigger/smaller font sizes.\ +\ls35\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }Add shortcuts for bigger/smaller font sizes.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls34\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ +\ls36\ilvl0\cf0 {\listtext \'a5 }Command-click a snapshot.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls35\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ +\ls37\ilvl0\cf0 {\listtext \'a5 }We now print notes and highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls36\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ +\ls38\ilvl0\cf0 {\listtext \'a5 }Add copy/cut/paste items to the contextual menu, when they apply.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls37\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ +\ls39\ilvl0\cf0 {\listtext \'a5 }You can now make a snapshot of a page by Command-clicking a thumbnail.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls38\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ +\ls40\ilvl0\cf0 {\listtext \'a5 }Added Dutch localization.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls39\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ +\ls41\ilvl0\cf0 {\listtext \'a5 }We now do not leave Full Screen when switching to another application.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls40\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ +\ls42\ilvl0\cf0 {\listtext \'a5 }Export notes as RTF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls41\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ +\ls43\ilvl0\cf0 {\listtext \'a5 }Add preference options for default note/highlight colors and text note font.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls42\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ +\ls44\ilvl0\cf0 {\listtext \'a5 }Add menu item to save the current PDF display settings to be used for new documents.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls43\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ +\ls45\ilvl0\cf0 {\listtext \'a5 }Search results from the Find Panel are now also highlighted with a red oval.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls44\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ +\ls46\ilvl0\cf0 {\listtext \'a5 }Select search field when opening the Contents pane in full screen mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls45\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ +\ls47\ilvl0\cf0 {\listtext \'a5 }You can now reset all preferences or all preferences in a pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls46\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ +\ls48\ilvl0\cf0 {\listtext \'a5 }Added Italian localization. (Thanks Andrea Bergia!)\ {\listtext \'a5 }Screensaver and sleep are now disabled in Presentation mode.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls47\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ +\ls49\ilvl0\cf0 {\listtext \'a5 }Skim can now return to the last page viewed in a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls48\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ +\ls50\ilvl0\cf0 {\listtext \'a5 }Link tool tips now show the top of the text when the link refers to the (empty) top of a page. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls49\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ +\ls51\ilvl0\cf0 {\listtext \'a5 }Skim can now also view separate Skim notes (.skim) files.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls50\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ +\ls52\ilvl0\cf0 {\listtext \'a5 }Using Sparkle for automatic updating. (Thanks Andy Matuschak!)\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls51\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ +\ls53\ilvl0\cf0 {\listtext \'a5 }Display the number of pages in the title bar.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls52\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ +\ls54\ilvl0\cf0 {\listtext \'a5 }Skim can now automatically backup a skim notes file whenever it saves a PDF file.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls53\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ +\ls55\ilvl0\cf0 {\listtext \'a5 }You can now resize the current note using the arrow keys, when you hold down the Control key.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls54\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ +\ls56\ilvl0\cf0 {\listtext \'a5 }Notes are now ordered according to page and location in page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls55\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ +\ls57\ilvl0\cf0 {\listtext \'a5 }Several improvements of Skim's custom tool-tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls56\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ +\ls58\ilvl0\cf0 {\listtext \'a5 }Add a menu item to select the search field.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls57\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ +\ls59\ilvl0\cf0 {\listtext \'a5 }You can now add arrows to a PDF document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls58\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ +\ls60\ilvl0\cf0 {\listtext \'a5 }You can now add notes from external .skim files rather than just overwriting them.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls59\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ +\ls61\ilvl0\cf0 {\listtext \'a5 }PDFSync support. See the Wiki for more information.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls60\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ +\ls62\ilvl0\cf0 {\listtext \'a5 }You can now set transparent colors from the color panel. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls61\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settigns for full screen mode. \ +\ls63\ilvl0\cf0 {\listtext \'a5 }You can now set separate PDF view settigns for full screen mode. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls62\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ +\ls64\ilvl0\cf0 {\listtext \'a5 }Add a Look Up in Dictionary item to the contextual menu.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls63\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ +\ls65\ilvl0\cf0 {\listtext \'a5 }You can now undo edits of notes and highlights.\ {\listtext \'a5 }Add a hidden preference (SKActivateFullScreenNavigationAtBottom) to show the navigation buttons in full screen mode only when moving the mouse at the bottom of the screen. \ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls64\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ +\ls66\ilvl0\cf0 {\listtext \'a5 }Add hidden preferences for the line widths of circles and boxes (SKCircleNoteLineWidth and SKSquareNoteLineWidth).\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls65\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ +\ls67\ilvl0\cf0 {\listtext \'a5 }New tool modes for ading notes or highlights.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\f1\b\fs28 \cf0 \ +\f3\b\fs28 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\fs26 \cf0 Bugs Fixed\ +\f4\i\fs26 \cf0 Bugs Fixed\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls66\ilvl0 -\f3\i0\b0\fs22 \cf0 {\listtext \'a5 }We now don't edit new text notes, so they can be moved, resized or deleted.\ +\ls68\ilvl0 +\f1\i0\b0\fs22 \cf0 {\listtext \'a5 }We now don't edit new text notes, so they can be moved, resized or deleted.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls67\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ +\ls69\ilvl0\cf0 {\listtext \'a5 }We now make sure new notes are added to a visible page.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls68\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ +\ls70\ilvl0\cf0 {\listtext \'a5 }Disable the TOC menu item when there is no TOC.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls69\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ +\ls71\ilvl0\cf0 {\listtext \'a5 }Return to the location that was viewed when reloading a document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls70\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ +\ls72\ilvl0\cf0 {\listtext \'a5 }Search text in a PDf file asynchronously, so it does not block Skim.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls71\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ +\ls73\ilvl0\cf0 {\listtext \'a5 }Fix crashes that can appear for links with missing URLs.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls72\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ +\ls74\ilvl0\cf0 {\listtext \'a5 }Add separators in the Notes menu for categories.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls73\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ +\ls75\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting a PDF-document.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls74\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ +\ls76\ilvl0\cf0 {\listtext \'a5 }Fix typos in the Help and update for new features.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls75\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ +\ls77\ilvl0\cf0 {\listtext \'a5 }Fix a crasher when reverting the document. Unfortunately this disabled tool tips.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls76\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ +\ls78\ilvl0\cf0 {\listtext \'a5 }Open the contents pane to display the search term when opening from Spotlight.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls77\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ +\ls79\ilvl0\cf0 {\listtext \'a5 }Save notes when auto-saving and exporting as PDF.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls78\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ +\ls80\ilvl0\cf0 {\listtext \'a5 }Remember the width of notes pane.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls79\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ +\ls81\ilvl0\cf0 {\listtext \'a5 }Fix leaks leading to excessive memory use.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls80\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ +\ls82\ilvl0\cf0 {\listtext \'a5 }Fix back-tabbing through notes and links.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls81\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ +\ls83\ilvl0\cf0 {\listtext \'a5 }Zooming using the scroll-wheel now only affects the current window.\ \pard\tx220\tx720\tx1440\tx2880\tx4320\tx5760\tx7200\li720\fi-720\ql\qnatural -\ls82\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ +\ls84\ilvl0\cf0 {\listtext \'a5 }Lazy updating of page thumbnails to avoid slowdown when opening a file.\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f1\b\fs28 \cf0 \ +\f3\b\fs28 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\b0\fs48 \cf0 Colofon -\f1\b\fs28 \ +\f3\b\fs28 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f3\b0\fs24 \cf0 Thanks for using Skim. \ +\f1\b0\fs24 \cf0 Thanks for using Skim. \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \fs22 \cf0 \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f1\b\fs28 \cf0 About Skim\ +\f3\b\fs28 \cf0 About Skim\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f3\b0\fs22 \cf0 \ +\f1\b0\fs22 \cf0 \ Skim is a PDF Reader and note-taker for OS X. Skim is designed to help you read and annotate scientific papers in PDF.\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\b\fs26 \cf0 Web Site\ +\f4\i\b\fs26 \cf0 Web Site\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f3\i0\b0\fs22 \cf0 \ +\f1\i0\b0\fs22 \cf0 \ The Skim website is at {\field{\*\fldinst{HYPERLINK "http://skim-app.sourceforge.net/"}}{\fldrslt http://skim-app.sourceforge.net}} - check there for current information and ways to find out more about the program and the development efforts.\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\b\fs26 \cf0 Getting Help\ +\f4\i\b\fs26 \cf0 Getting Help\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f3\i0\b0\fs22 \cf0 \ +\f1\i0\b0\fs22 \cf0 \ If you have a problem with using the program and you'd like to talk with other users about it, there is a mailing list set up for discussing using Skim. Information about it is available at {\field{\*\fldinst{HYPERLINK "http://lists.sourceforge.net/mailman/listinfo/skim-app-users"}}{\fldrslt http://lists.sourceforge.net/mailman/listinfo/skim-app-users}}.\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f2\i\b\fs26 \cf0 Reporting Bugs\ +\f4\i\b\fs26 \cf0 Reporting Bugs\ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\f3\i0\b0\fs22 \cf0 \ +\f1\i0\b0\fs22 \cf0 \ Bug reports should be submitted to the {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/tracker/?group_id=192583&atid=941981"}}{\fldrslt bug tracker}} on SourceForge. -\f4\b Note: -\f3\b0 If you can, please assign the bug report to someone - if you don't personally know any developers, assign the bug to Mike (username mmcc). If you don't assign the bug to someone, nobody may notice it for a long time. Assigning it to someone sends them an email notification.\ +\f5\b Note: +\f1\b0 If you can, please assign the bug report to someone - if you don't personally know any developers, assign the bug to Mike (username mmcc). If you don't assign the bug to someone, nobody may notice it for a long time. Assigning it to someone sends them an email notification.\ } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 17:50:48
|
Revision: 2234 http://skim-app.svn.sourceforge.net/skim-app/?rev=2234&view=rev Author: hofman Date: 2007-06-05 10:50:44 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Add credits for M Uli Kusterer (UKKqueue) Modified Paths: -------------- trunk/Dutch.lproj/Credits.rtf trunk/English.lproj/Credits.rtf trunk/Italian.lproj/Credits.rtf Modified: trunk/Dutch.lproj/Credits.rtf =================================================================== --- trunk/Dutch.lproj/Credits.rtf 2007-06-05 17:35:36 UTC (rev 2233) +++ trunk/Dutch.lproj/Credits.rtf 2007-06-05 17:50:44 UTC (rev 2234) @@ -26,6 +26,7 @@ \f1\b0 \ Andy Matuschak voor {\field{\*\fldinst{HYPERLINK "http://sparkle.andymatuschak.org"}}{\fldrslt Sparkle}}\ Martin Kahr voor {\field{\*\fldinst{HYPERLINK "http://www.martinkahr.com/source-code"}}{\fldrslt Apple Remote Controller}}\ +M. Uli Kusterer voor {\field{\*\fldinst{HYPERLINK "http://www.zathras.de"}}{\fldrslt UKKqueue}}\ \ \f0\b Garantieinformation\ Modified: trunk/English.lproj/Credits.rtf =================================================================== --- trunk/English.lproj/Credits.rtf 2007-06-05 17:35:36 UTC (rev 2233) +++ trunk/English.lproj/Credits.rtf 2007-06-05 17:50:44 UTC (rev 2234) @@ -2,7 +2,6 @@ {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 ArialMT; } {\colortbl;\red255\green255\blue255;} -\vieww10500\viewh9000\viewkind0 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc \f0\b\fs24 \cf0 Website @@ -27,6 +26,7 @@ \f1\b0 \ Andy Matuschak for {\field{\*\fldinst{HYPERLINK "http://sparkle.andymatuschak.org"}}{\fldrslt Sparkle}}\ Martin Kahr for {\field{\*\fldinst{HYPERLINK "http://www.martinkahr.com/source-code"}}{\fldrslt Apple Remote Controller}}\ +M. Uli Kusterer for {\field{\*\fldinst{HYPERLINK "http://www.zathras.de"}}{\fldrslt UKKqueue}}\ \ \f0\b Warranty Information\ Modified: trunk/Italian.lproj/Credits.rtf =================================================================== --- trunk/Italian.lproj/Credits.rtf 2007-06-05 17:35:36 UTC (rev 2233) +++ trunk/Italian.lproj/Credits.rtf 2007-06-05 17:50:44 UTC (rev 2234) @@ -26,6 +26,7 @@ \f1\b0 \ Andy Matuschak per {\field{\*\fldinst{HYPERLINK "http://sparkle.andymatuschak.org"}}{\fldrslt Sparkle}}\ Martin Kahr per {\field{\*\fldinst{HYPERLINK "http://www.martinkahr.com/source-code"}}{\fldrslt Apple Remote Controller}}\ +M. Uli Kusterer per {\field{\*\fldinst{HYPERLINK "http://www.zathras.de"}}{\fldrslt UKKqueue}}\ \ \f0\b Informazioni Garanzia\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ho...@us...> - 2007-06-05 17:35:38
|
Revision: 2233 http://skim-app.svn.sourceforge.net/skim-app/?rev=2233&view=rev Author: hofman Date: 2007-06-05 10:35:36 -0700 (Tue, 05 Jun 2007) Log Message: ----------- Fix offset of smart auto-crop. Modified Paths: -------------- trunk/SKMainWindowController.m Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-06-05 15:13:23 UTC (rev 2232) +++ trunk/SKMainWindowController.m 2007-06-05 17:35:36 UTC (rev 2233) @@ -1151,6 +1151,7 @@ } NSMutableArray *rectArray = [NSMutableArray array]; + PDFDocument *pdfDoc = [pdfView document]; int i, iMax = [[pdfView document] pageCount]; [progressBar setMaxValue:(double)iMax]; @@ -1160,7 +1161,7 @@ [NSApp beginSheet:progressSheet modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; for (i = 0; i < iMax; i++) { - [rectArray addObject:[NSValue valueWithRect:[[[pdfView document] pageAtIndex:i] foregroundBox]]]; + [rectArray addObject:[NSValue valueWithRect:[[pdfDoc pageAtIndex:i] foregroundBox]]]; [progressBar incrementBy:1.0]; [progressBar displayIfNeeded]; if (i && i % 10 == 0) @@ -1183,7 +1184,9 @@ } NSMutableArray *rectArray = [NSMutableArray array]; - int i, iMax = [[pdfView document] pageCount]; + PDFDocument *pdfDoc = [pdfView document]; + int i, iMax = [pdfDoc pageCount]; + NSSize size = NSZeroSize; [progressBar setMaxValue:1.1 * iMax]; [progressBar setDoubleValue:0.0]; @@ -1191,10 +1194,8 @@ [NSApp beginSheet:progressSheet modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; - NSSize size = NSZeroSize; - for (i = 0; i < iMax; i++) { - NSRect bbox = [[[pdfView document] pageAtIndex:i] foregroundBox]; + NSRect bbox = [[pdfDoc pageAtIndex:i] foregroundBox]; size.width = fmax(size.width, NSWidth(bbox)); size.height = fmax(size.height, NSHeight(bbox)); [progressBar incrementBy:1.0]; @@ -1204,8 +1205,9 @@ } [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; for (i = 0; i < iMax; i++) { - NSRect rect = [[[pdfView document] pageAtIndex:i] foregroundBox]; - NSRect bounds = [[[pdfView document] pageAtIndex:i] boundsForBox:kPDFDisplayBoxMediaBox]; + PDFPage *page = [pdfDoc pageAtIndex:i]; + NSRect rect = [page foregroundBox]; + NSRect bounds = [page boundsForBox:kPDFDisplayBoxMediaBox]; if (NSMinX(rect) - NSMinX(bounds) > NSMaxX(bounds) - NSMaxX(rect)) rect.origin.x = NSMaxX(rect) - size.width; rect.origin.y = NSMaxY(rect) - size.height; @@ -1214,7 +1216,7 @@ rect.origin.x = NSMaxX(bounds) - NSWidth(rect); if (NSMinX(rect) < NSMinX(bounds)) rect.origin.x = NSMinX(bounds); - if (NSMaxY(rect) > NSMaxX(bounds)) + if (NSMaxY(rect) > NSMaxY(bounds)) rect.origin.y = NSMaxY(bounds) - NSHeight(rect); if (NSMinY(rect) < NSMinY(bounds)) rect.origin.y = NSMinY(bounds); @@ -1222,9 +1224,11 @@ if (i && i % 10 == 0) { [progressBar incrementBy:1.0]; [progressBar displayIfNeeded]; + if (i && i % 100 == 0) + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; } } - + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; [self cropPagesToRects:rectArray]; [NSApp endSheet:progressSheet]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |