Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: chrome/browser/cocoa/bookmark_button_cell.mm

Issue 1709004: size --> cellSize adjustment (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/cocoa/bookmark_button_cell.h" 5 #import "chrome/browser/cocoa/bookmark_button_cell.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/nsimage_cache_mac.h"
9 #include "base/sys_string_conversions.h" 10 #include "base/sys_string_conversions.h"
10 #import "chrome/browser/bookmarks/bookmark_model.h" 11 #import "chrome/browser/bookmarks/bookmark_model.h"
11 #import "chrome/browser/cocoa/bookmark_menu.h" 12 #import "chrome/browser/cocoa/bookmark_menu.h"
13 #import "chrome/browser/cocoa/bookmark_button.h"
12 #include "grit/generated_resources.h" 14 #include "grit/generated_resources.h"
13 15
14 16
15 @interface BookmarkButtonCell(Private) 17 @interface BookmarkButtonCell(Private)
16 - (void)configureBookmarkButtonCell; 18 - (void)configureBookmarkButtonCell;
17 @end 19 @end
18 20
19 21
20 @implementation BookmarkButtonCell 22 @implementation BookmarkButtonCell
21 23
22 @synthesize startingChildIndex = startingChildIndex_; 24 @synthesize startingChildIndex = startingChildIndex_;
25 @synthesize drawFolderArrow = drawFolderArrow_;
23 26
24 + (id)buttonCellForNode:(const BookmarkNode*)node 27 + (id)buttonCellForNode:(const BookmarkNode*)node
25 contextMenu:(NSMenu*)contextMenu 28 contextMenu:(NSMenu*)contextMenu
26 cellText:(NSString*)cellText 29 cellText:(NSString*)cellText
27 cellImage:(NSImage*)cellImage { 30 cellImage:(NSImage*)cellImage {
28 id buttonCell = 31 id buttonCell =
29 [[[BookmarkButtonCell alloc] initForNode:node 32 [[[BookmarkButtonCell alloc] initForNode:node
30 contextMenu:contextMenu 33 contextMenu:contextMenu
31 cellText:cellText 34 cellText:cellText
32 cellImage:cellImage] 35 cellImage:cellImage]
(...skipping 13 matching lines...) Expand all
46 if (node) { 49 if (node) {
47 NSString* title = base::SysWideToNSString(node->GetTitle()); 50 NSString* title = base::SysWideToNSString(node->GetTitle());
48 [self setBookmarkCellText:title image:cellImage]; 51 [self setBookmarkCellText:title image:cellImage];
49 [self setMenu:contextMenu]; 52 [self setMenu:contextMenu];
50 } else { 53 } else {
51 [self setEmpty:YES]; 54 [self setEmpty:YES];
52 [self setBookmarkCellText:l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU) 55 [self setBookmarkCellText:l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU)
53 image:nil]; 56 image:nil];
54 } 57 }
55 } 58 }
59
56 return self; 60 return self;
57 } 61 }
58 62
59 - (id)initTextCell:(NSString*)string { 63 - (id)initTextCell:(NSString*)string {
60 return [self initForNode:nil contextMenu:nil cellText:string cellImage:nil]; 64 return [self initForNode:nil contextMenu:nil cellText:string cellImage:nil];
61 } 65 }
62 66
63 // Used by the off-the-side menu, the only case where a 67 // Used by the off-the-side menu, the only case where a
64 // BookmarkButtonCell is loaded from a nib. 68 // BookmarkButtonCell is loaded from a nib.
65 - (void)awakeFromNib { 69 - (void)awakeFromNib {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 [super mouseEntered:event]; 173 [super mouseEntered:event];
170 [[self controlView] mouseEntered:event]; 174 [[self controlView] mouseEntered:event];
171 } 175 }
172 176
173 // See comment above mouseEntered:, above. 177 // See comment above mouseEntered:, above.
174 - (void)mouseExited:(NSEvent*)event { 178 - (void)mouseExited:(NSEvent*)event {
175 [super mouseExited:event]; 179 [super mouseExited:event];
176 [[self controlView] mouseExited:event]; 180 [[self controlView] mouseExited:event];
177 } 181 }
178 182
183 - (void)setDrawFolderArrow:(BOOL)draw {
184 drawFolderArrow_ = draw;
185 if (draw && !arrowImage_) {
186 arrowImage_.reset([nsimage_cache::ImageNamed(@"menu_hierarchy_arrow.pdf")
187 retain]);
188 }
189 }
190
191 // Add extra size for the arrow so it doesn't overlap the text.
192 // Does not sanity check to be sure this is actually a folder node.
193 - (NSSize)cellSize {
194 NSSize cellSize = [super cellSize];
195 if (drawFolderArrow_) {
196 cellSize.width += [arrowImage_ size].width; // plus margin?
197 }
198 return cellSize;
199 }
200
201 // Override cell drawing to add a submenu arrow like a real menu.
202 - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView {
203 // First draw "everything else".
204 [super drawInteriorWithFrame:cellFrame inView:controlView];
205
206 // If asked to do so, and if a folder, draw the arrow.
207 if (!drawFolderArrow_)
208 return;
209 BookmarkButton* button = static_cast<BookmarkButton*>([self controlView]);
210 DCHECK([button respondsToSelector:@selector(isFolder)]);
211 if ([button isFolder]) {
212 NSRect imageRect = NSZeroRect;
213 imageRect.size = [arrowImage_ size];
214 NSRect drawRect = NSOffsetRect(imageRect,
215 NSWidth(cellFrame) - NSWidth(imageRect),
216 (NSHeight(cellFrame) / 2.0) -
217 (NSHeight(imageRect) / 2.0));
218 [arrowImage_ setFlipped:[controlView isFlipped]];
219 [arrowImage_ drawInRect:drawRect
220 fromRect:imageRect
221 operation:NSCompositeSourceOver
222 fraction:[self isEnabled] ? 1.0 : 0.5];
223 }
224 }
225
179 @end 226 @end
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/bookmark_button_cell.h ('k') | chrome/browser/cocoa/bookmark_button_cell_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698