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

Reply via email to