Revision: 4901
          http://skim-app.svn.sourceforge.net/skim-app/?rev=4901&view=rev
Author:   hofman
Date:     2008-10-31 13:30:16 +0000 (Fri, 31 Oct 2008)

Log Message:
-----------
Use subclass of level indicator cell instead of method swizzling

Modified Paths:
--------------
    trunk/MainWindow.nib/classes.nib
    trunk/MainWindow.nib/info.nib
    trunk/MainWindow.nib/keyedobjects.nib
    trunk/SKFindTableView.m
    trunk/Skim.xcodeproj/project.pbxproj

Added Paths:
-----------
    trunk/SKLevelIndicatorCell.h
    trunk/SKLevelIndicatorCell.m

Modified: trunk/MainWindow.nib/classes.nib
===================================================================
--- trunk/MainWindow.nib/classes.nib    2008-10-30 23:21:13 UTC (rev 4900)
+++ trunk/MainWindow.nib/classes.nib    2008-10-31 13:30:16 UTC (rev 4901)
@@ -420,19 +420,19 @@
                </dict>
                <dict>
                        <key>CLASS</key>
-                       <string>NSWindowController</string>
+                       <string>NSMenu</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>
                        <key>SUPERCLASS</key>
-                       <string>NSResponder</string>
+                       <string>NSObject</string>
                </dict>
                <dict>
                        <key>CLASS</key>
-                       <string>NSMenu</string>
+                       <string>NSWindowController</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>
                        <key>SUPERCLASS</key>
-                       <string>NSObject</string>
+                       <string>NSResponder</string>
                </dict>
                <dict>
                        <key>ACTIONS</key>
@@ -505,14 +505,6 @@
                </dict>
                <dict>
                        <key>CLASS</key>
-                       <string>SKSegmentedControl</string>
-                       <key>LANGUAGE</key>
-                       <string>ObjC</string>
-                       <key>SUPERCLASS</key>
-                       <string>NSSegmentedControl</string>
-               </dict>
-               <dict>
-                       <key>CLASS</key>
                        <string>NSScrollView</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>
@@ -534,19 +526,19 @@
                </dict>
                <dict>
                        <key>CLASS</key>
-                       <string>NSImageCell</string>
+                       <string>SKSegmentedControl</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>
                        <key>SUPERCLASS</key>
-                       <string>NSCell</string>
+                       <string>NSSegmentedControl</string>
                </dict>
                <dict>
                        <key>CLASS</key>
-                       <string>NSSegmentedControl</string>
+                       <string>NSImageCell</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>
                        <key>SUPERCLASS</key>
-                       <string>NSControl</string>
+                       <string>NSCell</string>
                </dict>
                <dict>
                        <key>CLASS</key>
@@ -557,6 +549,14 @@
                        <string>NSImageCell</string>
                </dict>
                <dict>
+                       <key>CLASS</key>
+                       <string>NSSegmentedControl</string>
+                       <key>LANGUAGE</key>
+                       <string>ObjC</string>
+                       <key>SUPERCLASS</key>
+                       <string>NSControl</string>
+               </dict>
+               <dict>
                        <key>ACTIONS</key>
                        <dict>
                                <key>editBookmarks</key>
@@ -736,6 +736,14 @@
                </dict>
                <dict>
                        <key>CLASS</key>
+                       <string>SKLevelIndicatorCell</string>
+                       <key>LANGUAGE</key>
+                       <string>ObjC</string>
+                       <key>SUPERCLASS</key>
+                       <string>NSLevelIndicatorCell</string>
+               </dict>
+               <dict>
+                       <key>CLASS</key>
                        <string>NSResponder</string>
                        <key>LANGUAGE</key>
                        <string>ObjC</string>

Modified: trunk/MainWindow.nib/info.nib
===================================================================
--- trunk/MainWindow.nib/info.nib       2008-10-30 23:21:13 UTC (rev 4900)
+++ trunk/MainWindow.nib/info.nib       2008-10-31 13:30:16 UTC (rev 4901)
@@ -9,7 +9,9 @@
        <key>IBOldestOS</key>
        <integer>4</integer>
        <key>IBOpenObjects</key>
