Chromium Code Reviews| Index: chrome/browser/ui/views/frame/browser_frame.cc |
| diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc |
| index e8f05e81fc21141faef468db88c386927979ce24..72334d32da7f6b3e9723e9a0dc9ea7c267284dc3 100644 |
| --- a/chrome/browser/ui/views/frame/browser_frame.cc |
| +++ b/chrome/browser/ui/views/frame/browser_frame.cc |
| @@ -24,6 +24,7 @@ |
| #include "chrome/browser/ui/views/frame/top_container_view.h" |
| #include "chrome/browser/web_applications/web_app.h" |
| #include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/pref_names.h" |
| #include "ui/aura/root_window.h" |
| #include "ui/aura/window.h" |
| #include "ui/base/hit_test.h" |
| @@ -82,6 +83,12 @@ const gfx::FontList& BrowserFrame::GetTitleFontList() { |
| } |
| void BrowserFrame::InitBrowserFrame() { |
| + use_custom_frame_pref_.Init( |
| + prefs::kUseCustomChromeFrame, |
| + browser_view_->browser()->profile()->GetPrefs(), |
| + base::Bind(&BrowserFrame::OnUseCustomChromeFrameChanged, |
| + base::Unretained(this))); |
|
msw
2014/02/11 19:32:59
Using base::Unretained is generally unsafe. Is the
Matt Giuca
2014/02/12 01:09:18
Good question.
It looks like your last sentence i
|
| + |
| native_browser_frame_ = |
| NativeBrowserFrameFactory::CreateNativeBrowserFrame(this, browser_view_); |
| views::Widget::InitParams params; |
| @@ -131,8 +138,7 @@ void BrowserFrame::InitBrowserFrame() { |
| params.wm_role_name = browser_view_->browser()->is_type_tabbed() ? |
| std::string(kX11WindowRoleBrowser) : std::string(kX11WindowRolePopup); |
| - params.remove_standard_frame = |
| - !command_line.HasSwitch(switches::kUseSystemTitleBar); |
| + params.remove_standard_frame = UseCustomFrame(); |
| #endif // defined(OS_LINUX) |
| Init(params); |
| @@ -172,6 +178,10 @@ views::View* BrowserFrame::GetFrameView() const { |
| return browser_frame_view_; |
| } |
| +bool BrowserFrame::UseCustomFrame() const { |
| + return use_custom_frame_pref_.GetValue(); |
| +} |
| + |
| /////////////////////////////////////////////////////////////////////////////// |
| // BrowserFrame, views::Widget overrides: |
| @@ -279,3 +289,10 @@ bool BrowserFrame::ShouldLeaveOffsetNearTopBorder() { |
| return !IsMaximized(); |
| } |
| #endif // OS_WIN |
| + |
| +void BrowserFrame::OnUseCustomChromeFrameChanged() { |
| + // Tell the window manager to add or remove system borders. |
| + set_frame_type(UseCustomFrame() ? Widget::FRAME_TYPE_DEFAULT |
|
msw
2014/02/11 19:32:59
If the default is force native, won't this toggle
Matt Giuca
2014/02/12 01:09:18
The default is force custom, with a weird conditio
|
| + : Widget::FRAME_TYPE_FORCE_NATIVE); |
| + FrameTypeChanged(); |
| +} |