Revision: 4363
          http://skim-app.svn.sourceforge.net/skim-app/?rev=4363&view=rev
Author:   hofman
Date:     2008-08-06 22:03:42 +0000 (Wed, 06 Aug 2008)

Log Message:
-----------
Avoid the use of obj-c in +load methods, as it can trigger +initialize too 
early. Add an extra options argument to method replacement functions for 
setting or replacing only. 

Modified Paths:
--------------
    trunk/NSCell_SKExtensions.m
    trunk/NSCharacterSet_SKExtensions.m
    trunk/NSScrollView_SKExtensions.m
    trunk/NSURL_SKExtensions.m
    trunk/PDFAnnotationLink_SKExtensions.m
    trunk/PDFAnnotationMarkup_SKExtensions.m
    trunk/PDFDisplayView_SKExtensions.m
    trunk/PDFDocument_SKExtensions.m
    trunk/PDFPage_SKExtensions.m
    trunk/SKFindTableView.m
    trunk/SKRuntime.h
    trunk/SKRuntime.m
    trunk/SKThumbnailTableView.m
    trunk/SKTypeSelectHelper.m

Modified: trunk/NSCell_SKExtensions.m
===================================================================
--- trunk/NSCell_SKExtensions.m 2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/NSCell_SKExtensions.m 2008-08-06 22:03:42 UTC (rev 4363)
@@ -54,9 +54,7 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalHighlightColorWithFrameInView = (id (*)(id, SEL, NSRect, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(highlightColorWithFrame:inView:), 
@selector(replacementHighlightColorWithFrame:inView:), YES);
-    [pool release];
+    originalHighlightColorWithFrameInView = (id (*)(id, SEL, NSRect, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(highlightColorWithFrame:inView:), 
@selector(replacementHighlightColorWithFrame:inView:), YES, SKReplaceOnly);
 }
 
 @end

Modified: trunk/NSCharacterSet_SKExtensions.m
===================================================================
--- trunk/NSCharacterSet_SKExtensions.m 2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/NSCharacterSet_SKExtensions.m 2008-08-06 22:03:42 UTC (rev 4363)
@@ -69,10 +69,7 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    if ([self respondsToSelector:@selector(newlineCharacterSet)] == NO)
-        SKReplaceMethodImplementationFromSelector(self, 
@selector(newlineCharacterSet), @selector(replacementNewlineCharacterSet), NO);
-    [pool release];
+    SKReplaceMethodImplementationFromSelector(self, 
@selector(newlineCharacterSet), @selector(replacementNewlineCharacterSet), NO, 
SKSetOnly);
 }
 
 @end

