diff --git a/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib b/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib index 7617cdeba..3809f3a8f 100644 Binary files a/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib and b/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib differ diff --git a/macosx/StringAdditions.h b/macosx/StringAdditions.h index 7a1aa2d68..02b9208fc 100644 --- a/macosx/StringAdditions.h +++ b/macosx/StringAdditions.h @@ -39,4 +39,6 @@ - (NSAttributedString *) attributedStringFittingInWidth: (float) width attributes: (NSDictionary *) attributes; +- (NSComparisonResult) compareIP: (NSString *) string; + @end diff --git a/macosx/StringAdditions.m b/macosx/StringAdditions.m index b40e84e69..a6ec45ec6 100644 --- a/macosx/StringAdditions.m +++ b/macosx/StringAdditions.m @@ -157,4 +157,31 @@ attributes: attributes] autorelease]; } +- (NSComparisonResult) compareIP: (NSString *) string +{ + if ([self isEqualToString: string]) + return NSOrderedSame; + + NSEnumerator * selfSections = [[self componentsSeparatedByString: @"."] objectEnumerator], + * newSections = [[string componentsSeparatedByString: @"."] objectEnumerator]; + + NSComparisonResult result; + NSString * selfString = [selfSections nextObject], * newString = [newSections nextObject]; + while (selfString && newString) + { + if ((result = [selfString compare: newString options: NSNumericSearch]) != NSOrderedSame) + return result; + + selfString = [selfSections nextObject]; + newString = [newSections nextObject]; + } + + if (selfString) + return NSOrderedDescending; + else if (newString) + return NSOrderedAscending; + else + return NSOrderedSame; +} + @end