Revision: 3729
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3729&view=rev
Author:   hofman
Date:     2008-04-14 03:59:16 -0700 (Mon, 14 Apr 2008)

Log Message:
-----------
Type checking, because the pboard types are not documented.

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

Modified: trunk/SKFontPicker.m
===================================================================
--- trunk/SKFontPicker.m        2008-04-14 10:27:28 UTC (rev 3728)
+++ trunk/SKFontPicker.m        2008-04-14 10:59:16 UTC (rev 3729)
@@ -433,18 +433,23 @@
     @try {
         if ([type isEqualToString:SKNSFontPanelDescriptorsPboardType]) {
             NSData *data = [pboard dataForType:type];
-            NSDictionary *dict = [NSKeyedUnarchiver 
unarchiveObjectWithData:data];
-            NSArray *fontDescriptors = [dict 
objectForKey:SKNSFontCollectionFontDescriptors];
-            NSFontDescriptor *fontDescriptor = [fontDescriptors count] ? 
[fontDescriptors objectAtIndex:0] : nil;
-            NSNumber *size = [[fontDescriptor fontAttributes] 
objectForKey:NSFontSizeAttribute];
-            if (size == nil)
-                size = [dict objectForKey:NSFontSizeAttribute];
-            float fontSize = size ? [size floatValue] : [self fontSize];
-            droppedFont = [NSFont fontWithDescriptor:fontDescriptor 
size:fontSize];
+            NSDictionary *dict = [data isKindOfClass:[NSData class]] ? 
[NSKeyedUnarchiver unarchiveObjectWithData:data] : nil;
+            if ([dict isKindOfClass:[NSDictionary class]]) {
+                NSArray *fontDescriptors = [dict 
objectForKey:SKNSFontCollectionFontDescriptors];
+                NSFontDescriptor *fontDescriptor = ([fontDescriptors 
isKindOfClass:[NSArray class]] && [fontDescriptors count]) ? [fontDescriptors 
objectAtIndex:0] : nil;
+                if ([fontDescriptor isKindOfClass:[NSFontDescriptor class]]) {
+                    NSNumber *size = [[fontDescriptor fontAttributes] 
objectForKey:NSFontSizeAttribute];
+                    if (size == nil)
+                        size = [dict objectForKey:NSFontSizeAttribute];
+                    float fontSize = [size 
respondsToSelector:@selector(floatValue)] ? [size floatValue] : [self fontSize];
+                    droppedFont = [NSFont fontWithDescriptor:fontDescriptor 
size:fontSize];
+                }
+            }
         } else if ([type isEqualToString:SKNSFontPanelFamiliesPboardType]) {
             NSArray *families = [pboard propertyListForType:type];
-            NSString *family = [families count] ? [families objectAtIndex:0] : 
nil;
-            droppedFont = [[NSFontManager sharedFontManager] convertFont:[self 
font] toFamily:family];
+            NSString *family = ([families isKindOfClass:[NSArray class]] && 
[families count]) ? [families objectAtIndex:0] : nil;
+            if ([family isKindOfClass:[NSString class]])
+                droppedFont = [[NSFontManager sharedFontManager] 
convertFont:[self font] toFamily:family];
         }
     }
     @catch (id exception) {


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 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to