Modified: trunk/NSScrollView_SKExtensions.m
===================================================================
--- trunk/NSScrollView_SKExtensions.m   2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/NSScrollView_SKExtensions.m   2008-08-06 22:03:42 UTC (rev 4363)
@@ -103,15 +103,13 @@
 }
 
 + (void)load{
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalSetHasHorizontalScroller = (void (*)(id, SEL, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(setHasHorizontalScroller:), 
@selector(replacementSetHasHorizontalScroller:), YES);
-    originalSetAutohidesScrollers = (void (*)(id, SEL, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(setAutohidesScrollers:), 
@selector(replacementSetAutohidesScrollers:), YES);
-    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES);
-    originalTile = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(tile), 
@selector(replacementTile), YES);
+    originalSetHasHorizontalScroller = (void (*)(id, SEL, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(setHasHorizontalScroller:), 
@selector(replacementSetHasHorizontalScroller:), YES, SKReplaceOnly);
+    originalSetAutohidesScrollers = (void (*)(id, SEL, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(setAutohidesScrollers:), 
@selector(replacementSetAutohidesScrollers:), YES, SKReplaceOnly);
+    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES, SKReplaceOnly);
+    originalTile = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(tile), 
@selector(replacementTile), YES, SKReplaceOnly);
     
     // dictionary doesn't retain keys, so no retain cycles; pointer equality 
used to compare views
     scrollViewPlacards = CFDictionaryCreateMutable(CFAllocatorGetDefault(), 0, 
NULL, &kCFTypeDictionaryValueCallBacks);
-    [pool release];
 }
 
 - (NSArray *)placards {

Modified: trunk/NSURL_SKExtensions.m
===================================================================
--- trunk/NSURL_SKExtensions.m  2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/NSURL_SKExtensions.m  2008-08-06 22:03:42 UTC (rev 4363)
@@ -55,10 +55,8 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalInitFileURLWithPath = (id (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(initFileURLWithPath:), @selector(replacementInitFileURLWithPath:), 
YES);
-    originalInitWithString = (id (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, @selector(initWithString:), 
@selector(replacementInitWithString:), YES);
-    [pool release];
+    originalInitFileURLWithPath = (id (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(initFileURLWithPath:), @selector(replacementInitFileURLWithPath:), 
YES, SKReplaceOnly);
+    originalInitWithString = (id (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, @selector(initWithString:), 
@selector(replacementInitWithString:), YES, SKReplaceOnly);
 }
 
 + (NSURL *)URLFromPasteboardAnyType:(NSPasteboard *)pasteboard {

Modified: trunk/PDFAnnotationLink_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationLink_SKExtensions.m      2008-08-06 21:56:05 UTC (rev 
4362)
+++ trunk/PDFAnnotationLink_SKExtensions.m      2008-08-06 22:03:42 UTC (rev 
4363)
@@ -61,12 +61,8 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    if ([self instancesRespondToSelector:@selector(toolTip)])
-        originalToolTip = (id (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip), 
@selector(replacementToolTip), YES);
-    if ([self instancesRespondToSelector:@selector(toolTipNoLabel)])
-        originalToolTipNoLabel = (id (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip), 
@selector(replacementToolTipNoLabel), YES);
-    [pool release];
+    originalToolTip = (id (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip), 
@selector(replacementToolTip), YES, SKReplaceOnly);
+    originalToolTipNoLabel = (id (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip), 
@selector(replacementToolTipNoLabel), YES, SKReplaceOnly);
 }
 
 - (BOOL)isLink { return YES; }

Modified: trunk/PDFAnnotationMarkup_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationMarkup_SKExtensions.m    2008-08-06 21:56:05 UTC (rev 
4362)
+++ trunk/PDFAnnotationMarkup_SKExtensions.m    2008-08-06 22:03:42 UTC (rev 
4363)
@@ -123,12 +123,10 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES);
+    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES, SKReplaceOnly);
     if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4)
-        originalDrawWithBoxInContext = (void (*)(id, SEL, CGPDFBox, 
CGContextRef))SKReplaceMethodImplementationFromSelector(self, 
@selector(drawWithBox:inContext:), 
@selector(replacementDrawWithBox:inContext:), YES);
+        originalDrawWithBoxInContext = (void (*)(id, SEL, CGPDFBox, 
CGContextRef))SKReplaceMethodImplementationFromSelector(self, 
@selector(drawWithBox:inContext:), 
@selector(replacementDrawWithBox:inContext:), YES, SKReplaceOnly);
     lineRectsDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, NULL, 
&kCFTypeDictionaryValueCallBacks);
-    [pool release];
 }
 
 - (CFMutableArrayRef)lineRects {

Modified: trunk/PDFDisplayView_SKExtensions.m
===================================================================
--- trunk/PDFDisplayView_SKExtensions.m 2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/PDFDisplayView_SKExtensions.m 2008-08-06 22:03:42 UTC (rev 4363)
@@ -226,32 +226,21 @@
 void SKSwizzlePDFDisplayViewMethods() {
     Class PDFDisplayViewClass = NSClassFromString(@"PDFDisplayView");
     if (PDFDisplayViewClass) {
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(resetCursorRects)])
-            originalResetCursorRects = (void (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(resetCursorRects), (IMP)replacementResetCursorRects, NULL, YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(passwordEntered:)])
-            originalPasswordEntered = (void (*)(id, SEL, 
id))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(passwordEntered:), (IMP)replacementPasswordEntered, NULL, YES);
+        originalResetCursorRects = (void (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(resetCursorRects), (IMP)replacementResetCursorRects, NULL, YES, 
SKReplaceOnly);
+        originalPasswordEntered = (void (*)(id, SEL, 
id))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(passwordEntered:), (IMP)replacementPasswordEntered, NULL, YES, 
SKReplaceOnly);
         
         if ([[NSUserDefaults standardUserDefaults] 
boolForKey:@"SKDisableExtendedPDFViewAccessibility"]) return;
         
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityAttributeNames)])
-            originalAccessibilityAttributeNames = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributeNames), 
(IMP)replacementAccessibilityAttributeNames, NULL, YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityParameterizedAttributeNames)])
-            originalAccessibilityParameterizedAttributeNames = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityParameterizedAttributeNames), 
(IMP)replacementAccessibilityParameterizedAttributeNames, NULL, YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityAttributeValue:)])
-            originalAccessibilityAttributeValue = (id (*)(id, SEL, 
id))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributeValue:), 
(IMP)replacementAccessibilityAttributeValue, NULL, YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityHitTest:)])
-            originalAccessibilityHitTest = (id (*)(id, SEL, 
NSPoint))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityHitTest:), (IMP)replacementAccessibilityHitTest, NULL, 
YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityFocusedUIElement)])
-            originalAccessibilityFocusedUIElement = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityFocusedUIElement), 
(IMP)replacementAccessibilityFocusedUIElement, NULL, YES);
+        originalAccessibilityAttributeNames = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributeNames), 
(IMP)replacementAccessibilityAttributeNames, NULL, YES, SKReplaceOnly);
+        originalAccessibilityParameterizedAttributeNames = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityParameterizedAttributeNames), 
(IMP)replacementAccessibilityParameterizedAttributeNames, NULL, YES, 
SKReplaceOnly);
+        originalAccessibilityAttributeValue = (id (*)(id, SEL, 
id))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributeValue:), 
(IMP)replacementAccessibilityAttributeValue, NULL, YES, SKReplaceOnly);
+        originalAccessibilityHitTest = (id (*)(id, SEL, 
NSPoint))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityHitTest:), (IMP)replacementAccessibilityHitTest, NULL, 
YES, SKReplaceOnly);
+        originalAccessibilityFocusedUIElement = (id (*)(id, 
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityFocusedUIElement), 
(IMP)replacementAccessibilityFocusedUIElement, NULL, YES, SKReplaceOnly);
             
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityRangeForPositionAttributeForParameter:)]
 == NO)
