summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/bookmark_bar_folder_controller.mm
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-21 05:31:07 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-21 05:31:07 +0000
commited448a7628414a78a8cff6069ecf87b76faa48f2 (patch)
tree6c3603d66bd0e5fa648ae24ee2372c79ffb67ab3 /chrome/browser/cocoa/bookmark_bar_folder_controller.mm
parent8674a2cb7df6f22523fd985aadbcca1748e9d5f3 (diff)
downloadchromium_src-ed448a7628414a78a8cff6069ecf87b76faa48f2.zip
chromium_src-ed448a7628414a78a8cff6069ecf87b76faa48f2.tar.gz
chromium_src-ed448a7628414a78a8cff6069ecf87b76faa48f2.tar.bz2
UI review follow-up for m5 bookmark bar deliverables
Remove border of the (empty) bookmark item. Add arrow icons for folders in bookmark bar folder windows (but not on the bar) Scroll wheel events now scroll the bookmark bar folder windows (mostly works; has a little leak-thru) BUG=42026 TEST=see description xib change: NSScrollView changes to a BookmarkBarFolderWindowScrollView Review URL: http://codereview.chromium.org/1731001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45151 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/bookmark_bar_folder_controller.mm')
-rw-r--r--chrome/browser/cocoa/bookmark_bar_folder_controller.mm36
1 files changed, 32 insertions, 4 deletions
diff --git a/chrome/browser/cocoa/bookmark_bar_folder_controller.mm b/chrome/browser/cocoa/bookmark_bar_folder_controller.mm
index 5aa8f12..54e5c07 100644
--- a/chrome/browser/cocoa/bookmark_bar_folder_controller.mm
+++ b/chrome/browser/cocoa/bookmark_bar_folder_controller.mm
@@ -29,6 +29,11 @@ const CGFloat kBookmarkBarFolderScrollAmount =
2 * (bookmarks::kBookmarkButtonHeight +
bookmarks::kBookmarkVerticalPadding);
+// Amount to scroll for each scroll wheel delta.
+const CGFloat kBookmarkBarFolderScrollWheelAmount =
+ 1 * (bookmarks::kBookmarkButtonHeight +
+ bookmarks::kBookmarkVerticalPadding);
+
// When constraining a scrolling bookmark bar folder window to the
// screen, shrink the "constrain" by this much vertically. Currently
// this is 0.0 to avoid a problem with tracking areas leaving the
@@ -85,7 +90,7 @@ const CGFloat kScrollWindowVerticalMargin = 0.0;
[super showWindow:sender];
}
-- (NSCell*)cellForBookmarkNode:(const BookmarkNode*)child {
+- (BookmarkButtonCell*)cellForBookmarkNode:(const BookmarkNode*)child {
NSImage* image = child ? [barController_ favIconForNode:child] : nil;
NSMenu* menu = child ? child->is_folder() ? folderMenu_ : buttonMenu_ : nil;
BookmarkBarFolderButtonCell* cell =
@@ -114,9 +119,18 @@ const CGFloat kScrollWindowVerticalMargin = 0.0;
// http://crbug.com/35966
- (BookmarkButton*)makeButtonForNode:(const BookmarkNode*)node
frame:(NSRect)frame {
- NSCell* cell = [self cellForBookmarkNode:node];
+ BookmarkButtonCell* cell = [self cellForBookmarkNode:node];
DCHECK(cell);
+ // We must decide if we draw the folder arrow before we ask the cell
+ // how big it needs to be.
+ if (node && node->is_folder()) {
+ // Warning when combining code with bookmark_bar_controller.mm:
+ // this call should NOT be made for the bar buttons; only for the
+ // subfolder buttons.
+ [cell setDrawFolderArrow:YES];
+ }
+
// The "+2" is needed because, sometimes, Cocoa is off by a tad when
// returning the value it thinks it needs.
CGFloat desired = [cell cellSize].width + 2;
@@ -147,6 +161,7 @@ const CGFloat kScrollWindowVerticalMargin = 0.0;
}
} else {
[button setEnabled:NO];
+ [button setBordered:NO];
}
return button;
}
@@ -374,8 +389,12 @@ const CGFloat kScrollWindowVerticalMargin = 0.0;
windowFrame.size.height += growAmount;
windowFrame.size.height = std::min(NSHeight(windowFrame),
screenHeightMinusMargin);
- [[self window] setFrame:windowFrame display:YES];
- [self addOrUpdateScrollTracking];
+ // Don't allow scrolling to make the window smaller, ever. This
+ // conditional is important when processing scrollWheel events.
+ if (windowFrame.size.height > [[self window] frame].size.height) {
+ [[self window] setFrame:windowFrame display:YES];
+ [self addOrUpdateScrollTracking];
+ }
}
}
@@ -807,6 +826,14 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
[super close];
}
+- (void)scrollWheel:(NSEvent *)theEvent {
+ if (scrollable_) {
+ // We go negative since an NSScrollView has a flipped coordinate frame.
+ CGFloat amt = kBookmarkBarFolderScrollWheelAmount * -[theEvent deltaY];
+ [self performOneScroll:amt];
+ }
+}
+
#pragma mark Methods Forwarded to BookmarkBarController
- (IBAction)cutBookmark:(id)sender {
@@ -865,4 +892,5 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
[barController_ openBookmarkInNewWindow:sender];
}
+
@end // BookmarkBarFolderController