diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-26 21:45:34 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-26 21:45:34 +0000 |
commit | 96788b0612875c0d12584757b63f02112e9541a7 (patch) | |
tree | d7eb82156c83b850d2714110dd7d8bb7aad60c41 /chrome/browser/cocoa/l10n_util.mm | |
parent | 21ca7bf8f06e3b6e608f26eed8dce30515721b86 (diff) | |
download | chromium_src-96788b0612875c0d12584757b63f02112e9541a7.zip chromium_src-96788b0612875c0d12584757b63f02112e9541a7.tar.gz chromium_src-96788b0612875c0d12584757b63f02112e9541a7.tar.bz2 |
Mac: First run bubble.
Add a BaseBubbleController. Move ContentBlockedBubbleController to use it (other bubbles will follow in later CLs), add FIrstRunBubbleController which uses it.
Move some l10n stuff to l10n_util and use that, too.
Update first run code to actually call the bubble code. Fix a double free while I'm at it (the scoped_ptr<> in DoFirstRun() already does the freeing, no need to do it in FirstRunDone())
BUG=27489,36366
TEST=Firstrun bubble shows up when starting chrome with --first-run, doesn't if starting chrome without that flag. Content blocked bubbles still work.
Review URL: http://codereview.chromium.org/2822026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50940 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/l10n_util.mm')
-rw-r--r-- | chrome/browser/cocoa/l10n_util.mm | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/l10n_util.mm b/chrome/browser/cocoa/l10n_util.mm index 91691ed..e39bdb3 100644 --- a/chrome/browser/cocoa/l10n_util.mm +++ b/chrome/browser/cocoa/l10n_util.mm @@ -4,6 +4,8 @@ #import "chrome/browser/cocoa/l10n_util.h" +#include "base/string_util.h" +#include "base/sys_string_conversions.h" #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h" namespace cocoa_l10n_util { @@ -46,4 +48,31 @@ NSSize WrapOrSizeToFit(NSView* view) { return [GTMUILocalizerAndLayoutTweaker sizeToFitView:view]; } +CGFloat VerticallyReflowGroup(NSArray* views) { + views = [views sortedArrayUsingFunction:CompareFrameY + context:NULL]; + CGFloat localVerticalShift = 0; + for (NSInteger index = [views count] - 1; index >= 0; --index) { + NSView* view = [views objectAtIndex:index]; + + NSSize delta = WrapOrSizeToFit(view); + localVerticalShift += delta.height; + if (localVerticalShift) { + NSPoint origin = [view frame].origin; + origin.y -= localVerticalShift; + [view setFrameOrigin:origin]; + } + } + return localVerticalShift; +} + +NSString* ReplaceNSStringPlaceholders(NSString* formatString, + const string16& a, + size_t* offset) { + return base::SysUTF16ToNSString( + ReplaceStringPlaceholders(base::SysNSStringToUTF16(formatString), + a, + offset)); +} + } // namespace cocoa_l10n_util |