-            SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityRangeForPositionAttributeForParameter:), 
(IMP)replacementAccessibilityRangeForPositionAttributeForParameter, "@@:@", 
YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityRTFForRangeAttributeForParameter:)]
 == NO)
-            SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityRTFForRangeAttributeForParameter:), 
(IMP)replacementAccessibilityRTFForRangeAttributeForParameter, "@@:@", YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityAttributedStringForRangeAttributeForParameter:)]
 == NO)
-            SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributedStringForRangeAttributeForParameter:), 
(IMP)replacementAccessibilityAttributedStringForRangeAttributeForParameter, 
"@@:@", YES);
-        if ([PDFDisplayViewClass 
instancesRespondToSelector:@selector(accessibilityStyleRangeForIndexAttributeForParameter:)]
 == NO)
-            SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityStyleRangeForIndexAttributeForParameter:), 
(IMP)replacementAccessibilityStyleRangeForIndexAttributeForParameter, "@@:@", 
YES);
+        SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityRangeForPositionAttributeForParameter:), 
(IMP)replacementAccessibilityRangeForPositionAttributeForParameter, "@@:@", 
YES, SKSetOnly);
+        SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityRTFForRangeAttributeForParameter:), 
(IMP)replacementAccessibilityRTFForRangeAttributeForParameter, "@@:@", YES, 
SKSetOnly);
+        SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityAttributedStringForRangeAttributeForParameter:), 
(IMP)replacementAccessibilityAttributedStringForRangeAttributeForParameter, 
"@@:@", YES, SKSetOnly);
+        SKReplaceMethodImplementation(PDFDisplayViewClass, 
@selector(accessibilityStyleRangeForIndexAttributeForParameter:), 
(IMP)replacementAccessibilityStyleRangeForIndexAttributeForParameter, "@@:@", 
YES, SKSetOnly);
     }
 }
 

Modified: trunk/PDFDocument_SKExtensions.m
===================================================================
--- trunk/PDFDocument_SKExtensions.m    2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/PDFDocument_SKExtensions.m    2008-08-06 22:03:42 UTC (rev 4363)
@@ -72,10 +72,7 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    if ([self 
instancesRespondToSelector:@selector(getPrintOperationForPrintInfo:autoRotate:)])
-        originalGetPrintOperationForPrintInfo = (id (*)(id, SEL, id, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(getPrintOperationForPrintInfo:autoRotate:), 
@selector(replacementGetPrintOperationForPrintInfo:autoRotate:), YES);
-    [pool release];
+    originalGetPrintOperationForPrintInfo = (id (*)(id, SEL, id, 
BOOL))SKReplaceMethodImplementationFromSelector(self, 
@selector(getPrintOperationForPrintInfo:autoRotate:), 
@selector(replacementGetPrintOperationForPrintInfo:autoRotate:), YES, 
SKReplaceOnly);
 }
 
 - (PDFSelection *)selectionByExtendingSelection:(PDFSelection *)selection 
toPage:(PDFPage *)page atPoint:(NSPoint)point {

Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m        2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/PDFPage_SKExtensions.m        2008-08-06 22:03:42 UTC (rev 4363)
@@ -74,10 +74,8 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES);
+    originalDealloc = (void (*)(id, 
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc), 
@selector(replacementDealloc), YES, SKReplaceOnly);
     bboxCache = CFDictionaryCreateMutable(NULL, 0, NULL, 
&kSKNSRectDictionaryValueCallBacks);
-    [pool release];
 }
 
 // mainly useful for drawing the box in a PDFView while debugging

Modified: trunk/SKFindTableView.m
===================================================================
--- trunk/SKFindTableView.m     2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/SKFindTableView.m     2008-08-06 22:03:42 UTC (rev 4363)
@@ -173,7 +173,7 @@
 
 + (void)load {
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalDrawWithFrameInView = (void (*)(id, SEL, NSRect, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(drawWithFrame:inView:), @selector(replacementDrawWithFrame:inView:), 
YES);
+    originalDrawWithFrameInView = (void (*)(id, SEL, NSRect, 
id))SKReplaceMethodImplementationFromSelector(self, 
@selector(drawWithFrame:inView:), @selector(replacementDrawWithFrame:inView:), 
YES, SKReplaceOnly);
     [pool release];
 }
 

Modified: trunk/SKRuntime.h
===================================================================
--- trunk/SKRuntime.h   2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/SKRuntime.h   2008-08-06 22:03:42 UTC (rev 4363)
@@ -48,7 +48,12 @@
         hasBeenInitialized = YES;\
     } while (0);
 
+enum {
+    SKSetOrReplace,
+    SKReplaceOnly,
+    SKSetOnly
+};
 
-extern IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector, IMP 
anImp, const char *types, BOOL isInstance);
-extern IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL 
aSelector, SEL impSelector, BOOL isInstance);
+extern IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector, IMP 
anImp, const char *types, BOOL isInstance, int options);
+extern IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL 
aSelector, SEL impSelector, BOOL isInstance, int options);
 extern void SKExchangeMethodImplementations(Class aClass, SEL aSelector1, SEL 
aSelector2, BOOL isInstance);

