Revision: 12949 http://sourceforge.net/p/skim-app/code/12949 Author: hofman Date: 2022-06-25 18:28:09 +0000 (Sat, 25 Jun 2022) Log Message: ----------- Pass line index in initializer for reading bar
Modified Paths: -------------- trunk/SKPDFView.m trunk/SKReadingBar.h trunk/SKReadingBar.m Modified: trunk/SKPDFView.m =================================================================== --- trunk/SKPDFView.m 2022-06-25 18:12:38 UTC (rev 12948) +++ trunk/SKPDFView.m 2022-06-25 18:28:09 UTC (rev 12949) @@ -565,8 +565,7 @@ readingBarLine = 0; } if (page) { - SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page]; - [aReadingBar goToLine:readingBarLine onPage:page]; + SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page line:readingBarLine]; [self setReadingBar:aReadingBar]; [aReadingBar release]; } @@ -985,8 +984,7 @@ userInfo = [NSDictionary dictionaryWithObjectsAndKeys:page, SKPDFViewOldPageKey, nil]; } else { page = [self currentPage]; - SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page]; - [aReadingBar goToNextLine]; + SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page line:-1]; bounds = [aReadingBar currentBoundsForBox:[self displayBox]]; [self goToRect:NSInsetRect([aReadingBar currentBounds], 0.0, -20.0) onPage:page]; [self setReadingBar:aReadingBar]; @@ -2938,8 +2936,7 @@ NSRect oldRect = NSZeroRect; NSInteger line = [page indexOfLineRectAtPoint:point lower:YES]; if ([self hasReadingBar] == NO) { - SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page]; - [aReadingBar goToLine:line onPage:page]; + SKReadingBar *aReadingBar = [[SKReadingBar alloc] initWithPage:page line:line]; [self setReadingBar:aReadingBar]; [aReadingBar release]; if (invert) Modified: trunk/SKReadingBar.h =================================================================== --- trunk/SKReadingBar.h 2022-06-25 18:12:38 UTC (rev 12948) +++ trunk/SKReadingBar.h 2022-06-25 18:28:09 UTC (rev 12949) @@ -54,7 +54,7 @@ @property (nonatomic) NSInteger maxLine; @property (readonly) NSRect currentBounds; -- (id)initWithPage:(PDFPage *)aPage; +- (id)initWithPage:(PDFPage *)aPage line:(NSInteger)line; - (NSRect)currentBoundsForBox:(PDFDisplayBox)box; Modified: trunk/SKReadingBar.m =================================================================== --- trunk/SKReadingBar.m 2022-06-25 18:12:38 UTC (rev 12948) +++ trunk/SKReadingBar.m 2022-06-25 18:28:09 UTC (rev 12949) @@ -51,7 +51,7 @@ @synthesize currentLine, numberOfLines; @dynamic page, currentBounds, maxLine; -- (id)initWithPage:(PDFPage *)aPage { +- (id)initWithPage:(PDFPage *)aPage line:(NSInteger)line { self = [super init]; if (self) { numberOfLines = MAX(1, [[NSUserDefaults standardUserDefaults] integerForKey:SKReadingBarNumberOfLinesKey]); @@ -59,12 +59,23 @@ lineRects = [[page lineRects] retain]; currentLine = -1; currentBounds = NSZeroRect; + if ([lineRects count]) { + currentLine = MAX(0, MIN([self maxLine], line)); + NSRect rect = [lineRects rectAtIndex:currentLine]; + if (numberOfLines > 1) { + NSInteger i, endLine = MIN([lineRects count], currentLine + numberOfLines); + for (i = currentLine + 1; i < endLine; i++) + rect = NSUnionRect(rect, [lineRects rectAtIndex:i]); + } + } else { + [self goToNextPageAtTop:YES]; + } } return self; } - (id)init { - return [self initWithPage:nil]; + return [self initWithPage:nil line:-1]; } - (void)dealloc { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit