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

Reply via email to