Modified: trunk/SKRuntime.m
===================================================================
--- trunk/SKRuntime.m   2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/SKRuntime.m   2008-08-06 22:03:42 UTC (rev 4363)
@@ -127,7 +127,7 @@
 #pragma mark API
 
 // this is essentially class_replaceMethod, but handles instance/class 
methods, returns any inherited implementation, and can get the types from an 
inherited implementation
-IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector, IMP anImp, 
const char *types, BOOL isInstance) {
+IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector, IMP anImp, 
const char *types, BOOL isInstance, int options) {
     IMP imp = NULL;
     if (anImp) {
         Method method = isInstance ? class_getInstanceMethod(aClass, 
aSelector) : class_getClassMethod(aClass, aSelector);
@@ -136,17 +136,17 @@
             if (types == NULL)
                 types = SK_method_getTypeEncoding(method);
         }
-        if (types)
+        if (types != NULL && (options != SKSetOnly || imp == NULL) && (options 
!= SKReplaceOnly || imp != NULL))
             SK_class_replaceMethod(isInstance ? aClass : 
SK_object_getClass(aClass), aSelector, anImp, types);
     }
     return imp;
 }
 
-IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL aSelector, SEL 
impSelector, BOOL isInstance) {
+IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL aSelector, SEL 
impSelector, BOOL isInstance, int options) {
     Method method = isInstance ? class_getInstanceMethod(aClass, impSelector) 
: class_getClassMethod(aClass, impSelector);
-    return method ? SKReplaceMethodImplementation(aClass, aSelector, 
SK_method_getImplementation(method), SK_method_getTypeEncoding(method), 
isInstance) : NULL;
+    return method ? SKReplaceMethodImplementation(aClass, aSelector, 
SK_method_getImplementation(method), SK_method_getTypeEncoding(method), 
isInstance, options) : NULL;
 }
 
 void SKExchangeMethodImplementationsForSelectors(Class aClass, SEL aSelector1, 
SEL aSelector2, BOOL isInstance) {
-    SKReplaceMethodImplementation(aClass, aSelector2, 
SKReplaceMethodImplementationFromSelector(aClass, aSelector1, aSelector2, 
isInstance), NULL, isInstance);
+    SKReplaceMethodImplementation(aClass, aSelector2, 
SKReplaceMethodImplementationFromSelector(aClass, aSelector1, aSelector2, 
isInstance, SKReplaceOnly), NULL, isInstance, SKReplaceOnly);
 }

Modified: trunk/SKThumbnailTableView.m
===================================================================
--- trunk/SKThumbnailTableView.m        2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/SKThumbnailTableView.m        2008-08-06 22:03:42 UTC (rev 4363)
@@ -58,9 +58,7 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalTrackKnob = (void (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, @selector(trackKnob:), 
@selector(replacementTrackKnob:), YES);
-    [pool release];
+    originalTrackKnob = (void (*)(id, SEL, 
id))SKReplaceMethodImplementationFromSelector(self, @selector(trackKnob:), 
@selector(replacementTrackKnob:), YES, SKReplaceOnly);
 }
 
 @end

Modified: trunk/SKTypeSelectHelper.m
===================================================================
--- trunk/SKTypeSelectHelper.m  2008-08-06 21:56:05 UTC (rev 4362)
+++ trunk/SKTypeSelectHelper.m  2008-08-06 22:03:42 UTC (rev 4363)
@@ -428,9 +428,7 @@
 }
 
 + (void)load {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-    originalMakeFirstResponder = 
(typeof(originalMakeFirstResponder))SKReplaceMethodImplementationFromSelector(self,
 @selector(makeFirstResponder:), @selector(replacementMakeFirstResponder:), 
YES);
-    [pool release];
+    originalMakeFirstResponder = 
(typeof(originalMakeFirstResponder))SKReplaceMethodImplementationFromSelector(self,
 @selector(makeFirstResponder:), @selector(replacementMakeFirstResponder:), 
YES, SKReplaceOnly);
 }
 
 @end


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