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

Unified Diff: chrome/browser/ui/views/frame/browser_non_client_frame_view.cc

Issue 1733293002: Toggle avatar color when window activation changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Convert widget observer to direct call Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/frame/browser_non_client_frame_view.h ('k') | ui/views/widget/widget.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
index b2a6caa11f4a1a742423856ffd7672b9b0d93168..c85d9931c0f1ab2e125658196f7e27086b501fca 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
@@ -31,10 +31,6 @@
#include "ui/views/background.h"
#include "ui/views/resources/grit/views_resources.h"
-#if defined(OS_WIN)
-#include "base/win/windows_version.h"
-#endif
-
BrowserNonClientFrameView::BrowserNonClientFrameView(BrowserFrame* frame,
BrowserView* browser_view)
: frame_(frame),
@@ -59,14 +55,8 @@ void BrowserNonClientFrameView::OnBrowserViewInitViewsComplete() {}
gfx::ImageSkia BrowserNonClientFrameView::GetOTRAvatarIcon() const {
if (!ui::MaterialDesignController::IsModeMaterial())
return *GetThemeProviderForProfile()->GetImageSkiaNamed(IDR_OTR_ICON);
- SkColor icon_color = SK_ColorWHITE;
-#if defined(OS_WIN)
- // On Windows 10+, we assume the native frame color is white.
- // TODO(pkasting): Read the correct frame color from the registry or APIs.
- if (GetWidget() && GetWidget()->ShouldUseNativeFrame() &&
- (base::win::GetVersion() >= base::win::VERSION_WIN10))
- icon_color = gfx::kChromeIconGrey;
-#endif
+ const SkColor icon_color = color_utils::PickContrastingColor(
+ SK_ColorWHITE, gfx::kChromeIconGrey, GetFrameColor());
return gfx::CreateVectorIcon(gfx::VectorIconId::INCOGNITO, 24, icon_color);
}
@@ -99,9 +89,10 @@ SkColor BrowserNonClientFrameView::GetFrameColor(bool active) const {
ThemeProperties::OverwritableByUserThemeProperty color_id =
active ? ThemeProperties::COLOR_FRAME
: ThemeProperties::COLOR_FRAME_INACTIVE;
- return ShouldPaintAsThemed() ? GetThemeProvider()->GetColor(color_id)
- : ThemeProperties::GetDefaultColor(
- color_id, browser_view_->IsOffTheRecord());
+ return ShouldPaintAsThemed() ?
+ GetThemeProviderForProfile()->GetColor(color_id) :
+ ThemeProperties::GetDefaultColor(color_id,
+ browser_view_->IsOffTheRecord());
}
gfx::ImageSkia BrowserNonClientFrameView::GetFrameImage(bool active) const {
@@ -195,6 +186,18 @@ void BrowserNonClientFrameView::ViewHierarchyChanged(
UpdateAvatar();
}
+void BrowserNonClientFrameView::ActivationChanged(bool active) {
+ if (ui::MaterialDesignController::IsModeMaterial()) {
+ // On Windows, while deactivating the widget, this is called before the
+ // active HWND has actually been changed. Since we want the avatar state to
+ // reflect that the window is inactive, we force NonClientFrameView to see
+ // the "correct" state as an override.
+ set_active_state_override(&active);
+ UpdateAvatar();
+ set_active_state_override(nullptr);
+ }
+}
+
void BrowserNonClientFrameView::OnProfileAdded(
const base::FilePath& profile_path) {
OnProfileAvatarChanged(profile_path);
« no previous file with comments | « chrome/browser/ui/views/frame/browser_non_client_frame_view.h ('k') | ui/views/widget/widget.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698