Revision: 4885
          http://skim-app.svn.sourceforge.net/skim-app/?rev=4885&view=rev
Author:   hofman
Date:     2008-10-28 10:17:13 +0000 (Tue, 28 Oct 2008)

Log Message:
-----------
Allow switching back to autoscale/zoomin.zoomout from contextual menu when 
synchronizing in secondary pdfview

Modified Paths:
--------------
    trunk/SKSecondaryPDFView.h
    trunk/SKSecondaryPDFView.m

Modified: trunk/SKSecondaryPDFView.h
===================================================================
--- trunk/SKSecondaryPDFView.h  2008-10-27 22:55:27 UTC (rev 4884)
+++ trunk/SKSecondaryPDFView.h  2008-10-28 10:17:13 UTC (rev 4885)
@@ -45,6 +45,7 @@
     NSPopUpButton *pagePopUpButton;
     PDFView *synchronizedPDFView;
     BOOL synchronizeZoom;
+    BOOL switching;
 }
 
 - (PDFView *)synchronizedPDFView;

Modified: trunk/SKSecondaryPDFView.m
===================================================================
--- trunk/SKSecondaryPDFView.m  2008-10-27 22:55:27 UTC (rev 4884)
+++ trunk/SKSecondaryPDFView.m  2008-10-28 10:17:13 UTC (rev 4885)
@@ -309,41 +309,48 @@
     if (synchronizeZoom != newSync) {
         synchronizeZoom = newSync;
         if (newSync) {
-            [super setAutoScales:NO];
+            switching = YES;
+            if ([self autoScales])
+                [super setAutoScales:NO];
+            [super setScaleFactor:synchronizedPDFView ? [synchronizedPDFView 
scaleFactor] : 1.0];
+            switching = NO;
             [self startObservingSynchronizedPDFView];
-            [super setScaleFactor:synchronizedPDFView ? [synchronizedPDFView 
scaleFactor] : 1.0];
             if (flag)
                 [scalePopUpButton selectItemAtIndex:0];
         } else {
             [self stopObservingSynchronizedPDFView];
-            [self setScaleFactor:[self scaleFactor]];
+            [self setScaleFactor:[self scaleFactor] adjustPopup:flag];
         }
     }
 }
 
 - (void)setAutoScales:(BOOL)newAuto {
-    if ([self synchronizeZoom])
+    if (switching)
         [super setAutoScales:newAuto];
     else
         [self setAutoScales:newAuto adjustPopup:YES];
 }
 
 - (void)setAutoScales:(BOOL)newAuto adjustPopup:(BOOL)flag {
-    [self setSynchronizeZoom:NO adjustPopup:NO];
+    if ([self synchronizeZoom])
+        [self setSynchronizeZoom:NO adjustPopup:NO];
     [super setAutoScales:newAuto];
     if (newAuto && flag)
         [scalePopUpButton selectItemAtIndex:1];
 }
 
 - (void)setScaleFactor:(float)newScaleFactor {
-    if ([self synchronizeZoom])
+    if ([self synchronizeZoom] || switching)
         [super setScaleFactor:newScaleFactor];
     else
         [self setScaleFactor:newScaleFactor adjustPopup:YES];
 }
 
 - (void)setScaleFactor:(float)newScaleFactor adjustPopup:(BOOL)flag {
-       if (flag) {
+    if ([self synchronizeZoom])
+        [self setSynchronizeZoom:NO adjustPopup:NO];
+       
+    if (flag) {
                if (newScaleFactor < 0.01) {
             newScaleFactor = 0.0;
         } else {
@@ -356,19 +363,17 @@
         }
     }
     
-    [self setSynchronizeZoom:NO adjustPopup:NO];
     if (newScaleFactor < 0.01) {
-        [self setAutoScales:YES];
+        if ([self autoScales] == NO)
+            [self setAutoScales:YES];
     } else {
-        [self setAutoScales:NO adjustPopup:NO];
+        if ([self autoScales])
+            [self setAutoScales:NO adjustPopup:NO];
         [super setScaleFactor:newScaleFactor];
     }
 }
 
 - (IBAction)zoomIn:(id)sender{
-    if ([self synchronizeZoom])
-        return;
-    
     int cnt = 2, numberOfDefaultItems = (sizeof(SKDefaultScaleMenuFactors) / 
sizeof(float));
     float scaleFactor = [self scaleFactor];
     
@@ -376,13 +381,10 @@
     while (cnt < numberOfDefaultItems && scaleFactor * .99 > 
SKDefaultScaleMenuFactors[cnt]) cnt++;
     cnt++;
     while (cnt >= numberOfDefaultItems) cnt--;
-    [self setScaleFactor:SKDefaultScaleMenuFactors[cnt]];
+    [self setScaleFactor:SKDefaultScaleMenuFactors[cnt] adjustPopup:YES];
 }
 
 - (IBAction)zoomOut:(id)sender{
-    if ([self synchronizeZoom])
-        return;
-    
     int cnt = 2, numberOfDefaultItems = (sizeof(SKDefaultScaleMenuFactors) / 
sizeof(float));
     float scaleFactor = [self scaleFactor];
     
@@ -390,11 +392,11 @@
     while (cnt < numberOfDefaultItems && scaleFactor * .99 > 
SKDefaultScaleMenuFactors[cnt]) cnt++;
     cnt--;
     while (cnt < 2) cnt++;
-    [self setScaleFactor:SKDefaultScaleMenuFactors[cnt]];
+    [self setScaleFactor:SKDefaultScaleMenuFactors[cnt] adjustPopup:YES];
 }
 
 - (BOOL)canZoomIn{
-    if ([super canZoomIn] == NO || [self synchronizeZoom])
+    if ([super canZoomIn] == NO)
         return NO;
     
     unsigned cnt = 2, numberOfDefaultItems = 
(sizeof(SKDefaultScaleMenuFactors) / sizeof(float));
@@ -406,7 +408,7 @@
 }
 
 - (BOOL)canZoomOut{
-    if ([super canZoomOut] == NO || [self synchronizeZoom])
+    if ([super canZoomOut] == NO)
         return NO;
     
     unsigned cnt = 2, numberOfDefaultItems = 
(sizeof(SKDefaultScaleMenuFactors) / sizeof(float));
@@ -435,13 +437,11 @@
 }
 
 - (NSMenu *)menuForEvent:(NSEvent *)theEvent {
+    static NSSet *selectionActions = nil;
+    if (selectionActions == nil)
+        selectionActions = [[NSSet alloc] 
initWithObjects:@"_searchInSpotlight:", @"_searchInGoogle:", 
@"_searchInDictionary:", nil];
     NSMenu *menu = [super menuForEvent:theEvent];
     NSMenuItem *item;
-    NSSet *selectionActions = nil;
-    if ([self synchronizeZoom])
-        selectionActions = [NSSet setWithObjects:@"_searchInSpotlight:", 
@"_searchInGoogle:", @"_searchInDictionary:", @"_setActualSize:", 
@"_setAutoSize:", @"zoomIn:", @"zoomOut:", nil];
-    else
-        selectionActions = [NSSet setWithObjects:@"_searchInSpotlight:", 
@"_searchInGoogle:", @"_searchInDictionary:", nil];
     
     [self setCurrentSelection:nil];
     while ([menu numberOfItems]) {
@@ -452,9 +452,9 @@
             break;
     }
     
-    int i = [menu indexOfItemWithTarget:self 
andAction:NSSelectorFromString(@"_toggleContinuous:")];
+    int i = [menu indexOfItemWithTarget:self 
andAction:NSSelectorFromString(@"_setDoublePageScrolling:")];
     if (i == -1)
-        i = [menu indexOfItemWithTarget:self 
andAction:NSSelectorFromString(@"_setDoublePageScrolling:")];
+        i = [menu indexOfItemWithTarget:self 
andAction:NSSelectorFromString(@"_toggleContinuous:")];
     if (i != -1) {
         PDFDisplayMode displayMode = [self displayMode];
         [menu insertItem:[NSMenuItem separatorItem] atIndex:++i];


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 the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to