| Index: chrome/browser/cocoa/toolbar_controller.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/toolbar_controller.mm (revision 25732)
|
| +++ chrome/browser/cocoa/toolbar_controller.mm (working copy)
|
| @@ -4,10 +4,12 @@
|
|
|
| #import "chrome/browser/cocoa/toolbar_controller.h"
|
|
|
| +#include "app/l10n_util_mac.h"
|
| #include "base/mac_util.h"
|
| #include "base/sys_string_conversions.h"
|
| #include "base/gfx/rect.h"
|
| #include "chrome/app/chrome_dll_resource.h"
|
| +#include "chrome/browser/autocomplete/autocomplete_edit_view.h"
|
| #include "chrome/browser/autocomplete/autocomplete_popup_view.h"
|
| #import "chrome/browser/cocoa/autocomplete_text_field.h"
|
| #import "chrome/browser/cocoa/autocomplete_text_field_editor.h"
|
| @@ -17,12 +19,14 @@
|
| #import "chrome/browser/cocoa/menu_button.h"
|
| #include "chrome/browser/cocoa/nsimage_cache.h"
|
| #include "chrome/browser/profile.h"
|
| +#include "chrome/browser/search_engines/template_url_model.h"
|
| #include "chrome/browser/toolbar_model.h"
|
| #include "chrome/common/notification_details.h"
|
| #include "chrome/common/notification_observer.h"
|
| #include "chrome/common/notification_type.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/pref_service.h"
|
| +#include "grit/generated_resources.h"
|
|
|
| // Name of image in the bundle for the yellow of the star icon.
|
| static NSString* const kStarredImageName = @"starred.pdf";
|
| @@ -187,6 +191,10 @@
|
| owner:self
|
| userInfo:nil]);
|
| [[self view] addTrackingArea:trackingArea_.get()];
|
| +
|
| + // We want a dynamic tooltip on the go button, so tell the go button to ask
|
| + // use for the tooltip
|
| + [goButton_ addToolTipRect:[goButton_ bounds] owner:self userData:nil];
|
| }
|
| - (void)removeFromSuperview {
|
| NSLog(@"remove");
|
| @@ -289,10 +297,22 @@
|
|
|
| - (void)setStarredState:(BOOL)isStarred {
|
| NSImage* starImage = nil;
|
| - if (isStarred)
|
| + NSString* toolTip;
|
| + if (isStarred) {
|
| starImage = nsimage_cache::ImageNamed(kStarredImageName);
|
| + // Cache the string since we'll need it a lot
|
| + static NSString* starredToolTip =
|
| + [l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STARRED) retain];
|
| + toolTip = starredToolTip;
|
| + } else {
|
| + // Cache the string since we'll need it a lot
|
| + static NSString* starToolTip =
|
| + [l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STAR) retain];
|
| + toolTip = starToolTip;
|
| + }
|
|
|
| [(GradientButtonCell*)[starButton_ cell] setUnderlayImage:starImage];
|
| + [starButton_ setToolTip:toolTip];
|
| }
|
|
|
| - (void)setIsLoading:(BOOL)isLoading {
|
| @@ -444,6 +464,56 @@
|
| fromView:starButton_];
|
| }
|
|
|
| +- (NSString *)view:(NSView *)view
|
| + stringForToolTip:(NSToolTipTag)tag
|
| + point:(NSPoint)point
|
| + userData:(void *)userData {
|
| + DCHECK(view == goButton_);
|
| +
|
| + // Following chrome/browser/views/go_button.cc: GoButton::GetTooltipText()
|
| +
|
| + // Is it currently 'stop'?
|
| + if ([goButton_ tag] == IDC_STOP) {
|
| + return l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STOP);
|
| + }
|
| +
|
| + // It is 'go', so see what it would do...
|
| +
|
| + // Fetch the EditView and EditModel
|
| + LocationBar* locationBar = [self locationBar];
|
| + DCHECK(locationBar);
|
| + AutocompleteEditView* editView = locationBar->location_entry();
|
| + DCHECK(editView);
|
| + AutocompleteEditModel* editModel = editView->model();
|
| + DCHECK(editModel);
|
| +
|
| + std::wstring currentText(editView->GetText());
|
| + if (currentText.empty()) {
|
| + return nil;
|
| + }
|
| + string16 currentText16(WideToUTF16Hack(currentText));
|
| +
|
| + // It is simply an url it is gonna go to, build the tip with the info.
|
| + if (editModel->CurrentTextIsURL()) {
|
| + return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SITE, currentText16);
|
| + }
|
| +
|
| + // Build the tip based on what provide/template it will get.
|
| + std::wstring keyword(editModel->keyword());
|
| + TemplateURLModel* template_url_model =
|
| + editModel->profile()->GetTemplateURLModel();
|
| + const TemplateURL* provider =
|
| + (keyword.empty() || editModel->is_keyword_hint()) ?
|
| + template_url_model->GetDefaultSearchProvider() :
|
| + template_url_model->GetTemplateURLForKeyword(keyword);
|
| + if (!provider)
|
| + return nil;
|
| + std::wstring shortName(provider->AdjustedShortNameForLocaleDirection());
|
| + return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SEARCH,
|
| + WideToUTF16(shortName), currentText16);
|
| +
|
| +}
|
| +
|
| - (gfx::Rect)autocompletePopupPosition {
|
| // The popup should span from the left edge of the star button to the right
|
| // edge of the go button. The returned height is ignored.
|
|
|