-       <array/>
+       <array>
+               <integer>800</integer>
+       </array>
        <key>IBSystem Version</key>
        <string>9F33</string>
        <key>targetFramework</key>

Modified: trunk/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/SKFindTableView.m
===================================================================
--- trunk/SKFindTableView.m     2008-10-30 23:21:13 UTC (rev 4900)
+++ trunk/SKFindTableView.m     2008-10-31 13:30:16 UTC (rev 4901)
@@ -38,7 +38,6 @@
 
 #import "SKFindTableView.h"
 #import "SKStringConstants.h"
-#import "SKRuntime.h"
 
 
 @implementation SKFindTableView
@@ -147,34 +146,3 @@
 }
 
 @end
-
-#pragma mark -
-
[EMAIL PROTECTED] NSLevelIndicatorCell (SKExtensions)
[EMAIL PROTECTED]
-
[EMAIL PROTECTED] NSLevelIndicatorCell (SKExtensions)
-
-static void (*originalDrawWithFrameInView)(id, SEL, NSRect, id) = NULL;
-
-// Drawing does not restrict the clip, while in discrete style it heavily uses 
gaussian blur, leading to unacceptable slow drawing
-// see <http://toxicsoftware.com/discrete-nslevelindicatorcell-too-slow/>
-- (void)replacementDrawWithFrame:(NSRect)cellFrame inView:(NSView 
*)controlView {
-    BOOL drawDiscreteContinuous = ([self levelIndicatorStyle] == 
NSDiscreteCapacityLevelIndicatorStyle) && ((NSWidth(cellFrame) + 1.0) / [self 
maxValue] < 3.0);
-    if (drawDiscreteContinuous)
-        [self setLevelIndicatorStyle:NSContinuousCapacityLevelIndicatorStyle];
-    [NSGraphicsContext saveGraphicsState];
-    [[NSBezierPath bezierPathWithRect:cellFrame] addClip];
-    originalDrawWithFrameInView(self, _cmd, cellFrame, controlView);
-    [NSGraphicsContext restoreGraphicsState];
-    if (drawDiscreteContinuous)
-        [self setLevelIndicatorStyle:NSDiscreteCapacityLevelIndicatorStyle];
-}
-
-+ (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalDrawWithFrameInView = (void (*)(id, SEL, NSRect, 
id))SKReplaceInstanceMethodImplementationFromSelector(self, 
@selector(drawWithFrame:inView:), @selector(replacementDrawWithFrame:inView:));
-    [pool release];
-}
-
[EMAIL PROTECTED]

