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

Side by Side Diff: chrome/browser/ui/cocoa/gradient_button_cell.mm

Issue 2169623002: [Material][Mac] Fixed Bookmark Items Highlight Issues (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: No highlight if it's disabled Created 4 years, 5 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
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/cocoa/gradient_button_cell.h" 5 #include "chrome/browser/ui/cocoa/gradient_button_cell.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #import "base/mac/scoped_nsobject.h" 10 #import "base/mac/scoped_nsobject.h"
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 return [super startTrackingAt:startPoint inView:controlView]; 339 return [super startTrackingAt:startPoint inView:controlView];
340 } 340 }
341 341
342 // Since we have our own drawWithFrame:, we need to also have our own 342 // Since we have our own drawWithFrame:, we need to also have our own
343 // logic for determining when the mouse is inside for honoring this 343 // logic for determining when the mouse is inside for honoring this
344 // request. 344 // request.
345 - (void)setShowsBorderOnlyWhileMouseInside:(BOOL)showOnly { 345 - (void)setShowsBorderOnlyWhileMouseInside:(BOOL)showOnly {
346 [super setShowsBorderOnlyWhileMouseInside:showOnly]; 346 [super setShowsBorderOnlyWhileMouseInside:showOnly];
347 if (showOnly) { 347 if (showOnly) {
348 [self updateTrackingAreas]; 348 [self updateTrackingAreas];
349 if ([self tag] == kMaterialStandardButtonTypeWithLimitedClickFeedback)
350 [self setHighlighted:isMouseInside_];
351 } else { 349 } else {
352 if (trackingArea_) { 350 if (trackingArea_) {
353 [[self controlView] removeTrackingArea:trackingArea_]; 351 [[self controlView] removeTrackingArea:trackingArea_];
354 trackingArea_.reset(nil); 352 trackingArea_.reset(nil);
355 if (isMouseInside_) { 353 if (isMouseInside_) {
356 isMouseInside_ = NO; 354 isMouseInside_ = NO;
357 [[self controlView] setNeedsDisplay:YES]; 355 [[self controlView] setNeedsDisplay:YES];
358 } 356 }
359 } 357 }
360 } 358 }
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 // TODO(viettrungluu): clean this up. 576 // TODO(viettrungluu): clean this up.
579 - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { 577 - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView {
580 NSRect innerFrame; 578 NSRect innerFrame;
581 NSBezierPath* innerPath = nil; 579 NSBezierPath* innerPath = nil;
582 [self getDrawParamsForFrame:cellFrame 580 [self getDrawParamsForFrame:cellFrame
583 inView:controlView 581 inView:controlView
584 innerFrame:&innerFrame 582 innerFrame:&innerFrame
585 innerPath:&innerPath 583 innerPath:&innerPath
586 clipPath:NULL]; 584 clipPath:NULL];
587 585
588 BOOL pressed = ([((NSControl*)[self controlView]) isEnabled] && 586 BOOL enabled = [((NSControl*)[self controlView]) isEnabled];
589 [self isHighlighted]); 587 BOOL pressed = enabled && [self isHighlighted];
590 NSWindow* window = [controlView window]; 588 NSWindow* window = [controlView window];
591 const ui::ThemeProvider* themeProvider = [window themeProvider]; 589 const ui::ThemeProvider* themeProvider = [window themeProvider];
592 BOOL active = [window isKeyWindow] || [window isMainWindow]; 590 BOOL active = [window isKeyWindow] || [window isMainWindow];
593 591
594 // Stroke the borders and appropriate fill gradient. If we're borderless, the 592 // Stroke the borders and appropriate fill gradient. If we're borderless, the
595 // only time we want to draw the inner gradient is if we're highlighted or if 593 // only time we want to draw the inner gradient is if we're highlighted or if
596 // we're drawing the focus ring manually. In Material Design, the "border" is 594 // we're drawing the focus ring manually. In Material Design, the "border" is
597 // actually a highlight, which should be drawn if 595 // actually a highlight, which should be drawn if
598 // |showsBorderOnlyWhileMouseInside| is true. 596 // |showsBorderOnlyWhileMouseInside| is true.
599 BOOL hasMaterialHighlight = 597 BOOL hasMaterialHighlight =
600 [self tag] == kMaterialStandardButtonTypeWithLimitedClickFeedback && 598 [self tag] == kMaterialStandardButtonTypeWithLimitedClickFeedback &&
601 ![self showsBorderOnlyWhileMouseInside]; 599 ![self showsBorderOnlyWhileMouseInside] &&
600 enabled;
602 if (([self isBordered] && ![self showsBorderOnlyWhileMouseInside]) || 601 if (([self isBordered] && ![self showsBorderOnlyWhileMouseInside]) ||
603 pressed || [self isMouseInside] || [self isContinuousPulsing] || 602 pressed || [self isMouseInside] || [self isContinuousPulsing] ||
604 hasMaterialHighlight) { 603 hasMaterialHighlight) {
605 // When pulsing we want the bookmark to stand out a little more. 604 // When pulsing we want the bookmark to stand out a little more.
606 BOOL showClickedGradient = pressed || 605 BOOL showClickedGradient = pressed ||
607 (pulseState_ == gradient_button_cell::kPulsingContinuous); 606 (pulseState_ == gradient_button_cell::kPulsingContinuous);
608 BOOL showHighlightGradient = [self isHighlighted] || hasMaterialHighlight; 607 BOOL showHighlightGradient = [self isHighlighted] || hasMaterialHighlight;
609 608
610 [self drawBorderAndFillForTheme:themeProvider 609 [self drawBorderAndFillForTheme:themeProvider
611 controlView:controlView 610 controlView:controlView
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 options:options 851 options:options
853 owner:self 852 owner:self
854 userInfo:nil]); 853 userInfo:nil]);
855 if (isMouseInside_ != mouseInView) { 854 if (isMouseInside_ != mouseInView) {
856 [self setMouseInside:mouseInView animate:NO]; 855 [self setMouseInside:mouseInView animate:NO];
857 [controlView setNeedsDisplay:YES]; 856 [controlView setNeedsDisplay:YES];
858 } 857 }
859 } 858 }
860 859
861 @end 860 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698