aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-08-27 16:45:23 +0000
committerGravatar gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2009-08-27 16:45:23 +0000
commit4203884610ea0e0621aafdf5cced614447dbcd5e (patch)
tree05a08f840ba265cc01fc252e5c6e6db3d0731fa2
parent66fc63df47cd6714ca8ff034ae3f54de5ef58ea9 (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.m9
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest.m44
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiffbin0 -> 9234 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiffbin0 -> 15754 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiffbin0 -> 16292 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiffbin0 -> 19996 bytes
-rw-r--r--GTM.xcodeproj/project.pbxproj20
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
new file mode 100644
index 0000000..6ea28e6
--- /dev/null
+++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff
new file mode 100644
index 0000000..fb0826c
--- /dev/null
+++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff
new file mode 100644
index 0000000..a9640a0
--- /dev/null
+++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff
new file mode 100644
index 0000000..7f2f0a9
--- /dev/null
+++ b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff
Binary files differ
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;
};