File: hover_image_menu_button_cell.mm

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (69 lines) | stat: -rw-r--r-- 1,797 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// 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