| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ui/base/cocoa/controls/hover_image_menu_button_cell.h" |
| |
| @implementation HoverImageMenuButtonCell |
| |
| @synthesize hovered = hovered_; |
| |
| - (id)initTextCell:(NSString*)stringValue |
| pullsDown:(BOOL)pullDown { |
| if ((self = [super initTextCell:stringValue |
| pullsDown:pullDown])) { |
| [self setUsesItemFromMenu:NO]; |
| } |
| return self; |
| } |
| |
| - (void)setHoverImage:(NSImage*)newImage { |
| if ([hoverImage_ isEqual:newImage]) |
| return; |
| |
| hoverImage_.reset([newImage retain]); |
| if (hovered_) |
| [[self controlView] setNeedsDisplay:YES]; |
| } |
| |
| - (NSImage*)hoverImage { |
| return hoverImage_; |
| } |
| |
| - (void)setHovered:(BOOL)hovered { |
| if (hovered_ == hovered) |
| return; |
| |
| hovered_ = hovered; |
| [[self controlView] setNeedsDisplay:YES]; |
| } |
| |
| - (NSImage*)imageToDraw { |
| if ([self isHighlighted] && [self alternateImage]) |
| return [self alternateImage]; |
| |
| if ([self isHovered] && [self hoverImage]) |
| return [self hoverImage]; |
| |
| // Note that NSPopUpButtonCell updates the cell image when the [self menuItem] |
| // changes. |
| return [self image]; |
| } |
| |
| - (void)setDefaultImage:(NSImage*)defaultImage { |
| base::scoped_nsobject<NSMenuItem> buttonMenuItem([[NSMenuItem alloc] init]); |
| [buttonMenuItem setImage:defaultImage]; |
| [self setMenuItem:buttonMenuItem]; |
| } |
| |
| - (void)drawWithFrame:(NSRect)cellFrame |
| inView:(NSView*)controlView { |
| [[self imageToDraw] drawInRect:cellFrame |
| fromRect:NSZeroRect |
| operation:NSCompositeSourceOver |
| fraction:1.0 |
| respectFlipped:YES |
| hints:nil]; |
| } |
| |
| @end |