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

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

Issue 900613003: Mac: Make it easier for views to correctly draw with a theme. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gyp
Patch Set: Created 5 years, 10 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
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/background_gradient_view.h" 5 #include "chrome/browser/ui/cocoa/background_gradient_view.h"
6 6
7 #import "chrome/browser/themes/theme_properties.h" 7 #import "chrome/browser/themes/theme_properties.h"
8 #import "chrome/browser/themes/theme_service.h" 8 #import "chrome/browser/themes/theme_service.h"
9 #import "chrome/browser/ui/cocoa/themed_window.h" 9 #import "chrome/browser/ui/cocoa/themed_window.h"
10 #include "grit/theme_resources.h" 10 #include "grit/theme_resources.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 if (!isActive && themeProvider->UsingDefaultTheme()) { 104 if (!isActive && themeProvider->UsingDefaultTheme()) {
105 NSColor* color = themeProvider->GetNSImageColorNamed( 105 NSColor* color = themeProvider->GetNSImageColorNamed(
106 IDR_THEME_TOOLBAR_INACTIVE); 106 IDR_THEME_TOOLBAR_INACTIVE);
107 if (color) 107 if (color)
108 return color; 108 return color;
109 } 109 }
110 110
111 return themeProvider->GetNSImageColorNamed(IDR_THEME_TOOLBAR); 111 return themeProvider->GetNSImageColorNamed(IDR_THEME_TOOLBAR);
112 } 112 }
113 113
114 - (void)windowFocusDidChange:(NSNotification*)notification { 114 - (void)viewDidMoveToWindow {
Andre 2015/02/03 19:20:37 Views usually call [[self window] isMainWindow] wh
115 // Some child views will indirectly use BackgroundGradientView by calling an 115 [super viewDidMoveToWindow];
116 // ancestor's draw function (e.g, BookmarkButtonView). Call setNeedsDisplay
117 // on all descendants to ensure that these views re-draw.
118 // TODO(ccameron): Enable these views to listen for focus notifications
119 // directly.
120 [self cr_recursivelySetNeedsDisplay:YES];
121 }
122
123 - (void)viewWillMoveToWindow:(NSWindow*)window {
124 if ([self window]) { 116 if ([self window]) {
125 [[NSNotificationCenter defaultCenter]
126 removeObserver:self
127 name:NSWindowDidBecomeKeyNotification
128 object:[self window]];
129 [[NSNotificationCenter defaultCenter]
130 removeObserver:self
131 name:NSWindowDidBecomeMainNotification
132 object:[self window]];
133 }
134 if (window) {
135 [[NSNotificationCenter defaultCenter]
136 addObserver:self
137 selector:@selector(windowFocusDidChange:)
138 name:NSWindowDidBecomeMainNotification
139 object:window];
140 [[NSNotificationCenter defaultCenter]
141 addObserver:self
142 selector:@selector(windowFocusDidChange:)
143 name:NSWindowDidResignMainNotification
144 object:window];
145 // The new window for the view may have a different focus state than the 117 // The new window for the view may have a different focus state than the
146 // last window this view was part of. Force a re-draw to ensure that the 118 // last window this view was part of. Force a re-draw to ensure that the
147 // view draws the right state. 119 // view draws the right state.
148 [self windowFocusDidChange:nil]; 120 [self windowDidChangeActive];
149 } 121 }
150 [super viewWillMoveToWindow:window];
151 } 122 }
152 123
153 - (void)setFrameOrigin:(NSPoint)origin { 124 - (void)setFrameOrigin:(NSPoint)origin {
154 // The background color depends on the view's vertical position. This impacts 125 // The background color depends on the view's vertical position. This impacts
155 // any child views that draw using this view's functions. 126 // any child views that draw using this view's functions.
156 if (NSMinY([self frame]) != origin.y) 127 if (NSMinY([self frame]) != origin.y)
157 [self cr_recursivelySetNeedsDisplay:YES]; 128 [self cr_recursivelySetNeedsDisplay:YES];
158 129
159 [super setFrameOrigin:origin]; 130 [super setFrameOrigin:origin];
160 } 131 }
161 132
133 // ThemedWindowDrawing implementation.
134
135 - (void)windowDidChangeTheme {
136 [self setNeedsDisplay:YES];
137 }
138
139 - (void)windowDidChangeActive {
140 [self setNeedsDisplay:YES];
141 }
142
162 @end 143 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698