diff --git a/AppKit/CPStringDrawing.j b/AppKit/CPStringDrawing.j index 859c23926..fbd174592 100644 --- a/AppKit/CPStringDrawing.j +++ b/AppKit/CPStringDrawing.j @@ -24,6 +24,7 @@ @import "CPPlatformString.j" +var CPStringSizeWithFontInWidthCache = {}; @implementation CPString (CPStringDrawing) @@ -50,7 +51,17 @@ - (CGSize)sizeWithFont:(CPFont)aFont inWidth:(float)aWidth { - return [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth]; + var cacheKey = self + [aFont cssString] + aWidth; + size = CPStringSizeWithFontInWidthCache[cacheKey]; + + if (size === undefined) + { + size = [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth]; + CPStringSizeWithFontInWidthCache[cacheKey] = size; + } + + return size; } + @end