| Index: ui/app_list/cocoa/app_list_pager_view.mm
|
| diff --git a/ui/app_list/cocoa/app_list_pager_view.mm b/ui/app_list/cocoa/app_list_pager_view.mm
|
| deleted file mode 100644
|
| index fc7f68cabb5d779ddf2ea4f9ac64eedac4f5bab2..0000000000000000000000000000000000000000
|
| --- a/ui/app_list/cocoa/app_list_pager_view.mm
|
| +++ /dev/null
|
| @@ -1,167 +0,0 @@
|
| -// 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/app_list/cocoa/app_list_pager_view.h"
|
| -
|
| -#include "base/mac/mac_util.h"
|
| -#include "skia/ext/skia_utils_mac.h"
|
| -#include "ui/app_list/app_list_constants.h"
|
| -#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
|
| -
|
| -namespace {
|
| -
|
| -const CGFloat kButtonHeight = 6;
|
| -const CGFloat kButtonCornerRadius = 2;
|
| -const CGFloat kButtonStripPadding = 20;
|
| -
|
| -} // namespace
|
| -
|
| -@interface AppListPagerView ()
|
| -
|
| -@property(assign, nonatomic) NSInteger hoveredSegment;
|
| -
|
| -- (NSInteger)segmentUnderLocation:(NSPoint)locationInWindow;
|
| -
|
| -@end
|
| -
|
| -@interface AppListPagerCell : NSSegmentedCell;
|
| -@end
|
| -
|
| -@implementation AppListPagerView
|
| -
|
| -@synthesize hoveredSegment = hoveredSegment_;
|
| -
|
| -+ (Class)cellClass {
|
| - return [AppListPagerCell class];
|
| -}
|
| -
|
| -- (id)init {
|
| - if ((self = [super initWithFrame:NSZeroRect])) {
|
| - trackingArea_.reset(
|
| - [[CrTrackingArea alloc] initWithRect:NSZeroRect
|
| - options:NSTrackingInVisibleRect |
|
| - NSTrackingMouseEnteredAndExited |
|
| - NSTrackingMouseMoved |
|
| - NSTrackingActiveInKeyWindow
|
| - owner:self
|
| - userInfo:nil]);
|
| - [self addTrackingArea:trackingArea_.get()];
|
| - hoveredSegment_ = -1;
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (NSInteger)findAndHighlightSegmentAtLocation:(NSPoint)locationInWindow {
|
| - NSInteger segment = [self segmentUnderLocation:locationInWindow];
|
| - [self setHoveredSegment:segment];
|
| - return segment;
|
| -}
|
| -
|
| -- (void)setHoveredSegment:(NSInteger)segment {
|
| - if (segment == hoveredSegment_)
|
| - return;
|
| -
|
| - hoveredSegment_ = segment;
|
| - [self setNeedsDisplay:YES];
|
| - return;
|
| -}
|
| -
|
| -- (NSInteger)segmentUnderLocation:(NSPoint)locationInWindow {
|
| - if ([self segmentCount] == 0)
|
| - return -1;
|
| -
|
| - NSPoint pointInView = [self convertPoint:locationInWindow
|
| - fromView:nil];
|
| - if (![self mouse:pointInView inRect:[self bounds]])
|
| - return -1;
|
| -
|
| - CGFloat segmentWidth = [self bounds].size.width / [self segmentCount];
|
| - return pointInView.x / segmentWidth;
|
| -}
|
| -
|
| -- (BOOL)isHoveredForSegment:(NSInteger)segment {
|
| - return segment == hoveredSegment_;
|
| -}
|
| -
|
| -- (void)mouseExited:(NSEvent*)theEvent {
|
| - [self setHoveredSegment:-1];
|
| -}
|
| -
|
| -- (void)mouseMoved:(NSEvent*)theEvent {
|
| - [self findAndHighlightSegmentAtLocation:[theEvent locationInWindow]];
|
| -}
|
| -
|
| -- (void)mouseDown:(NSEvent*)theEvent {
|
| - // Temporarily clear the highlight to give feedback.
|
| - [self setHoveredSegment:-1];
|
| -}
|
| -
|
| -// The stock NSSegmentedControl ignores any clicks outside the non-default
|
| -// control height, so process all clicks here.
|
| -- (void)mouseUp:(NSEvent*)theEvent {
|
| - [self findAndHighlightSegmentAtLocation:[theEvent locationInWindow]];
|
| - if (hoveredSegment_ < 0)
|
| - return;
|
| -
|
| - [self setSelectedSegment:hoveredSegment_];
|
| - [[self target] performSelector:[self action]
|
| - withObject:self];
|
| -}
|
| -
|
| -@end
|
| -
|
| -@implementation AppListPagerCell
|
| -
|
| -- (void)drawWithFrame:(NSRect)cellFrame
|
| - inView:(NSView*)controlView {
|
| - // Draw nothing if there are less than two segments.
|
| - if ([self segmentCount] < 2)
|
| - return;
|
| -
|
| - cellFrame.size.width /= [self segmentCount];
|
| - for (NSInteger i = 0; i < [self segmentCount]; ++i) {
|
| - [self drawSegment:i
|
| - inFrame:cellFrame
|
| - withView:controlView];
|
| - cellFrame.origin.x += cellFrame.size.width;
|
| - }
|
| -}
|
| -
|
| -- (void)drawSegment:(NSInteger)segment
|
| - inFrame:(NSRect)frame
|
| - withView:(NSView*)controlView {
|
| - gfx::ScopedNSGraphicsContextSaveGState context;
|
| - NSRect clipRect = NSMakeRect(
|
| - frame.origin.x + kButtonStripPadding / 2,
|
| - floor(frame.origin.y + (frame.size.height - kButtonHeight) / 2),
|
| - frame.size.width - kButtonStripPadding,
|
| - kButtonHeight);
|
| - [[NSBezierPath bezierPathWithRoundedRect:clipRect
|
| - xRadius:kButtonCornerRadius
|
| - yRadius:kButtonCornerRadius] addClip];
|
| -
|
| - AppListPagerView* pagerControl =
|
| - base::mac::ObjCCastStrict<AppListPagerView>(controlView);
|
| - SkColor backgroundColor = [pagerControl hoveredSegment] == segment ?
|
| - app_list::kPagerHoverColor :
|
| - app_list::kPagerNormalColor;
|
| -
|
| - [gfx::SkColorToSRGBNSColor(backgroundColor) set];
|
| - NSRectFill(frame);
|
| -
|
| - if (![[self target] conformsToProtocol:@protocol(AppListPagerDelegate)])
|
| - return;
|
| -
|
| - CGFloat selectedRatio = [[self target] visiblePortionOfPage:segment];
|
| - if (selectedRatio == 0.0)
|
| - return;
|
| -
|
| - [gfx::SkColorToSRGBNSColor(app_list::kPagerSelectedColor) set];
|
| - if (selectedRatio < 0)
|
| - frame.origin.x += frame.size.width + frame.size.width * selectedRatio;
|
| - frame.size.width *= fabs(selectedRatio);
|
| - NSRectFill(frame);
|
| -}
|
| -
|
| -@end
|
|
|