Revision: 7441
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7441&view=rev
Author:   hofman
Date:     2011-08-23 11:31:49 +0000 (Tue, 23 Aug 2011)

Log Message:
-----------
Prevent Lion from changing the scroller style when there's a placard view

Modified Paths:
--------------
    trunk/NSScrollView_SKExtensions.m

Modified: trunk/NSScrollView_SKExtensions.m
===================================================================
--- trunk/NSScrollView_SKExtensions.m   2011-08-22 14:33:15 UTC (rev 7440)
+++ trunk/NSScrollView_SKExtensions.m   2011-08-23 11:31:49 UTC (rev 7441)
@@ -65,6 +65,7 @@
 
 static void (*original_setHasHorizontalScroller)(id, SEL, BOOL) = NULL;
 static void (*original_setAutohidesScrollers)(id, SEL, BOOL) = NULL;
+static void (*original_setScrollerStyle)(id, SEL, BOOL) = NULL;
 static void (*original_dealloc)(id, SEL) = NULL;
 static void (*original_tile)(id, SEL) = NULL;
 
@@ -88,6 +89,12 @@
         original_setAutohidesScrollers(self, _cmd, flag);
 }
 
+- (void)replacement_setScrollerStyle:(NSScrollerStyle)newScrollerStyle;
+{
+    if ([scrollViewPlacardViews objectForKey:self] == nil)
+        original_setScrollerStyle(self, _cmd, flag);
+}
+
 - (void)replacement_tile {
     original_tile(self, _cmd);
     
@@ -107,6 +114,7 @@
 + (void)load {
     original_setHasHorizontalScroller = (void (*)(id, SEL, 
BOOL))SKReplaceInstanceMethodImplementationFromSelector(self, 
@selector(setHasHorizontalScroller:), 
@selector(replacement_setHasHorizontalScroller:));
     original_setAutohidesScrollers = (void (*)(id, SEL, 
BOOL))SKReplaceInstanceMethodImplementationFromSelector(self, 
@selector(setAutohidesScrollers:), 
@selector(replacement_setAutohidesScrollers:));
+    original_setScrollerStyle = (void (*)(id, SEL, 
BOOL))SKReplaceInstanceMethodImplementationFromSelector(self, 
@selector(setAutohidesScrollers:), @selector(replacement_setScrollerStyle:));
     original_dealloc = (void (*)(id, 
SEL))SKReplaceInstanceMethodImplementationFromSelector(self, 
@selector(dealloc), @selector(replacement_dealloc));
     original_tile = (void (*)(id, 
SEL))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(tile), 
@selector(replacement_tile));
     
@@ -133,12 +141,12 @@
     if ([newPlacards count] != 0) {
         original_setHasHorizontalScroller(self, 
@selector(setHasHorizontalScroller:), YES);
         original_setAutohidesScrollers(self, 
@selector(setAutohidesScrollers:), NO);
-        if ([NSScroller 
instancesRespondToSelector:@selector(setScrollerStyle:)])
-            [[self horizontalScroller] 
setScrollerStyle:NSScrollerStyleOverlay];
+        if (original_setScrollerStyle != NULL)
+            original_setScrollerStyle(NSScrollerStyleOverlay);
     } else if (placardView) {
         [scrollViewPlacardViews removeObjectForKey:self];
-        if ([NSScroller 
instancesRespondToSelector:@selector(setScrollerStyle:)] && [NSScroller 
respondsToSelector:@selector(preferredScrollerStyle)])
-            [[self horizontalScroller] setScrollerStyle:[NSScroller 
preferredScrollerStyle]];
+        if (original_setScrollerStyle != NULL && [NSScroller 
respondsToSelector:@selector(preferredScrollerStyle)])
+            original_setScrollerStyle([NSScroller preferredScrollerStyle]);
     }
     [placardView release];
     


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to