Added: trunk/SKLevelIndicatorCell.h
===================================================================
--- trunk/SKLevelIndicatorCell.h                                (rev 0)
+++ trunk/SKLevelIndicatorCell.h        2008-10-31 13:30:16 UTC (rev 4901)
@@ -0,0 +1,43 @@
+//
+//  SKLevelIndicatorCell.h
+//  Skim
+//
+//  Created by Christiaan Hofman on 10/31/08.
+/*
+ This software is Copyright (c) 2007-2008
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+
[EMAIL PROTECTED] SKLevelIndicatorCell : NSLevelIndicatorCell
[EMAIL PROTECTED]

Added: trunk/SKLevelIndicatorCell.m
===================================================================
--- trunk/SKLevelIndicatorCell.m                                (rev 0)
+++ trunk/SKLevelIndicatorCell.m        2008-10-31 13:30:16 UTC (rev 4901)
@@ -0,0 +1,56 @@
+//
+//  SKLevelIndicatorCell.m
+//  Skim
+//
+//  Created by Christiaan Hofman on 10/31/08.
+/*
+ This software is Copyright (c) 2007-2008
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SKLevelIndicatorCell.h"
+
+
[EMAIL PROTECTED] SKLevelIndicatorCell
+
+- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
+    BOOL drawDiscreteContinuous = ([self levelIndicatorStyle] == 
NSDiscreteCapacityLevelIndicatorStyle) && ((NSWidth(cellFrame) + 1.0) / [self 
maxValue] < 3.0);
+    if (drawDiscreteContinuous)
+        [self setLevelIndicatorStyle:NSContinuousCapacityLevelIndicatorStyle];
+    [NSGraphicsContext saveGraphicsState];
+    [[NSBezierPath bezierPathWithRect:cellFrame] addClip];
+    [super drawWithFrame:cellFrame inView:controlView];
+    [NSGraphicsContext restoreGraphicsState];
+    if (drawDiscreteContinuous)
+        [self setLevelIndicatorStyle:NSDiscreteCapacityLevelIndicatorStyle];
+}
+
[EMAIL PROTECTED]

Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj        2008-10-30 23:21:13 UTC (rev 
4900)
+++ trunk/Skim.xcodeproj/project.pbxproj        2008-10-31 13:30:16 UTC (rev 
4901)
@@ -214,6 +214,7 @@
                CECDDBAE0C5BB9600026AAEC /* SKFindTableView.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m 
*/; };
                CECF61FF0DB258D600587D96 /* SKFontWell.m in Sources */ = {isa = 
PBXBuildFile; fileRef = CECF61FE0DB258D600587D96 /* SKFontWell.m */; };
                CED6A3120EADF37800E8CD11 /* NSImageCell_SKExtensions.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CED6A3110EADF37800E8CD11 /* 
NSImageCell_SKExtensions.m */; };
+               CEE0F5EB0EBB3DEC000A7A8C /* SKLevelIndicatorCell.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CEE0F5EA0EBB3DEC000A7A8C /* 
SKLevelIndicatorCell.m */; };
                CEE106150BCBB72C00BF2D3E /* SKNotesDocument.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m 
*/; };
                CEE176E40DBD5B0C00E6C317 /* PDFDisplayView_SKExtensions.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CEE176E30DBD5B0C00E6C317 /* 
PDFDisplayView_SKExtensions.m */; };
                CEE177960DBE140900E6C317 /* SKAccessibilityFauxUIElement.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CEE177950DBE140900E6C317 /* 
SKAccessibilityFauxUIElement.m */; };
@@ -877,6 +878,8 @@
                CED8D40B0D744D940028E3E2 /* Skim-Common.xcconfig */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = 
"Skim-Common.xcconfig"; sourceTree = "<group>"; };
                CED8D40C0D744D940028E3E2 /* Skim-Debug.xcconfig */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = 
"Skim-Debug.xcconfig"; sourceTree = "<group>"; };
                CED8D40D0D744D940028E3E2 /* Skim-Release.xcconfig */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = 
"Skim-Release.xcconfig"; sourceTree = "<group>"; };
+               CEE0F5E90EBB3DEC000A7A8C /* SKLevelIndicatorCell.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SKLevelIndicatorCell.h; sourceTree = "<group>"; };
+               CEE0F5EA0EBB3DEC000A7A8C /* SKLevelIndicatorCell.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKLevelIndicatorCell.m; sourceTree = "<group>"; };
                CEE106130BCBB72C00BF2D3E /* SKNotesDocument.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SKNotesDocument.h; sourceTree = "<group>"; };
                CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKNotesDocument.m; sourceTree = "<group>"; };
                CEE176E20DBD5B0C00E6C317 /* PDFDisplayView_SKExtensions.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = PDFDisplayView_SKExtensions.h; sourceTree = "<group>"; };
@@ -1270,6 +1273,8 @@
                                CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m 
*/,
                                CECF61FD0DB258D600587D96 /* SKFontWell.h */,
                                CECF61FE0DB258D600587D96 /* SKFontWell.m */,
+                               CEE0F5E90EBB3DEC000A7A8C /* 
SKLevelIndicatorCell.h */,
+                               CEE0F5EA0EBB3DEC000A7A8C /* 
SKLevelIndicatorCell.m */,
                                CE4BC12D0C357A0300C2AF03 /* SKLineWell.h */,
                                CE4BC12E0C357A0300C2AF03 /* SKLineWell.m */,
                                CEA575CC0B9206E60003D2E7 /* SKNoteOutlineView.h 
*/,
@@ -2126,6 +2131,7 @@
                                CE7611650EA49D1400301E45 /* SKPrintableView.m 
in Sources */,
                                CE51630B0EAB5A1A009FA237 /* 
SKSegmentedControl.m in Sources */,
                                CED6A3120EADF37800E8CD11 /* 
NSImageCell_SKExtensions.m in Sources */,
+                               CEE0F5EB0EBB3DEC000A7A8C /* 
SKLevelIndicatorCell.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };


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