Revision: 3894
http://skim-app.svn.sourceforge.net/skim-app/?rev=3894&view=rev
Author: hofman
Date: 2008-05-18 10:35:31 -0700 (Sun, 18 May 2008)
Log Message:
-----------
Avoid a loop in updating shadowed ivars for KVO.
Modified Paths:
--------------
trunk/SKMainWindowController.m
trunk/SKMainWindowController_UI.m
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2008-05-18 16:29:55 UTC (rev 3893)
+++ trunk/SKMainWindowController.m 2008-05-18 17:35:31 UTC (rev 3894)
@@ -107,6 +107,9 @@
static NSString *SKMainWindowRelevanceColumnIdentifer = @"relevance";
static NSString *SKMainWindowResultsColumnIdentifer = @"results";
+static NSString *SKMainWindowPageNumberKey = @"pageNumber";
+static NSString *SKMainWindowPageLabelKey = @"pageLabel";
+
static NSString *SKMainWindowFrameKey = @"windowFrame";
static NSString *SKMainWindowLeftSidePaneWidthKey = @"leftSidePaneWidth";
static NSString *SKMainWindowRightSidePaneWidthKey = @"rightSidePaneWidth";
@@ -205,6 +208,13 @@
}
}
++ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key {
+ if ([key isEqualToString:SKMainWindowPageNumberKey] || [key
isEqualToString:SKMainWindowPageLabelKey])
+ return NO;
+ else
+ return [super automaticallyNotifiesObserversForKey:key];
+}
+
- (id)initWithWindowNibName:(NSString *)windowNibName owner:(id)owner{
self = [super initWithWindowNibName:windowNibName owner:owner];
if(self){
@@ -880,6 +890,15 @@
return pdfView;
}
+- (void)updatePageNumber {
+ unsigned int number = [[pdfView currentPage] pageIndex] + 1;
+ if (pageNumber != number) {
+ [self willChangeValueForKey:SKMainWindowPageNumberKey];
+ pageNumber = number;
+ [self didChangeValueForKey:SKMainWindowPageNumberKey];
+ }
+}
+
- (unsigned int)pageNumber {
return pageNumber;
}
@@ -889,10 +908,17 @@
unsigned int pageCount = [[pdfView document] pageCount];
if (number > pageCount)
number = pageCount;
- if (number > 0) {
- pageNumber = number;
- if ([[pdfView currentPage] pageIndex] != pageNumber - 1)
- [self goToPage:[[pdfView document] pageAtIndex:pageNumber - 1]];
+ if (number > 0 && [[pdfView currentPage] pageIndex] != pageNumber - 1)
+ [self goToPage:[[pdfView document] pageAtIndex:pageNumber - 1]];
+}
+
+- (void)updatePageLabel {
+ NSString *label = [[pdfView currentPage] label];
+ if (label != pageLabel) {
+ [self willChangeValueForKey:SKMainWindowPageLabelKey];
+ [pageLabel release];
+ pageLabel = [label retain];
+ [self didChangeValueForKey:SKMainWindowPageLabelKey];
}
}
@@ -901,10 +927,6 @@
}
- (void)setPageLabel:(NSString *)label {
- if (label != pageLabel) {
- [pageLabel release];
- pageLabel = [label retain];
- }
unsigned int idx = [pageLabels indexOfObject:label];
if (idx != NSNotFound && [[[pdfView currentPage] label] isEqual:label] ==
NO)
[self goToPage:[[pdfView document] pageAtIndex:idx]];
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2008-05-18 16:29:55 UTC (rev 3893)
+++ trunk/SKMainWindowController_UI.m 2008-05-18 17:35:31 UTC (rev 3894)
@@ -75,6 +75,9 @@
- (void)updateLeftStatus;
- (void)updateRightStatus;
+- (void)updatePageNumber;
+- (void)updatePageLabel;
+
- (void)updateNoteFilterPredicate;
- (void)updateFindResultHighlights:(BOOL)scroll;
@@ -1247,8 +1250,8 @@
[thumbnailTableView setNeedsDisplay:YES];
[outlineView setNeedsDisplay:YES];
- [self setPageLabel:[page label]];
- [self setPageNumber:[page pageIndex] + 1];
+ [self updatePageNumber];
+ [self updatePageLabel];
[previousNextPageButton setEnabled:[pdfView canGoToPreviousPage]
forSegment:0];
[previousNextPageButton setEnabled:[pdfView canGoToNextPage] forSegment:1];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit