diff options
author | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-08-27 16:45:23 +0000 |
---|---|---|
committer | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-08-27 16:45:23 +0000 |
commit | 4203884610ea0e0621aafdf5cced614447dbcd5e (patch) | |
tree | 05a08f840ba265cc01fc252e5c6e6db3d0731fa2 | |
parent | 66fc63df47cd6714ca8ff034ae3f54de5ef58ea9 (diff) |
[Author: thomasvl]
Update the textfield fixed width code to work with 10.5 (vs. 10.4 due to
a change on apple's end).
Add a unittest that captures the edge case.
R=stuartmorgan,dmaclach
DELTA=72 (66 added, 1 deleted, 5 changed)
-rw-r--r-- | AppKit/GTMUILocalizerAndLayoutTweaker.m | 9 | ||||
-rw-r--r-- | AppKit/GTMUILocalizerAndLayoutTweakerTest.m | 44 | ||||
-rw-r--r-- | AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff | bin | 0 -> 9234 bytes | |||
-rw-r--r-- | AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff | bin | 0 -> 15754 bytes | |||
-rw-r--r-- | AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff | bin | 0 -> 16292 bytes | |||
-rw-r--r-- | AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff | bin | 0 -> 19996 bytes | |||
-rw-r--r-- | GTM.xcodeproj/project.pbxproj | 20 |
7 files changed, 67 insertions, 6 deletions
diff --git a/AppKit/GTMUILocalizerAndLayoutTweaker.m b/AppKit/GTMUILocalizerAndLayoutTweaker.m index d7494b2..1b5d8aa 100644 --- a/AppKit/GTMUILocalizerAndLayoutTweaker.m +++ b/AppKit/GTMUILocalizerAndLayoutTweaker.m @@ -92,11 +92,10 @@ static BOOL IsRightAnchored(NSView *view); + (CGFloat)sizeToFitFixedWidthTextField:(NSTextField *)textField { NSRect initialFrame = [textField frame]; - NSSize newSize = [[textField cell] cellSizeForBounds:initialFrame]; - NSRect newFrame = initialFrame; - newFrame.size.height = newSize.height; - [textField setFrame:newFrame]; - return initialFrame.size.height - newSize.height; + NSRect sizeRect = NSMakeRect(0, 0, NSWidth(initialFrame), CGFLOAT_MAX); + NSSize newSize = [[textField cell] cellSizeForBounds:sizeRect]; + [textField setFrameSize:newSize]; + return newSize.height - NSHeight(initialFrame); } @end diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest.m b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m index 10e83b1..e6320d5 100644 --- a/AppKit/GTMUILocalizerAndLayoutTweakerTest.m +++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m @@ -19,7 +19,7 @@ #import "GTMSenTestCase.h" #import "GTMUILocalizerAndLayoutTweakerTest.h" #import "GTMNSObject+UnitTesting.h" -#import "GTMUILocalizer.h" +#import "GTMUILocalizerAndLayoutTweaker.h" static NSUInteger gTestPass = 0; @@ -58,6 +58,48 @@ static NSUInteger gTestPass = 0; } } +- (void)testSizeToFitFixedWidthTextField { + // In the xib, the one field is over sized, the other is undersized, this + // way we make sure the code handles both condions as there was a bahavior + // change between the 10.4 and 10.5 SDKs. + NSString *kTestStrings[] = { + @"The quick brown fox jumps over the lazy dog.", + @"The quick brown fox jumps over the lazy dog. The quick brown fox jumps " + @"over the lazy dog. The quick brown fox jumps over the lazy dog. " + @"The quick brown fox jumps over the lazy dog. The quick brown fox " + @"jumps over the lazy dog.", + @"The quick brown fox jumps over the lazy dog.\nThe quick brown fox jumps " + @"over the lazy dog.\nThe quick brown fox jumps over the lazy dog.\n" + @"The quick brown fox jumps over the lazy dog.\nThe quick brown fox " + @"jumps over the lazy dog.", + @"The quick brown fox jumps over the lazy dog. The quick brown fox jumps " + @"over the lazy dog.\nThe quick brown fox jumps over the lazy dog. " + @"The quick brown fox jumps over the lazy dog. The quick brown fox " + @"jumps over the lazy dog. The quick brown fox jumps over the lazy " + @"dog. The quick brown fox jumps over the lazy dog.\n\nThe End.", + }; + for (size_t lp = 0; lp < (sizeof(kTestStrings) / sizeof(NSString*)); ++lp) { + GTMUILocalizerAndLayoutTweakerTestWindowController *controller = + [[GTMUILocalizerAndLayoutTweakerTestWindowController alloc] + initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest3"]; + NSWindow *window = [controller window]; + STAssertNotNil(window, @"Pass %ld", (long)lp); + NSTextField *field; + GTM_FOREACH_OBJECT(field, [[window contentView] subviews]) { + STAssertTrue([field isMemberOfClass:[NSTextField class]], + @"Pass %ld", (long)lp); + [field setStringValue:kTestStrings[lp]]; + [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:field]; + } + NSString *imageName = + [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest3-%ld", + (long)lp]; + GTMAssertObjectImageEqualToImageNamed(window, imageName, + @"Pass %ld", (long)lp); + [controller release]; + } +} + @end @implementation GTMUILocalizerAndLayoutTweakerTestWindowController diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff Binary files differnew file mode 100644 index 0000000..6ea28e6 --- /dev/null +++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff Binary files differnew file mode 100644 index 0000000..fb0826c --- /dev/null +++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff Binary files differnew file mode 100644 index 0000000..a9640a0 --- /dev/null +++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff Binary files differnew file mode 100644 index 0000000..7f2f0a9 --- /dev/null +++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj index debea55..ebf1b0c 100644 --- a/GTM.xcodeproj/project.pbxproj +++ b/GTM.xcodeproj/project.pbxproj @@ -300,6 +300,11 @@ F4BC1E8D0DE1FC4A00108B7D /* GTMHTTPServerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC1E8C0DE1FC4A00108B7D /* GTMHTTPServerTest.m */; }; F4BC22D10DE4C39000108B7D /* GTMTestHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC22D00DE4C39000108B7D /* GTMTestHTTPServer.m */; }; F4CA854F0DAFAAF600B4AB10 /* GTMObjC2Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F4FC15DD1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4FC15DC1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib */; }; + F4FC16031046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */; }; + F4FC16041046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */; }; + F4FC16051046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */; }; + F4FC16061046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */; }; F4FF22780D9D4835003880AC /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; F92B9FA80E2E64B900A2FE61 /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F98680AF0E2C15C300CEE8BF /* GTMLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; F92B9FA90E2E64BC00A2FE61 /* GTMLogger+ASL.h in Headers */ = {isa = PBXBuildFile; fileRef = F98681670E2C1E3A00CEE8BF /* GTMLogger+ASL.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -666,6 +671,11 @@ F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundleGCSupported.xcconfig; sourceTree = "<group>"; }; F4CA864D0DB3ACD200B4AB10 /* SharedLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SharedLibraryGCSupported.xcconfig; sourceTree = "<group>"; }; F4CA864E0DB3ACD200B4AB10 /* StaticLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryGCSupported.xcconfig; sourceTree = "<group>"; }; + F4FC15DC1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest3.xib; sourceTree = "<group>"; }; + F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-0.tiff"; sourceTree = "<group>"; }; + F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-1.tiff"; sourceTree = "<group>"; }; + F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-2.tiff"; sourceTree = "<group>"; }; + F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-3.tiff"; sourceTree = "<group>"; }; F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugSelectorValidation.h; sourceTree = "<group>"; }; F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoggerRingBufferWriter.h; sourceTree = "<group>"; }; F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriter.m; sourceTree = "<group>"; }; @@ -904,6 +914,10 @@ F42E2D21102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff */, F42E2D22102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff */, F42E2D23102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff */, + F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */, + F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */, + F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */, + F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */, 8B409EC30F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState */, 8B409EE80F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState */, 8B409EF30F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState */, @@ -986,6 +1000,7 @@ F42E2C68102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.m */, F42E2C83102B14B0004DF054 /* GTMUILocalizerAndLayoutTweakerTest1.xib */, F42E2D07102B2283004DF054 /* GTMUILocalizerAndLayoutTweakerTest2.xib */, + F4FC15DC1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib */, 8B409E3E0F950DE900DF540E /* GTMUILocalizerTest.h */, 8B409BC50F94405A00DF540E /* GTMUILocalizerTest.m */, 8B409E8B0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib */, @@ -1563,6 +1578,11 @@ F42E2D24102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff in Resources */, F42E2D25102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff in Resources */, F42E2D26102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff in Resources */, + F4FC15DD1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib in Resources */, + F4FC16031046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff in Resources */, + F4FC16041046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff in Resources */, + F4FC16051046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff in Resources */, + F4FC16061046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; |