Revision: 4357
http://skim-app.svn.sourceforge.net/skim-app/?rev=4357&view=rev
Author: hofman
Date: 2008-08-06 01:37:59 +0000 (Wed, 06 Aug 2008)
Log Message:
-----------
Remove API to swizzle methods using obj-c methods. Directly use the functions
instead. Apparently using methods to mess with classes is dangerous, it somehow
does not work in NSScroller.
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/SKApplicationController.m
trunk/SKBookmark.m
trunk/SKBookmarkController.m
trunk/SKColorSwatch.m
trunk/SKDocumentController.m
trunk/SKFindTableView.m
trunk/SKFontWell.m
trunk/SKInfoWindowController.m
trunk/SKLineWell.m
trunk/SKMainWindowController.m
trunk/SKNoteWindowController.m
trunk/SKPDFView.m
trunk/SKRuntime.h
trunk/SKRuntime.m
trunk/SKSnapshotPageCell.m
trunk/SKSnapshotWindowController.m
trunk/SKTemplateParser.m
trunk/SKThumbnailTableView.m
trunk/SKTypeSelectHelper.m
trunk/Skim.xcodeproj/project.pbxproj
Removed Paths:
-------------
trunk/NSObject_SKExtensions.h
trunk/NSObject_SKExtensions.m
Modified: trunk/NSCell_SKExtensions.m
===================================================================
--- trunk/NSCell_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSCell_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -39,7 +39,7 @@
*/
#import "NSCell_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
@implementation NSCell (SKExtensions)
@@ -54,7 +54,7 @@
}
+ (void)load {
- originalHighlightColorWithFrameInView = (id (*)(id, SEL, NSRect, id))[self
setInstanceMethodFromSelector:@selector(replacementHighlightColorWithFrame:inView:)
forSelector:@selector(highlightColorWithFrame:inView:)];
+ originalHighlightColorWithFrameInView = (id (*)(id, SEL, NSRect,
id))SKReplaceMethodImplementationFromSelector(self,
@selector(highlightColorWithFrame:inView:),
@selector(replacementHighlightColorWithFrame:inView:), YES);
}
@end
Modified: trunk/NSCharacterSet_SKExtensions.m
===================================================================
--- trunk/NSCharacterSet_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSCharacterSet_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "NSCharacterSet_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
@implementation NSCharacterSet (SKExtensions)
@@ -70,7 +70,7 @@
+ (void)load {
if ([self respondsToSelector:@selector(newlineCharacterSet)] == NO)
- [self setMethodFromSelector:@selector(replacementNewlineCharacterSet)
forSelector:@selector(newlineCharacterSet)];
+ SKReplaceMethodImplementationFromSelector(self,
@selector(newlineCharacterSet), @selector(replacementNewlineCharacterSet), NO);
}
@end
Deleted: trunk/NSObject_SKExtensions.h
===================================================================
--- trunk/NSObject_SKExtensions.h 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSObject_SKExtensions.h 2008-08-06 01:37:59 UTC (rev 4357)
@@ -1,65 +0,0 @@
-//
-// NSObject_SKExtensions.h
-// Skim
-//
-// Created by Christiaan Hofman on 7/22/08.
-/*
- This software is Copyright (c) 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>
-
-#define OBINITIALIZE \
- do { \
- static BOOL hasBeenInitialized = NO; \
- [super initialize]; \
- if (hasBeenInitialized) \
- return; \
- hasBeenInitialized = YES;\
- } while (0);
-
-
[EMAIL PROTECTED] NSObject (SKExtensions)
-
-+ (IMP)setMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector;
-- (IMP)setMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector;
-+ (IMP)setInstanceMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector;
-
-+ (IMP)setMethodFromSelector:(SEL)impSelector forSelector:(SEL)aSelector;
-- (IMP)setMethodFromSelector:(SEL)impSelector forSelector:(SEL)aSelector;
-+ (IMP)setInstanceMethodFromSelector:(SEL)impSelector
forSelector:(SEL)aSelector;
-
-+ (void)exchangeMethodForSelector:(SEL)aSelector1
withMethodForSelector:(SEL)aSelector2;
-- (void)exchangeMethodForSelector:(SEL)aSelector1
withMethodForSelector:(SEL)aSelector2;
-+ (void)exchangeInstanceMethodForSelector:(SEL)aSelector1
withInstanceMethodForSelector:(SEL)aSelector2;
-
[EMAIL PROTECTED]
Deleted: trunk/NSObject_SKExtensions.m
===================================================================
--- trunk/NSObject_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSObject_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -1,101 +0,0 @@
-//
-// NSObject_SKExtensions.m
-// Skim
-//
-// Created by Christiaan Hofman on 7/22/08.
-/*
- This software is Copyright (c) 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 "NSObject_SKExtensions.h"
-#import "SKRuntime.h"
-
-
-static inline IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector,
IMP anImp, const char *types, BOOL isInstance) {
- IMP imp = NULL;
- if (anImp) {
- Method method = isInstance ? class_getInstanceMethod(aClass,
aSelector) : class_getClassMethod(aClass, aSelector);
- if (method) {
- imp = SK_method_getImplementation(method);
- if (types == NULL)
- types = SK_method_getTypeEncoding(method);
- }
- if (types)
- SK_class_replaceMethod(isInstance ? aClass :
SK_object_getClass(aClass), aSelector, anImp, types);
- }
- return imp;
-}
-
-static inline IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL
aSelector, SEL impSelector, BOOL isInstance) {
- 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;
-}
-
[EMAIL PROTECTED] NSObject (SKExtensions)
-
-+ (IMP)setMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector {
- return SKReplaceMethodImplementation(self, aSelector, anImp, types, NO);
-}
-
-- (IMP)setMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector {
- return [[self class] setInstanceMethod:anImp typeEncoding:types
forSelector:aSelector];
-}
-
-+ (IMP)setInstanceMethod:(IMP)anImp typeEncoding:(const char *)types
forSelector:(SEL)aSelector {
- return SKReplaceMethodImplementation(self, aSelector, anImp, types, YES);
-}
-
-+ (IMP)setMethodFromSelector:(SEL)impSelector forSelector:(SEL)aSelector {
- return SKReplaceMethodImplementationFromSelector(self, aSelector,
impSelector, NO);
-}
-
-- (IMP)setMethodFromSelector:(SEL)impSelector forSelector:(SEL)aSelector {
- return [[self class] setInstanceMethodFromSelector:impSelector
forSelector:aSelector];
-}
-
-+ (IMP)setInstanceMethodFromSelector:(SEL)impSelector
forSelector:(SEL)aSelector {
- return SKReplaceMethodImplementationFromSelector(self, aSelector,
impSelector, YES);
-}
-
-+ (void)exchangeMethodForSelector:(SEL)aSelector1
withMethodForSelector:(SEL)aSelector2 {
- [self setMethod:[self setMethodFromSelector:aSelector2
forSelector:aSelector1] typeEncoding:NULL forSelector:aSelector2];
-}
-
-- (void)exchangeMethodForSelector:(SEL)aSelector1
withMethodForSelector:(SEL)aSelector2 {
- [[self class] exchangeInstanceMethodForSelector:aSelector1
withInstanceMethodForSelector:aSelector2];
-}
-
-+ (void)exchangeInstanceMethodForSelector:(SEL)aSelector1
withInstanceMethodForSelector:(SEL)aSelector2 {
- [self setInstanceMethod:[self setInstanceMethodFromSelector:aSelector2
forSelector:aSelector1] typeEncoding:NULL forSelector:aSelector2];
-}
-
[EMAIL PROTECTED]
Modified: trunk/NSScrollView_SKExtensions.m
===================================================================
--- trunk/NSScrollView_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSScrollView_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "NSScrollView_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "BDSKEdgeView.h"
@@ -103,10 +103,10 @@
}
+ (void)load{
- originalSetHasHorizontalScroller = (void (*)(id, SEL, BOOL))[self
setInstanceMethodFromSelector:@selector(replacementSetHasHorizontalScroller:)
forSelector:@selector(setHasHorizontalScroller:)];
- originalSetAutohidesScrollers = (void (*)(id, SEL, BOOL))[self
setInstanceMethodFromSelector:@selector(replacementSetAutohidesScrollers:)
forSelector:@selector(setAutohidesScrollers:)];
- originalDealloc = (void (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementDealloc)
forSelector:@selector(dealloc)];
- originalTile = (void (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementTile)
forSelector:@selector(tile)];
+ 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);
// dictionary doesn't retain keys, so no retain cycles; pointer equality
used to compare views
scrollViewPlacards = CFDictionaryCreateMutable(CFAllocatorGetDefault(), 0,
NULL, &kCFTypeDictionaryValueCallBacks);
Modified: trunk/NSURL_SKExtensions.m
===================================================================
--- trunk/NSURL_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/NSURL_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "NSURL_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
NSString *SKWeblocFilePboardType = @"CorePasteboardFlavorType 0x75726C20";
@@ -55,8 +55,8 @@
}
+ (void)load {
- originalInitFileURLWithPath = (id (*)(id, SEL, id))[self
setInstanceMethodFromSelector:@selector(replacementInitFileURLWithPath:)
forSelector:@selector(initFileURLWithPath:)];
- originalInitWithString = (id (*)(id, SEL, id))[self
setInstanceMethodFromSelector:@selector(replacementInitWithString:)
forSelector:@selector(initWithString:)];
+ originalInitFileURLWithPath = (id (*)(id, SEL,
id))SKReplaceMethodImplementationFromSelector(self,
@selector(initFileURLWithPath:), @selector(replacementInitFileURLWithPath:),
YES);
+ originalInitWithString = (id (*)(id, SEL,
id))SKReplaceMethodImplementationFromSelector(self, @selector(initWithString:),
@selector(replacementInitWithString:), YES);
}
+ (NSURL *)URLFromPasteboardAnyType:(NSPasteboard *)pasteboard {
Modified: trunk/PDFAnnotationLink_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationLink_SKExtensions.m 2008-08-05 21:48:38 UTC (rev
4356)
+++ trunk/PDFAnnotationLink_SKExtensions.m 2008-08-06 01:37:59 UTC (rev
4357)
@@ -37,7 +37,7 @@
*/
#import "PDFAnnotationLink_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
@interface PDFAnnotationLink (SKLeopardPrivate)
@@ -62,9 +62,9 @@
+ (void)load {
if ([self instancesRespondToSelector:@selector(toolTip)])
- originalToolTip = (id (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementToolTip)
forSelector:@selector(toolTip)];
+ originalToolTip = (id (*)(id,
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip),
@selector(replacementToolTip), YES);
if ([self instancesRespondToSelector:@selector(toolTipNoLabel)])
- originalToolTipNoLabel = (id (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementToolTipNoLabel)
forSelector:@selector(toolTip)];
+ originalToolTipNoLabel = (id (*)(id,
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(toolTip),
@selector(replacementToolTipNoLabel), YES);
}
- (BOOL)isLink { return YES; }
Modified: trunk/PDFAnnotationMarkup_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationMarkup_SKExtensions.m 2008-08-05 21:48:38 UTC (rev
4356)
+++ trunk/PDFAnnotationMarkup_SKExtensions.m 2008-08-06 01:37:59 UTC (rev
4357)
@@ -46,7 +46,7 @@
#import "NSUserDefaults_SKExtensions.h"
#import "NSGeometry_SKExtensions.h"
#import "SKCFCallBacks.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
NSString *SKPDFAnnotationSelectionSpecifierKey = @"selectionSpecifier";
@@ -123,9 +123,9 @@
}
+ (void)load {
- originalDealloc = (void (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementDealloc)
forSelector:@selector(dealloc)];
+ originalDealloc = (void (*)(id,
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc),
@selector(replacementDealloc), YES);
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4)
- originalDrawWithBoxInContext = (void (*)(id, SEL, CGPDFBox,
CGContextRef))[self
setInstanceMethodFromSelector:@selector(replacementDrawWithBox:inContext:)
forSelector:@selector(drawWithBox:inContext:)];
+ originalDrawWithBoxInContext = (void (*)(id, SEL, CGPDFBox,
CGContextRef))SKReplaceMethodImplementationFromSelector(self,
@selector(drawWithBox:inContext:),
@selector(replacementDrawWithBox:inContext:), YES);
lineRectsDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, NULL,
&kCFTypeDictionaryValueCallBacks);
}
Modified: trunk/PDFDisplayView_SKExtensions.m
===================================================================
--- trunk/PDFDisplayView_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/PDFDisplayView_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -42,7 +42,7 @@
#import "PDFAnnotation_SKExtensions.h"
#import "NSAttributedString_SKExtensions.h"
#import "SKPDFDocument.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "SKAccessibilityProxyElement.h"
@interface NSView (SKPDFDisplayViewprivateDeclarations)
@@ -227,31 +227,31 @@
Class PDFDisplayViewClass = NSClassFromString(@"PDFDisplayView");
if (PDFDisplayViewClass) {
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(resetCursorRects)])
- originalResetCursorRects = (void (*)(id, SEL))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementResetCursorRects typeEncoding:NULL
forSelector:@selector(resetCursorRects)];
+ originalResetCursorRects = (void (*)(id,
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(resetCursorRects), (IMP)replacementResetCursorRects, NULL, YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(passwordEntered:)])
- originalPasswordEntered = (void (*)(id, SEL,
id))[PDFDisplayViewClass setInstanceMethod:(IMP)replacementPasswordEntered
typeEncoding:NULL forSelector:@selector(passwordEntered:)];
+ originalPasswordEntered = (void (*)(id, SEL,
id))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(passwordEntered:), (IMP)replacementPasswordEntered, NULL, YES);
if ([[NSUserDefaults standardUserDefaults]
boolForKey:@"SKDisableExtendedPDFViewAccessibility"]) return;
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityAttributeNames)])
- originalAccessibilityAttributeNames = (id (*)(id,
SEL))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityAttributeNames typeEncoding:NULL
forSelector:@selector(accessibilityAttributeNames)];
+ originalAccessibilityAttributeNames = (id (*)(id,
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityAttributeNames),
(IMP)replacementAccessibilityAttributeNames, NULL, YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityParameterizedAttributeNames)])
- originalAccessibilityParameterizedAttributeNames = (id (*)(id,
SEL))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityParameterizedAttributeNames
typeEncoding:NULL
forSelector:@selector(accessibilityParameterizedAttributeNames)];
+ originalAccessibilityParameterizedAttributeNames = (id (*)(id,
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityParameterizedAttributeNames),
(IMP)replacementAccessibilityParameterizedAttributeNames, NULL, YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityAttributeValue:)])
- originalAccessibilityAttributeValue = (id (*)(id, SEL,
id))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityAttributeValue typeEncoding:NULL
forSelector:@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))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityHitTest typeEncoding:NULL
forSelector:@selector(accessibilityHitTest:)];
+ originalAccessibilityHitTest = (id (*)(id, SEL,
NSPoint))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityHitTest:), (IMP)replacementAccessibilityHitTest, NULL,
YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityFocusedUIElement)])
- originalAccessibilityFocusedUIElement = (id (*)(id,
SEL))[PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityFocusedUIElement
typeEncoding:NULL forSelector:@selector(accessibilityFocusedUIElement)];
+ originalAccessibilityFocusedUIElement = (id (*)(id,
SEL))SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityFocusedUIElement),
(IMP)replacementAccessibilityFocusedUIElement, NULL, YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityRangeForPositionAttributeForParameter:)]
== NO)
- [PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityRangeForPositionAttributeForParameter
typeEncoding:"@@:@"
forSelector:@selector(accessibilityRangeForPositionAttributeForParameter:)];
+ SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityRangeForPositionAttributeForParameter:),
(IMP)replacementAccessibilityRangeForPositionAttributeForParameter, "@@:@",
YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityRTFForRangeAttributeForParameter:)]
== NO)
- [PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityRTFForRangeAttributeForParameter
typeEncoding:"@@:@"
forSelector:@selector(accessibilityRTFForRangeAttributeForParameter:)];
+ SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityRTFForRangeAttributeForParameter:),
(IMP)replacementAccessibilityRTFForRangeAttributeForParameter, "@@:@", YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityAttributedStringForRangeAttributeForParameter:)]
== NO)
- [PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityAttributedStringForRangeAttributeForParameter
typeEncoding:"@@:@"
forSelector:@selector(accessibilityAttributedStringForRangeAttributeForParameter:)];
+ SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityAttributedStringForRangeAttributeForParameter:),
(IMP)replacementAccessibilityAttributedStringForRangeAttributeForParameter,
"@@:@", YES);
if ([PDFDisplayViewClass
instancesRespondToSelector:@selector(accessibilityStyleRangeForIndexAttributeForParameter:)]
== NO)
- [PDFDisplayViewClass
setInstanceMethod:(IMP)replacementAccessibilityStyleRangeForIndexAttributeForParameter
typeEncoding:"@@:@"
forSelector:@selector(accessibilityStyleRangeForIndexAttributeForParameter:)];
+ SKReplaceMethodImplementation(PDFDisplayViewClass,
@selector(accessibilityStyleRangeForIndexAttributeForParameter:),
(IMP)replacementAccessibilityStyleRangeForIndexAttributeForParameter, "@@:@",
YES);
}
}
Modified: trunk/PDFDocument_SKExtensions.m
===================================================================
--- trunk/PDFDocument_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/PDFDocument_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -38,7 +38,7 @@
#import "PDFDocument_SKExtensions.h"
#import "PDFSelection_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
@interface PDFDocument (SKPrivateDeclarations)
@@ -74,7 +74,7 @@
+ (void)load {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if ([self
instancesRespondToSelector:@selector(getPrintOperationForPrintInfo:autoRotate:)])
- originalGetPrintOperationForPrintInfo = (id (*)(id, SEL, id,
BOOL))[self
setInstanceMethodFromSelector:@selector(replacementGetPrintOperationForPrintInfo:autoRotate:)
forSelector:@selector(getPrintOperationForPrintInfo:autoRotate:)];
+ originalGetPrintOperationForPrintInfo = (id (*)(id, SEL, id,
BOOL))SKReplaceMethodImplementationFromSelector(self,
@selector(getPrintOperationForPrintInfo:autoRotate:),
@selector(replacementGetPrintOperationForPrintInfo:autoRotate:), YES);
[pool release];
}
Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/PDFPage_SKExtensions.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -42,7 +42,7 @@
#import "SKPDFDocument.h"
#import "SKPDFView.h"
#import "PDFSelection_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "NSBitmapImageRep_SKExtensions.h"
#import "SKStringConstants.h"
#import "NSCharacterSet_SKExtensions.h"
@@ -74,7 +74,7 @@
}
+ (void)load {
- originalDealloc = (void (*)(id, SEL))[self
setInstanceMethodFromSelector:@selector(replacementDealloc)
forSelector:@selector(dealloc)];
+ originalDealloc = (void (*)(id,
SEL))SKReplaceMethodImplementationFromSelector(self, @selector(dealloc),
@selector(replacementDealloc), YES);
bboxCache = CFDictionaryCreateMutable(NULL, 0, NULL,
&kSKNSRectDictionaryValueCallBacks);
}
Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKApplicationController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -65,7 +65,7 @@
#import "Files_SKExtensions.h"
#import "NSTask_SKExtensions.h"
#import "NSView_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import <SkimNotes/PDFAnnotation_SKNExtensions.h>
#import "PDFAnnotation_SKExtensions.h"
#import "PDFAnnotationLine_SKExtensions.h"
Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKBookmark.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -39,7 +39,7 @@
#import "SKBookmark.h"
#import "BDAlias.h"
#import "NSImage_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
static NSString *SKBookmarkTypeBookmarkString = @"bookmark";
static NSString *SKBookmarkTypeFolderString = @"folder";
Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKBookmarkController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -50,7 +50,7 @@
#import "SKToolbarItem.h"
#import "NSImage_SKExtensions.h"
#import "SKStringConstants.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
static NSString *SKBookmarkRowsPboardType = @"SKBookmarkRowsPboardType";
Modified: trunk/SKColorSwatch.m
===================================================================
--- trunk/SKColorSwatch.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKColorSwatch.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "SKColorSwatch.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "NSColor_SKExtensions.h"
#import <Carbon/Carbon.h>
Modified: trunk/SKDocumentController.m
===================================================================
--- trunk/SKDocumentController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKDocumentController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -43,7 +43,7 @@
#import "NSString_SKExtensions.h"
#import "NSURL_SKExtensions.h"
#import "SKStringConstants.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "SKApplicationController.h"
static NSString *SKAutosaveIntervalKey = @"SKAutosaveInterval";
Modified: trunk/SKFindTableView.m
===================================================================
--- trunk/SKFindTableView.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKFindTableView.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -38,7 +38,7 @@
#import "SKFindTableView.h"
#import "SKStringConstants.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
@implementation SKFindTableView
@@ -172,7 +172,7 @@
}
+ (void)load {
- originalDrawWithFrameInView = (void (*)(id, SEL, NSRect, id))[self
setInstanceMethodFromSelector:@selector(replacementDrawWithFrame:inView:)
forSelector:@selector(drawWithFrame:inView:)];
+ originalDrawWithFrameInView = (void (*)(id, SEL, NSRect,
id))SKReplaceMethodImplementationFromSelector(self,
@selector(drawWithFrame:inView:), @selector(replacementDrawWithFrame:inView:),
YES);
}
@end
Modified: trunk/SKFontWell.m
===================================================================
--- trunk/SKFontWell.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKFontWell.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "SKFontWell.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
static NSString *SKNSFontPanelDescriptorsPboardType =
@"NSFontPanelDescriptorsPboardType";
static NSString *SKNSFontPanelFamiliesPboardType =
@"NSFontPanelFamiliesPboardType";
Modified: trunk/SKInfoWindowController.m
===================================================================
--- trunk/SKInfoWindowController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKInfoWindowController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -39,7 +39,7 @@
#import "SKInfoWindowController.h"
#import "SKPDFDocument.h"
#import <Quartz/Quartz.h>
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
static NSString *SKInfoWindowFrameAutosaveName = @"SKInfoWindow";
Modified: trunk/SKLineWell.m
===================================================================
--- trunk/SKLineWell.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKLineWell.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -38,7 +38,7 @@
#import "SKLineWell.h"
#import "SKLineInspector.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
NSString *SKLineStylePboardType = @"SKLineStylePboardType";
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKMainWindowController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -88,7 +88,7 @@
#import "SKSecondaryPDFView.h"
#import "SKSheetController.h"
#import "SKColorSwatch.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "SKApplicationController.h"
#import "SKCFCallBacks.h"
#import "NSSegmentedControl_SKExtensions.h"
Modified: trunk/SKNoteWindowController.m
===================================================================
--- trunk/SKNoteWindowController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKNoteWindowController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -48,7 +48,7 @@
#import "NSWindowController_SKExtensions.h"
#import "NSUserDefaultsController_SKExtensions.h"
#import "SKStringConstants.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "PDFPage_SKExtensions.h"
static NSString *SKNoteWindowFrameAutosaveName = @"SKNoteWindow";
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKPDFView.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -61,7 +61,7 @@
#import <Carbon/Carbon.h>
#import "NSGeometry_SKExtensions.h"
#import "SKTypeSelectHelper.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "NSAffineTransform_SKExtensions.h"
#import "BDSKEdgeView.h"
#import "PDFDocument_SKExtensions.h"
Modified: trunk/SKRuntime.h
===================================================================
--- trunk/SKRuntime.h 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKRuntime.h 2008-08-06 01:37:59 UTC (rev 4357)
@@ -36,13 +36,19 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#import <objc/objc-runtime.h>
+#import <Cocoa/Cocoa.h>
// wrappers around 10.5 only functions, use 10.4 API when the function is not
defined
-extern Class SK_object_getClass(id object);
+#define OBINITIALIZE \
+ do { \
+ static BOOL hasBeenInitialized = NO; \
+ [super initialize]; \
+ if (hasBeenInitialized) \
+ return; \
+ hasBeenInitialized = YES;\
+ } while (0);
-extern IMP SK_method_getImplementation(Method aMethod);
-extern const char *SK_method_getTypeEncoding(Method aMethod);
-extern IMP SK_class_replaceMethod(Class aClass, SEL selector, IMP methodImp,
const char *methodTypes);
+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);
Modified: trunk/SKRuntime.m
===================================================================
--- trunk/SKRuntime.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKRuntime.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,6 +37,7 @@
*/
#import "SKRuntime.h"
+#import <objc/objc-runtime.h>
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
@@ -45,15 +46,15 @@
extern void _objc_flush_caches(Class);
-Class SK_object_getClass(id object) {
+static inline Class SK_object_getClass(id object) {
return object_getClass != NULL ? object_getClass(object) : object->isa;
}
-IMP SK_method_getImplementation(Method aMethod) {
+static inline IMP SK_method_getImplementation(Method aMethod) {
return method_getImplementation != NULL ?
method_getImplementation(aMethod) : aMethod->method_imp;
}
-const char *SK_method_getTypeEncoding(Method aMethod) {
+static inline const char *SK_method_getTypeEncoding(Method aMethod) {
return method_getTypeEncoding != NULL ? method_getTypeEncoding(aMethod) :
aMethod->method_types;
}
@@ -93,7 +94,7 @@
return imp;
}
-IMP SK_class_replaceMethod(Class aClass, SEL selector, IMP methodImp, const
char *methodTypes) {
+static inline IMP SK_class_replaceMethod(Class aClass, SEL selector, IMP
methodImp, const char *methodTypes) {
if (class_replaceMethod != NULL)
return class_replaceMethod(aClass, selector, methodImp, methodTypes);
else
@@ -104,20 +105,40 @@
#pragma mark 10.5
-Class SK_object_getClass(id object) {
+static inline Class SK_object_getClass(id object) {
return object_getClass(object);
}
-IMP SK_method_getImplementation(Method aMethod) {
+static inline IMP SK_method_getImplementation(Method aMethod) {
return method_getImplementation(aMethod);
}
-const char *SK_method_getTypeEncoding(Method aMethod) {
+static inline const char *SK_method_getTypeEncoding(Method aMethod) {
return method_getTypeEncoding(aMethod);
}
-IMP SK_class_replaceMethod(Class aClass, SEL selector, IMP methodImp, const
char *methodTypes) {
+static inline IMP SK_class_replaceMethod(Class aClass, SEL selector, IMP
methodImp, const char *methodTypes) {
return class_replaceMethod(aClass, selector, methodImp, methodTypes);
}
#endif
+
+IMP SKReplaceMethodImplementation(Class aClass, SEL aSelector, IMP anImp,
const char *types, BOOL isInstance) {
+ IMP imp = NULL;
+ if (anImp) {
+ Method method = isInstance ? class_getInstanceMethod(aClass,
aSelector) : class_getClassMethod(aClass, aSelector);
+ if (method) {
+ imp = SK_method_getImplementation(method);
+ if (types == NULL)
+ types = SK_method_getTypeEncoding(method);
+ }
+ if (types)
+ SK_class_replaceMethod(isInstance ? aClass :
SK_object_getClass(aClass), aSelector, anImp, types);
+ }
+ return imp;
+}
+
+IMP SKReplaceMethodImplementationFromSelector(Class aClass, SEL aSelector, SEL
impSelector, BOOL isInstance) {
+ 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;
+}
Modified: trunk/SKSnapshotPageCell.m
===================================================================
--- trunk/SKSnapshotPageCell.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKSnapshotPageCell.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "SKSnapshotPageCell.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
NSString *SKSnapshotPageCellLabelKey = @"label";
NSString *SKSnapshotPageCellHasWindowKey = @"hasWindow";
Modified: trunk/SKSnapshotWindowController.m
===================================================================
--- trunk/SKSnapshotWindowController.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKSnapshotWindowController.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -50,7 +50,7 @@
#import "NSGeometry_SKExtensions.h"
#import "PDFPage_SKExtensions.h"
#import "SKSnapshotPageCell.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#define EM_DASH_CHARACTER 0x2014
Modified: trunk/SKTemplateParser.m
===================================================================
--- trunk/SKTemplateParser.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKTemplateParser.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -40,7 +40,7 @@
#import "SKTemplateTag.h"
#import "NSCharacterSet_SKExtensions.h"
#import "NSString_SKExtensions.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#define START_TAG_OPEN_DELIM @"<$"
#define END_TAG_OPEN_DELIM @"</$"
Modified: trunk/SKThumbnailTableView.m
===================================================================
--- trunk/SKThumbnailTableView.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKThumbnailTableView.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "SKThumbnailTableView.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
#import "SKTypeSelectHelper.h"
#import "NSColor_SKExtensions.h"
@@ -58,7 +58,7 @@
}
+ (void)load {
- originalTrackKnob = (void (*)(id, SEL, id))[self
setInstanceMethodFromSelector:@selector(replacementTrackKnob:)
forSelector:@selector(trackKnob:)];
+ originalTrackKnob = (void (*)(id, SEL,
id))SKReplaceMethodImplementationFromSelector(self, @selector(trackKnob:),
@selector(replacementTrackKnob:), YES);
}
@end
Modified: trunk/SKTypeSelectHelper.m
===================================================================
--- trunk/SKTypeSelectHelper.m 2008-08-05 21:48:38 UTC (rev 4356)
+++ trunk/SKTypeSelectHelper.m 2008-08-06 01:37:59 UTC (rev 4357)
@@ -37,7 +37,7 @@
*/
#import "SKTypeSelectHelper.h"
-#import "NSObject_SKExtensions.h"
+#import "SKRuntime.h"
static NSString *SKWindowDidChangeFirstResponderNotification =
@"SKWindowDidChangeFirstResponderNotification";
@@ -428,7 +428,7 @@
}
+ (void)load {
- originalMakeFirstResponder = (typeof(originalMakeFirstResponder))[self
setInstanceMethodFromSelector:@selector(replacementMakeFirstResponder:)
forSelector:@selector(makeFirstResponder:)];
+ originalMakeFirstResponder =
(typeof(originalMakeFirstResponder))SKReplaceMethodImplementationFromSelector(self,
@selector(makeFirstResponder:), @selector(replacementMakeFirstResponder:),
YES);
}
@end
Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj 2008-08-05 21:48:38 UTC (rev
4356)
+++ trunk/Skim.xcodeproj/project.pbxproj 2008-08-06 01:37:59 UTC (rev
4357)
@@ -39,7 +39,6 @@
8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa =
PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings =
{ATTRIBUTES = (); }; };
8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ =
{isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */;
};
CE0463CB0B84D24300C11E4A /* SKApplication.m in Sources */ =
{isa = PBXBuildFile; fileRef = CE0463CA0B84D24300C11E4A /* SKApplication.m */;
};
- CE0464A20B84E3E400C11E4A /* NSObject_SKExtensions.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CE0464A10B84E3E400C11E4A /*
NSObject_SKExtensions.m */; };
CE070EA20B89039700733CC8 /* NSScrollView_SKExtensions.m in
Sources */ = {isa = PBXBuildFile; fileRef = CE070EA10B89039700733CC8 /*
NSScrollView_SKExtensions.m */; };
CE0710170B89BDD600733CC8 /* BDSKCollapsibleView.m in Sources */
= {isa = PBXBuildFile; fileRef = CE0710120B89BDD600733CC8 /*
BDSKCollapsibleView.m */; };
CE0710180B89BDD600733CC8 /* BDSKContainerView.m in Sources */ =
{isa = PBXBuildFile; fileRef = CE0710140B89BDD600733CC8 /* BDSKContainerView.m
*/; };
@@ -444,8 +443,6 @@
A489FDE70BC8E94200BA14DD /* Italian */ = {isa =
PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings;
name = Italian; path = Italian.lproj/ZoomValues.strings; sourceTree =
"<group>"; };
CE0463C90B84D24300C11E4A /* SKApplication.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
SKApplication.h; sourceTree = "<group>"; };
CE0463CA0B84D24300C11E4A /* SKApplication.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= SKApplication.m; sourceTree = "<group>"; };
- CE0464A00B84E3E400C11E4A /* NSObject_SKExtensions.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
NSObject_SKExtensions.h; sourceTree = "<group>"; };
- CE0464A10B84E3E400C11E4A /* NSObject_SKExtensions.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= NSObject_SKExtensions.m; sourceTree = "<group>"; };
CE070EA00B89039700733CC8 /* NSScrollView_SKExtensions.h */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
path = NSScrollView_SKExtensions.h; sourceTree = "<group>"; };
CE070EA10B89039700733CC8 /* NSScrollView_SKExtensions.m */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.c.objc; path = NSScrollView_SKExtensions.m; sourceTree = "<group>";
};
CE0710110B89BDD600733CC8 /* BDSKCollapsibleView.h */ = {isa =
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path =
BDSKCollapsibleView.h; sourceTree = "<group>"; };
@@ -1156,8 +1153,6 @@
CE0EB4D50DD054DC0034DF92 /*
NSInvocation_SKExtensions.m */,
CE3401E40E01388700A7FFE6 /*
NSNumber_SKExtensions.h */,
CE3401E50E01388700A7FFE6 /*
NSNumber_SKExtensions.m */,
- CE0464A00B84E3E400C11E4A /*
NSObject_SKExtensions.h */,
- CE0464A10B84E3E400C11E4A /*
NSObject_SKExtensions.m */,
CE6C03EE0BEDF759007BF0B5 /*
NSParagraphStyle_SKExtensions.h */,
CE6C03EF0BEDF759007BF0B5 /*
NSParagraphStyle_SKExtensions.m */,
CE1E301A0BDB9D5C0011D9DD /*
NSScanner_SKExtensions.h */,
@@ -2012,7 +2007,6 @@
CE38ECD30B8093B200A1B779 /*
NSString_SKExtensions.m in Sources */,
F9CDD67B0B837A7F006363C3 /*
SKPreferenceController.m in Sources */,
CE0463CB0B84D24300C11E4A /* SKApplication.m in
Sources */,
- CE0464A20B84E3E400C11E4A /*
NSObject_SKExtensions.m in Sources */,
CE2DE4920B85D48F00D0DA12 /* SKThumbnail.m in
Sources */,
CE2DE49D0B85D4F400D0DA12 /*
SKFullScreenWindow.m in Sources */,
CE2DE4C60B85D78200D0DA12 /*
SKMiniaturizeWindow.m in Sources */,
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