blob: 10e93fb0b27de238b071c4d1deaf67c3d42a30c5 [file] [log] [blame]
// 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