| Index: chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm
|
| diff --git a/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm b/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm
|
| index 1d5466aa74b11d973a5fb81515469dbb8c626f01..3d62be62bffe8da6dd96f6ef57ca06eab5774a3a 100644
|
| --- a/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm
|
| +++ b/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm
|
| @@ -213,61 +213,6 @@ void CalculatePositionsInFrame(
|
|
|
| @end
|
|
|
| -@implementation AutocompleteTextFieldIcon
|
| -
|
| -@synthesize rect = rect_;
|
| -@synthesize view = view_;
|
| -
|
| -// Private helper.
|
| -- (id)initWithView:(LocationBarViewMac::LocationBarImageView*)view
|
| - isLabel:(BOOL)isLabel {
|
| - self = [super init];
|
| - if (self) {
|
| - isLabel_ = isLabel;
|
| - view_ = view;
|
| - rect_ = NSZeroRect;
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)initImageWithView:(LocationBarViewMac::LocationBarImageView*)view {
|
| - return [self initWithView:view isLabel:NO];
|
| -}
|
| -
|
| -- (id)initLabelWithView:(LocationBarViewMac::LocationBarImageView*)view {
|
| - return [self initWithView:view isLabel:YES];
|
| -}
|
| -
|
| -- (void)positionInFrame:(NSRect)frame {
|
| - if (isLabel_) {
|
| - NSAttributedString* label = view_->GetLabel();
|
| - DCHECK(label);
|
| - const CGFloat labelWidth = ceil([label size].width);
|
| - rect_ = NSMakeRect(NSMaxX(frame) - labelWidth,
|
| - NSMinY(frame) + kIconLabelYOffset,
|
| - labelWidth, NSHeight(frame) - kIconLabelYOffset);
|
| - } else {
|
| - const NSSize imageSize = view_->GetImageSize();
|
| - const CGFloat yOffset = floor((NSHeight(frame) - imageSize.height) / 2);
|
| - rect_ = NSMakeRect(NSMaxX(frame) - imageSize.width,
|
| - NSMinY(frame) + yOffset,
|
| - imageSize.width, imageSize.height);
|
| - }
|
| -}
|
| -
|
| -- (void)drawInView:(NSView*)controlView {
|
| - // Make sure someone called |-positionInFrame:|.
|
| - DCHECK(!NSIsEmptyRect(rect_));
|
| - if (isLabel_) {
|
| - NSAttributedString* label = view_->GetLabel();
|
| - [label drawInRect:rect_];
|
| - } else {
|
| - DrawImageInRect(view_->GetImage(), controlView, rect_);
|
| - }
|
| -}
|
| -
|
| -@end
|
| -
|
| @implementation AutocompleteTextFieldCell
|
|
|
| // @synthesize doesn't seem to compile for this transition.
|
| @@ -364,11 +309,6 @@ void CalculatePositionsInFrame(
|
| hintString_.reset();
|
| }
|
|
|
| -- (void)setContentSettingViewsList:
|
| - (LocationBarViewMac::ContentSettingViews*)views {
|
| - content_setting_views_ = views;
|
| -}
|
| -
|
| - (void)clearDecorations {
|
| leftDecorations_.clear();
|
| rightDecorations_.clear();
|
| @@ -432,16 +372,6 @@ void CalculatePositionsInFrame(
|
| // NOTE: This function must closely match the logic in
|
| // |-drawInteriorWithFrame:inView:|.
|
|
|
| - // Leave room for items on the right (SSL label, page actions, etc).
|
| - // Icons are laid out in |cellFrame| rather than |textFrame| for
|
| - // consistency with drawing code.
|
| - NSArray* icons = [self layedOutIcons:cellFrame];
|
| - if ([icons count]) {
|
| - // Max x for resulting text frame.
|
| - const CGFloat maxX = NSMinX([[icons objectAtIndex:0] rect]);
|
| - textFrame.size.width = maxX - NSMinX(textFrame);
|
| - }
|
| -
|
| // Keyword string or hint string if they fit.
|
| if (hintString_) {
|
| const CGFloat hintWidth(WidthForHint(hintString_));
|
| @@ -483,16 +413,6 @@ void CalculatePositionsInFrame(
|
| // NOTE: This function must closely match the logic in
|
| // |-textFrameForFrame:|.
|
|
|
| - NSArray* icons = [self layedOutIcons:cellFrame];
|
| - for (AutocompleteTextFieldIcon* icon in icons) {
|
| - [icon drawInView:controlView];
|
| - }
|
| - if ([icons count]) {
|
| - // Max x for resulting text frame.
|
| - const CGFloat maxX = NSMinX([[icons objectAtIndex:0] rect]);
|
| - workingFrame.size.width = maxX - NSMinX(workingFrame);
|
| - }
|
| -
|
| // Keyword string or hint string if they fit.
|
| if (hintString_) {
|
| const CGFloat hintWidth(WidthForHint(hintString_));
|
| @@ -509,57 +429,6 @@ void CalculatePositionsInFrame(
|
| [super drawInteriorWithFrame:cellFrame inView:controlView];
|
| }
|
|
|
| -- (NSArray*)layedOutIcons:(NSRect)cellFrame {
|
| - // Trim the decoration area from |cellFrame|. This is duplicate
|
| - // work WRT the caller in some cases, but locating this here is
|
| - // simpler, and this code will go away soon.
|
| - std::vector<LocationBarDecoration*> decorations;
|
| - std::vector<NSRect> decorationFrames;
|
| - CalculatePositionsInFrame(cellFrame, leftDecorations_, rightDecorations_,
|
| - &decorations, &decorationFrames, &cellFrame);
|
| -
|
| - // The set of views to display right-justified in the cell, from
|
| - // left to right.
|
| - NSMutableArray* result = [NSMutableArray array];
|
| -
|
| - // Collect the image views for bulk processing.
|
| - // TODO(shess): Refactor with LocationBarViewMac to make the
|
| - // different types of items more consistent.
|
| - std::vector<LocationBarViewMac::LocationBarImageView*> views;
|
| -
|
| - if (content_setting_views_) {
|
| - views.insert(views.end(),
|
| - content_setting_views_->begin(),
|
| - content_setting_views_->end());
|
| - }
|
| -
|
| - // Load the visible views into |result|.
|
| - for (std::vector<LocationBarViewMac::LocationBarImageView*>::const_iterator
|
| - iter = views.begin(); iter != views.end(); ++iter) {
|
| - if ((*iter)->IsVisible()) {
|
| - scoped_nsobject<AutocompleteTextFieldIcon> icon(
|
| - [[AutocompleteTextFieldIcon alloc] initImageWithView:*iter]);
|
| - [result addObject:icon];
|
| - }
|
| - }
|
| -
|
| - // Padding from right-hand decoration. There should always be at
|
| - // least one (the star).
|
| - cellFrame.size.width -= kDecorationHorizontalPad;
|
| -
|
| - // Position each view within the frame from right to left.
|
| - for (AutocompleteTextFieldIcon* icon in [result reverseObjectEnumerator]) {
|
| - [icon positionInFrame:cellFrame];
|
| -
|
| - // Trim the icon's space from the frame.
|
| - cellFrame.size.width =
|
| - NSMinX([icon rect]) - NSMinX(cellFrame) - kDecorationHorizontalPad;
|
| - }
|
| - return result;
|
| -}
|
| -
|
| -// Returns the decoration under |theEvent|, or NULL if none.
|
| -// Like |-iconForEvent:inRect:ofView:|, but for decorations.
|
| - (LocationBarDecoration*)decorationForEvent:(NSEvent*)theEvent
|
| inRect:(NSRect)cellFrame
|
| ofView:(AutocompleteTextField*)controlView
|
| @@ -582,21 +451,6 @@ void CalculatePositionsInFrame(
|
| return NULL;
|
| }
|
|
|
| -- (AutocompleteTextFieldIcon*)iconForEvent:(NSEvent*)theEvent
|
| - inRect:(NSRect)cellFrame
|
| - ofView:(AutocompleteTextField*)controlView {
|
| - const BOOL flipped = [controlView isFlipped];
|
| - const NSPoint location =
|
| - [controlView convertPoint:[theEvent locationInWindow] fromView:nil];
|
| -
|
| - for (AutocompleteTextFieldIcon* icon in [self layedOutIcons:cellFrame]) {
|
| - if (NSMouseInRect(location, [icon rect], flipped))
|
| - return icon;
|
| - }
|
| -
|
| - return nil;
|
| -}
|
| -
|
| - (NSMenu*)decorationMenuForEvent:(NSEvent*)theEvent
|
| inRect:(NSRect)cellFrame
|
| ofView:(AutocompleteTextField*)controlView {
|
| @@ -604,11 +458,6 @@ void CalculatePositionsInFrame(
|
| [self decorationForEvent:theEvent inRect:cellFrame ofView:controlView];
|
| if (decoration)
|
| return decoration->GetMenu();
|
| -
|
| - AutocompleteTextFieldIcon*
|
| - icon = [self iconForEvent:theEvent inRect:cellFrame ofView:controlView];
|
| - if (icon)
|
| - return [icon view]->GetMenu();
|
| return nil;
|
| }
|
|
|
| @@ -617,23 +466,15 @@ void CalculatePositionsInFrame(
|
| ofView:(AutocompleteTextField*)controlView {
|
| LocationBarDecoration* decoration =
|
| [self decorationForEvent:theEvent inRect:cellFrame ofView:controlView];
|
| - AutocompleteTextFieldIcon* icon =
|
| - [self iconForEvent:theEvent inRect:cellFrame ofView:controlView];
|
| - if (!decoration && !icon)
|
| + if (!decoration)
|
| return NO;
|
|
|
| - NSRect decorationRect = NSZeroRect;
|
| - if (icon) {
|
| - decorationRect = [icon rect];
|
| - } else if (decoration) {
|
| - decorationRect = [self frameForDecoration:decoration inFrame:cellFrame];
|
| - }
|
| + NSRect decorationRect =
|
| + [self frameForDecoration:decoration inFrame:cellFrame];
|
|
|
| - // If the icon is draggable, then initiate a drag if the user drags
|
| - // or holds the mouse down for awhile.
|
| - if ((icon && [icon view]->IsDraggable()) ||
|
| - (decoration && decoration->IsDraggable())) {
|
| - DCHECK(icon || decoration);
|
| + // If the decoration is draggable, then initiate a drag if the user
|
| + // drags or holds the mouse down for awhile.
|
| + if (decoration->IsDraggable()) {
|
| NSDate* timeout =
|
| [NSDate dateWithTimeIntervalSinceNow:kLocationIconDragTimeout];
|
| NSEvent* event = [NSApp nextEventMatchingMask:(NSLeftMouseDraggedMask |
|
| @@ -642,23 +483,20 @@ void CalculatePositionsInFrame(
|
| inMode:NSEventTrackingRunLoopMode
|
| dequeue:YES];
|
| if (!event || [event type] == NSLeftMouseDragged) {
|
| - NSPasteboard* pboard = nil;
|
| - if (icon) pboard = [icon view]->GetDragPasteboard();
|
| - if (decoration) pboard = decoration->GetDragPasteboard();
|
| + NSPasteboard* pboard = decoration->GetDragPasteboard();
|
| DCHECK(pboard);
|
|
|
| // TODO(shess): My understanding is that the -isFlipped
|
| // adjustment should not be necessary. But without it, the
|
| - // image is nowhere near the cursor. Perhaps the icon's rect is
|
| - // incorrectly calculated?
|
| + // image is nowhere near the cursor. Perhaps the decorations's
|
| + // rect is incorrectly calculated?
|
| // http://crbug.com/40711
|
| NSPoint dragPoint = decorationRect.origin;
|
| if ([controlView isFlipped])
|
| dragPoint.y += NSHeight(decorationRect);
|
|
|
| - NSImage* image = nil;
|
| - if (icon) image = [icon view]->GetImage();
|
| - if (decoration) image = decoration->GetDragImage();
|
| + NSImage* image = decoration->GetDragImage();
|
| + DCHECK(image);
|
| [controlView dragImage:image
|
| at:dragPoint
|
| offset:NSZeroSize
|
| @@ -673,12 +511,8 @@ void CalculatePositionsInFrame(
|
| DCHECK_EQ([event type], NSLeftMouseUp);
|
| }
|
|
|
| - if (icon) {
|
| - [icon view]->OnMousePressed(decorationRect);
|
| - } else if (decoration) {
|
| - if (!decoration->OnMousePressed(decorationRect))
|
| - return NO;
|
| - }
|
| + if (!decoration->OnMousePressed(decorationRect))
|
| + return NO;
|
|
|
| return YES;
|
| }
|
|
|