Update V8 to version 4.7.45.
[chromium-blink-merge.git] / ui / base / cocoa / controls / hover_image_menu_button_cell.mm
blob10e93fb0b27de238b071c4d1deaf67c3d42a30c5
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.
5 #import "ui/base/cocoa/controls/hover_image_menu_button_cell.h"
7 @implementation HoverImageMenuButtonCell
9 @synthesize hovered = hovered_;
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;
20 - (void)setHoverImage:(NSImage*)newImage {
21   if ([hoverImage_ isEqual:newImage])
22     return;
24   hoverImage_.reset([newImage retain]);
25   if (hovered_)
26     [[self controlView] setNeedsDisplay:YES];
29 - (NSImage*)hoverImage {
30   return hoverImage_;
33 - (void)setHovered:(BOOL)hovered {
34   if (hovered_ == hovered)
35     return;
37   hovered_ = hovered;
38   [[self controlView] setNeedsDisplay:YES];
41 - (NSImage*)imageToDraw {
42   if ([self isHighlighted] && [self alternateImage])
43     return [self alternateImage];
45   if ([self isHovered] && [self hoverImage])
46     return [self hoverImage];
48   // Note that NSPopUpButtonCell updates the cell image when the [self menuItem]
49   // changes.
50   return [self image];
53 - (void)setDefaultImage:(NSImage*)defaultImage {
54   base::scoped_nsobject<NSMenuItem> buttonMenuItem([[NSMenuItem alloc] init]);
55   [buttonMenuItem setImage:defaultImage];
56   [self setMenuItem:buttonMenuItem];
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];
69 @end