summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/l10n_util.mm
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-26 21:45:34 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-26 21:45:34 +0000
commit96788b0612875c0d12584757b63f02112e9541a7 (patch)
treed7eb82156c83b850d2714110dd7d8bb7aad60c41 /chrome/browser/cocoa/l10n_util.mm
parent21ca7bf8f06e3b6e608f26eed8dce30515721b86 (diff)
downloadchromium_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.mm29
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