Revision: 3928
http://skim-app.svn.sourceforge.net/skim-app/?rev=3928&view=rev
Author: hofman
Date: 2008-05-28 09:37:00 -0700 (Wed, 28 May 2008)
Log Message:
-----------
Force horizontal scrollers when the scrollview has a placard, rather than
adding a simulated ivar.
Modified Paths:
--------------
trunk/BDSKZoomablePDFView.m
trunk/NSScrollView_SKExtensions.h
trunk/NSScrollView_SKExtensions.m
trunk/SKMainWindowController.m
trunk/SKSecondaryPDFView.m
Modified: trunk/BDSKZoomablePDFView.m
===================================================================
--- trunk/BDSKZoomablePDFView.m 2008-05-28 15:28:33 UTC (rev 3927)
+++ trunk/BDSKZoomablePDFView.m 2008-05-28 16:37:00 UTC (rev 3928)
@@ -101,7 +101,7 @@
if (scalePopUpButton == nil) {
NSScrollView *scrollView = [self scrollView];
- [scrollView setAlwaysHasHorizontalScroller:YES];
+ [scrollView setHasHorizontalScroller:YES];
// create it
scalePopUpButton = [[BDSKHeaderPopUpButton allocWithZone:[self zone]]
initWithFrame:NSMakeRect(0.0, 0.0, 1.0, 1.0) pullsDown:NO];
Modified: trunk/NSScrollView_SKExtensions.h
===================================================================
--- trunk/NSScrollView_SKExtensions.h 2008-05-28 15:28:33 UTC (rev 3927)
+++ trunk/NSScrollView_SKExtensions.h 2008-05-28 16:37:00 UTC (rev 3928)
@@ -44,10 +44,4 @@
- (NSArray *)placards;
- (void)setPlacards:(NSArray *)newPlacards;
-// new API allows ignoring PDFView's attempts to remove the horizontal scroller
-- (void)setAlwaysHasHorizontalScroller:(BOOL)flag;
-- (void)setNeverHasHorizontalScroller:(BOOL)flag;
-- (void)setAlwaysHasVerticalScroller:(BOOL)flag;
-- (void)setNeverHasVerticalScroller:(BOOL)flag;
-
@end
Modified: trunk/NSScrollView_SKExtensions.m
===================================================================
--- trunk/NSScrollView_SKExtensions.m 2008-05-28 15:28:33 UTC (rev 3927)
+++ trunk/NSScrollView_SKExtensions.m 2008-05-28 16:37:00 UTC (rev 3928)
@@ -44,110 +44,30 @@
@implementation NSScrollView (SKExtensions)
static IMP originalSetHasHorizontalScroller = NULL;
-static IMP originalSetHasVerticalScroller = NULL;
-static BOOL (*originalHasHorizontalScroller)(id, SEL) = NULL;
-static BOOL (*originalHasVerticalScroller)(id, SEL) = NULL;
+static IMP originalSetAutohidesScrollers = NULL;
static IMP originalDealloc = NULL;
static IMP originalTile = NULL;
-static CFMutableSetRef scrollViewsWithHorizontalScrollers = NULL;
-static CFMutableSetRef scrollViewsWithoutHorizontalScrollers = NULL;
-static CFMutableSetRef scrollViewsWithVerticalScrollers = NULL;
-static CFMutableSetRef scrollViewsWithoutVerticalScrollers = NULL;
static CFMutableDictionaryRef scrollViewPlacards = NULL;
- (void)replacementDealloc;
{
- CFSetRemoveValue(scrollViewsWithHorizontalScrollers, self);
- CFSetRemoveValue(scrollViewsWithoutHorizontalScrollers, self);
- CFSetRemoveValue(scrollViewsWithVerticalScrollers, self);
- CFSetRemoveValue(scrollViewsWithoutVerticalScrollers, self);
CFDictionaryRemoveValue(scrollViewPlacards, self);
originalDealloc(self, _cmd);
}
-- (void)setAlwaysHasHorizontalScroller:(BOOL)flag;
-{
- if (flag) {
- CFSetAddValue(scrollViewsWithHorizontalScrollers, self);
- [self setHasHorizontalScroller:YES];
- } else {
- CFSetRemoveValue(scrollViewsWithHorizontalScrollers, self);
- }
-}
-
-- (void)setNeverHasHorizontalScroller:(BOOL)flag;
-{
- if (flag) {
- CFSetAddValue(scrollViewsWithoutHorizontalScrollers, self);
- [self setHasHorizontalScroller:NO];
- } else {
- CFSetRemoveValue(scrollViewsWithoutHorizontalScrollers, self);
- }
-}
-
-- (void)setAlwaysHasVerticalScroller:(BOOL)flag;
-{
- if (flag) {
- CFSetAddValue(scrollViewsWithVerticalScrollers, self);
- [self setHasVerticalScroller:YES];
- } else {
- CFSetRemoveValue(scrollViewsWithVerticalScrollers, self);
- }
-}
-
-- (void)setNeverHasVerticalScroller:(BOOL)flag;
-{
- if (flag) {
- CFSetAddValue(scrollViewsWithoutVerticalScrollers, self);
- [self setHasVerticalScroller:NO];
- } else {
- CFSetRemoveValue(scrollViewsWithoutVerticalScrollers, self);
- }
-}
-
- (void)replacementSetHasHorizontalScroller:(BOOL)flag;
{
- if (CFSetContainsValue(scrollViewsWithHorizontalScrollers, self))
- flag = YES;
- else if (CFSetContainsValue(scrollViewsWithoutHorizontalScrollers, self))
- flag = NO;
- originalSetHasHorizontalScroller(self, _cmd, flag);
+ if ([[self placards] count] == 0)
+ originalSetHasHorizontalScroller(self, _cmd, flag);
}
-- (void)replacementSetHasVerticalScroller:(BOOL)flag;
+- (void)replacementSetAutohidesScrollers:(BOOL)flag;
{
- if (CFSetContainsValue(scrollViewsWithVerticalScrollers, self))
- flag = YES;
- else if (CFSetContainsValue(scrollViewsWithoutVerticalScrollers, self))
- flag = NO;
- originalSetHasVerticalScroller(self, _cmd, flag);
+ if ([[self placards] count] == 0)
+ originalSetAutohidesScrollers(self, _cmd, flag);
}
-- (BOOL)replacementHasHorizontalScroller;
-{
- BOOL flag;
- if (CFSetContainsValue(scrollViewsWithHorizontalScrollers, self))
- flag = YES;
- else if (CFSetContainsValue(scrollViewsWithoutHorizontalScrollers, self))
- flag = NO;
- else
- flag = originalHasHorizontalScroller(self, _cmd);
- return flag;
-}
-
-- (BOOL)replacementHasVerticalScroller;
-{
- BOOL flag;
- if (CFSetContainsValue(scrollViewsWithVerticalScrollers, self))
- flag = YES;
- else if (CFSetContainsValue(scrollViewsWithoutVerticalScrollers, self))
- flag = NO;
- else
- flag = originalHasVerticalScroller(self, _cmd);
- return flag;
-}
-
- (void)replacementTile {
originalTile(self, _cmd);
@@ -184,17 +104,11 @@
+ (void)load{
originalSetHasHorizontalScroller =
SKReplaceMethodImplementationWithSelector(self,
@selector(setHasHorizontalScroller:),
@selector(replacementSetHasHorizontalScroller:));
- originalSetHasVerticalScroller =
SKReplaceMethodImplementationWithSelector(self,
@selector(setHasVerticalScroller:),
@selector(replacementSetHasVerticalScroller:));
- originalHasHorizontalScroller =
(typeof(originalHasHorizontalScroller))SKReplaceMethodImplementationWithSelector(self,
@selector(hasHorizontalScroller), @selector(replacementHasHorizontalScroller));
- originalHasVerticalScroller =
(typeof(originalHasVerticalScroller))SKReplaceMethodImplementationWithSelector(self,
@selector(hasVerticalScroller), @selector(replacementHasVerticalScroller));
+ originalSetAutohidesScrollers =
SKReplaceMethodImplementationWithSelector(self,
@selector(setAutohidesScrollers:),
@selector(replacementSetAutohidesScrollers:));
originalDealloc = SKReplaceMethodImplementationWithSelector(self,
@selector(dealloc), @selector(replacementDealloc));
originalTile = SKReplaceMethodImplementationWithSelector(self,
@selector(tile), @selector(replacementTile));
- // set doesn't retain, so no retain cycles; pointer equality used to
compare views
- scrollViewsWithHorizontalScrollers =
CFSetCreateMutable(CFAllocatorGetDefault(), 0, NULL);
- scrollViewsWithoutHorizontalScrollers =
CFSetCreateMutable(CFAllocatorGetDefault(), 0, NULL);
- scrollViewsWithVerticalScrollers =
CFSetCreateMutable(CFAllocatorGetDefault(), 0, NULL);
- scrollViewsWithoutVerticalScrollers =
CFSetCreateMutable(CFAllocatorGetDefault(), 0, NULL);
+ // dictionary doesn't retain keys, so no retain cycles; pointer equality
used to compare views
scrollViewPlacards = CFDictionaryCreateMutable(CFAllocatorGetDefault(), 0,
NULL, &kCFTypeDictionaryValueCallBacks);
}
@@ -217,7 +131,10 @@
placards = nil;
}
- [self setAlwaysHasHorizontalScroller:[placards count] != 0];
+ if ([placards count] != 0) {
+ originalSetHasHorizontalScroller(self, _cmd, YES);
+ originalSetAutohidesScrollers(self, _cmd, NO);
+ }
[self tile];
}
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2008-05-28 15:28:33 UTC (rev 3927)
+++ trunk/SKMainWindowController.m 2008-05-28 16:37:00 UTC (rev 3928)
@@ -2505,9 +2505,9 @@
[pdfView setDisplayMode:kPDFDisplaySinglePage];
[pdfView setDisplayBox:kPDFDisplayBoxCropBox];
[pdfView setDisplaysPageBreaks:YES];
- [scrollView setNeverHasHorizontalScroller:YES];
- [scrollView setNeverHasVerticalScroller:YES];
[scrollView setAutohidesScrollers:YES];
+ [scrollView setHasHorizontalScroller:NO];
+ [scrollView setHasVerticalScroller:NO];
[pdfView setCurrentSelection:nil];
if ([pdfView hasReadingBar])
@@ -2531,9 +2531,7 @@
NSScrollView *scrollView = [[pdfView documentView] enclosingScrollView];
[self applyPDFSettings:savedNormalSetup];
- [scrollView setNeverHasHorizontalScroller:NO];
[scrollView setHasHorizontalScroller:[[savedNormalSetup
objectForKey:SKMainWindowHasHorizontalScrollerKey] boolValue]];
- [scrollView setNeverHasVerticalScroller:NO];
[scrollView setHasVerticalScroller:[[savedNormalSetup
objectForKey:SKMainWindowHasVerticalScrollerKey] boolValue]];
[scrollView setAutohidesScrollers:[[savedNormalSetup
objectForKey:SKMainWindowAutoHidesScrollersKey] boolValue]];
Modified: trunk/SKSecondaryPDFView.m
===================================================================
--- trunk/SKSecondaryPDFView.m 2008-05-28 15:28:33 UTC (rev 3927)
+++ trunk/SKSecondaryPDFView.m 2008-05-28 16:37:00 UTC (rev 3928)
@@ -156,7 +156,7 @@
return;
NSScrollView *scrollView = [self scrollView];
- [scrollView setAlwaysHasHorizontalScroller:YES];
+ [scrollView setHasHorizontalScroller:YES];
NSControlSize controlSize = [[scrollView horizontalScroller] controlSize];
if (scalePopUpButton == nil) {
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