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