1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#import "ui/base/cocoa/controls/hover_image_menu_button_cell.h" 6 7@implementation HoverImageMenuButtonCell 8 9@synthesize hovered = hovered_; 10 11- (id)initTextCell:(NSString*)stringValue 12 pullsDown:(BOOL)pullDown { 13 if ((self = [super initTextCell:stringValue 14 pullsDown:pullDown])) { 15 [self setUsesItemFromMenu:NO]; 16 } 17 return self; 18} 19 20- (void)setHoverImage:(NSImage*)newImage { 21 if ([hoverImage_ isEqual:newImage]) 22 return; 23 24 hoverImage_.reset([newImage retain]); 25 if (hovered_) 26 [[self controlView] setNeedsDisplay:YES]; 27} 28 29- (NSImage*)hoverImage { 30 return hoverImage_; 31} 32 33- (void)setHovered:(BOOL)hovered { 34 if (hovered_ == hovered) 35 return; 36 37 hovered_ = hovered; 38 [[self controlView] setNeedsDisplay:YES]; 39} 40 41- (NSImage*)imageToDraw { 42 if ([self isHighlighted] && [self alternateImage]) 43 return [self alternateImage]; 44 45 if ([self isHovered] && [self hoverImage]) 46 return [self hoverImage]; 47 48 // Note that NSPopUpButtonCell updates the cell image when the [self menuItem] 49 // changes. 50 return [self image]; 51} 52 53- (void)setDefaultImage:(NSImage*)defaultImage { 54 base::scoped_nsobject<NSMenuItem> buttonMenuItem([[NSMenuItem alloc] init]); 55 [buttonMenuItem setImage:defaultImage]; 56 [self setMenuItem:buttonMenuItem]; 57} 58 59- (void)drawWithFrame:(NSRect)cellFrame 60 inView:(NSView*)controlView { 61 [[self imageToDraw] drawInRect:cellFrame 62 fromRect:NSZeroRect 63 operation:NSCompositeSourceOver 64 fraction:1.0 65 respectFlipped:YES 66 hints:nil]; 67} 68 69@end 70