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

Side by Side Diff: ui/app_list/cocoa/app_list_pager_view.mm

Issue 14999013: Allow pages on the OSX app launcher to be turned while dragging. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: respond to comments Created 7 years, 7 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
« no previous file with comments | « ui/app_list/cocoa/app_list_pager_view.h ('k') | ui/app_list/cocoa/app_list_view_controller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ui/app_list/cocoa/app_list_pager_view.h" 5 #import "ui/app_list/cocoa/app_list_pager_view.h"
6 6
7 #include "base/mac/mac_util.h" 7 #include "base/mac/mac_util.h"
8 #include "skia/ext/skia_utils_mac.h" 8 #include "skia/ext/skia_utils_mac.h"
9 #include "ui/app_list/app_list_constants.h" 9 #include "ui/app_list/app_list_constants.h"
10 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h" 10 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
11 11
12 namespace { 12 namespace {
13 13
14 const CGFloat kButtonHeight = 6; 14 const CGFloat kButtonHeight = 6;
15 const CGFloat kButtonCornerRadius = 2; 15 const CGFloat kButtonCornerRadius = 2;
16 const CGFloat kButtonStripPadding = 20; 16 const CGFloat kButtonStripPadding = 20;
17 17
18 } // namespace 18 } // namespace
19 19
20 @interface AppListPagerView () 20 @interface AppListPagerView ()
21 21
22 @property(assign, nonatomic) NSInteger hoveredSegment; 22 @property(assign, nonatomic) NSInteger hoveredSegment;
23 23
24 - (NSInteger)segmentUnderEvent:(NSEvent*)theEvent; 24 - (NSInteger)segmentUnderLocation:(NSPoint)locationInWindow;
25 25
26 @end 26 @end
27 27
28 @interface AppListPagerCell : NSSegmentedCell; 28 @interface AppListPagerCell : NSSegmentedCell;
29 @end 29 @end
30 30
31 @implementation AppListPagerView 31 @implementation AppListPagerView
32 32
33 @synthesize hoveredSegment = hoveredSegment_; 33 @synthesize hoveredSegment = hoveredSegment_;
34 34
(...skipping 10 matching lines...) Expand all
45 NSTrackingMouseMoved | 45 NSTrackingMouseMoved |
46 NSTrackingActiveInKeyWindow 46 NSTrackingActiveInKeyWindow
47 owner:self 47 owner:self
48 userInfo:nil]); 48 userInfo:nil]);
49 [self addTrackingArea:trackingArea_.get()]; 49 [self addTrackingArea:trackingArea_.get()];
50 hoveredSegment_ = -1; 50 hoveredSegment_ = -1;
51 } 51 }
52 return self; 52 return self;
53 } 53 }
54 54
55 - (NSInteger)findAndHighlightSegmentAtLocation:(NSPoint)locationInWindow {
56 NSInteger segment = [self segmentUnderLocation:locationInWindow];
57 [self setHoveredSegment:segment];
58 return segment;
59 }
60
55 - (void)setHoveredSegment:(NSInteger)segment { 61 - (void)setHoveredSegment:(NSInteger)segment {
56 if (segment == hoveredSegment_) 62 if (segment == hoveredSegment_)
57 return; 63 return;
58 64
59 hoveredSegment_ = segment; 65 hoveredSegment_ = segment;
60 [self setNeedsDisplay:YES]; 66 [self setNeedsDisplay:YES];
61 return; 67 return;
62 } 68 }
63 69
64 - (NSInteger)segmentUnderEvent:(NSEvent*)theEvent { 70 - (NSInteger)segmentUnderLocation:(NSPoint)locationInWindow {
65 if ([self segmentCount] == 0) 71 if ([self segmentCount] == 0)
66 return -1; 72 return -1;
67 73
68 NSPoint pointInView = [self convertPoint:[theEvent locationInWindow] 74 NSPoint pointInView = [self convertPoint:locationInWindow
69 fromView:nil]; 75 fromView:nil];
70 if (![self mouse:pointInView inRect:[self bounds]]) 76 if (![self mouse:pointInView inRect:[self bounds]])
71 return -1; 77 return -1;
72 78
73 CGFloat segmentWidth = [self bounds].size.width / [self segmentCount]; 79 CGFloat segmentWidth = [self bounds].size.width / [self segmentCount];
74 return pointInView.x / segmentWidth; 80 return pointInView.x / segmentWidth;
75 } 81 }
76 82
77 - (BOOL)isHoveredForSegment:(NSInteger)segment { 83 - (BOOL)isHoveredForSegment:(NSInteger)segment {
78 return segment == hoveredSegment_; 84 return segment == hoveredSegment_;
79 } 85 }
80 86
81 - (void)mouseExited:(NSEvent*)theEvent { 87 - (void)mouseExited:(NSEvent*)theEvent {
82 [self setHoveredSegment:-1]; 88 [self setHoveredSegment:-1];
83 } 89 }
84 90
85 - (void)mouseMoved:(NSEvent*)theEvent { 91 - (void)mouseMoved:(NSEvent*)theEvent {
86 [self setHoveredSegment:[self segmentUnderEvent:theEvent]]; 92 [self findAndHighlightSegmentAtLocation:[theEvent locationInWindow]];
87 } 93 }
88 94
89 - (void)mouseDown:(NSEvent*)theEvent { 95 - (void)mouseDown:(NSEvent*)theEvent {
90 // Temporarily clear the highlight to give feedback. 96 // Temporarily clear the highlight to give feedback.
91 [self setHoveredSegment:-1]; 97 [self setHoveredSegment:-1];
92 } 98 }
93 99
94 // The stock NSSegmentedControl ignores any clicks outside the non-default 100 // The stock NSSegmentedControl ignores any clicks outside the non-default
95 // control height, so process all clicks here. 101 // control height, so process all clicks here.
96 - (void)mouseUp:(NSEvent*)theEvent { 102 - (void)mouseUp:(NSEvent*)theEvent {
97 [self setHoveredSegment:[self segmentUnderEvent:theEvent]]; 103 [self findAndHighlightSegmentAtLocation:[theEvent locationInWindow]];
98 if (hoveredSegment_ < 0) 104 if (hoveredSegment_ < 0)
99 return; 105 return;
100 106
101 [self setSelectedSegment:hoveredSegment_]; 107 [self setSelectedSegment:hoveredSegment_];
102 [[self target] performSelector:[self action] 108 [[self target] performSelector:[self action]
103 withObject:self]; 109 withObject:self];
104 } 110 }
105 111
106 @end 112 @end
107 113
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 return; 158 return;
153 159
154 [gfx::SkColorToCalibratedNSColor(app_list::kPagerSelectedColor) set]; 160 [gfx::SkColorToCalibratedNSColor(app_list::kPagerSelectedColor) set];
155 if (selectedRatio < 0) 161 if (selectedRatio < 0)
156 frame.origin.x += frame.size.width + frame.size.width * selectedRatio; 162 frame.origin.x += frame.size.width + frame.size.width * selectedRatio;
157 frame.size.width *= fabs(selectedRatio); 163 frame.size.width *= fabs(selectedRatio);
158 NSRectFill(frame); 164 NSRectFill(frame);
159 } 165 }
160 166
161 @end 167 @end
OLDNEW
« no previous file with comments | « ui/app_list/cocoa/app_list_pager_view.h ('k') | ui/app_list/cocoa/app_list_view_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698