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

Side by Side Diff: chrome/browser/ui/views/frame/opaque_browser_frame_view_linux.cc

Issue 98793009: Linux Aura: Hide title bar when CustomFrameView maximized on Unity. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Note: kUseSystemTitleBar check moved to OpaqueBrowserFrameView. Created 6 years, 11 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_linux.h" 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_linux.h"
6 6
7 #include "base/command_line.h"
8 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h" 7 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h"
9 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h" 8 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h"
10 #include "chrome/common/chrome_switches.h"
11 #include "ui/views/linux_ui/linux_ui.h" 9 #include "ui/views/linux_ui/linux_ui.h"
12 10
13 /////////////////////////////////////////////////////////////////////////////// 11 ///////////////////////////////////////////////////////////////////////////////
14 // OpaqueBrowserFrameViewLinux, public: 12 // OpaqueBrowserFrameViewLinux, public:
15 13
16 OpaqueBrowserFrameViewLinux::OpaqueBrowserFrameViewLinux( 14 OpaqueBrowserFrameViewLinux::OpaqueBrowserFrameViewLinux(
17 OpaqueBrowserFrameView* view, 15 OpaqueBrowserFrameView* view,
18 OpaqueBrowserFrameViewLayout* layout) 16 OpaqueBrowserFrameViewLayout* layout)
19 : view_(view), 17 : view_(view),
20 layout_(layout) { 18 layout_(layout) {
21 views::LinuxUI* ui = views::LinuxUI::instance(); 19 views::LinuxUI* ui = views::LinuxUI::instance();
22 if (ui) 20 if (ui)
23 ui->AddWindowButtonOrderObserver(this); 21 ui->AddWindowButtonOrderObserver(this);
24 } 22 }
25 23
26 OpaqueBrowserFrameViewLinux::~OpaqueBrowserFrameViewLinux() { 24 OpaqueBrowserFrameViewLinux::~OpaqueBrowserFrameViewLinux() {
27 views::LinuxUI* ui = views::LinuxUI::instance(); 25 views::LinuxUI* ui = views::LinuxUI::instance();
28 if (ui) 26 if (ui)
29 ui->RemoveWindowButtonOrderObserver(this); 27 ui->RemoveWindowButtonOrderObserver(this);
30 } 28 }
31 29
32 /////////////////////////////////////////////////////////////////////////////// 30 ///////////////////////////////////////////////////////////////////////////////
33 // OpaqueBrowserFrameViewLinux, 31 // OpaqueBrowserFrameViewLinux,
34 // OpaqueBrowserFrameViewPlatformSpecific implementation:
35
36 bool OpaqueBrowserFrameViewLinux::ShouldShowCaptionButtons() const {
37 // Do not show caption buttons if the system title bar is being used.
38 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseSystemTitleBar))
39 return false;
40
41 // On Ubuntu Unity, if the window is maximized, the system will provide
42 // caption buttons, so Chrome should not add its own.
43 views::LinuxUI* ui = views::LinuxUI::instance();
44 return !(view_->IsMaximized() && ui && ui->UnityIsRunning());
45 }
46
47 bool OpaqueBrowserFrameViewLinux::ShouldShowTitleBar() const {
48 // On Ubuntu Unity, if the window is maximized, the system will provide
49 // a title bar, so Chrome should not add its own.
50 views::LinuxUI* ui = views::LinuxUI::instance();
51 return !(view_->IsMaximized() && ui && ui->UnityIsRunning());
52 }
53
54 ///////////////////////////////////////////////////////////////////////////////
55 // OpaqueBrowserFrameViewLinux,
56 // views::WindowButtonOrderObserver implementation: 32 // views::WindowButtonOrderObserver implementation:
57 33
58 void OpaqueBrowserFrameViewLinux::OnWindowButtonOrderingChange( 34 void OpaqueBrowserFrameViewLinux::OnWindowButtonOrderingChange(
59 const std::vector<views::FrameButton>& leading_buttons, 35 const std::vector<views::FrameButton>& leading_buttons,
60 const std::vector<views::FrameButton>& trailing_buttons) { 36 const std::vector<views::FrameButton>& trailing_buttons) {
61 layout_->SetButtonOrdering(leading_buttons, trailing_buttons); 37 layout_->SetButtonOrdering(leading_buttons, trailing_buttons);
62 38
63 // We can receive OnWindowButtonOrderingChange events before we've been added 39 // We can receive OnWindowButtonOrderingChange events before we've been added
64 // to a Widget. We need a Widget because layout crashes due to dependencies 40 // to a Widget. We need a Widget because layout crashes due to dependencies
65 // on a ui::ThemeProvider(). 41 // on a ui::ThemeProvider().
66 if (view_->GetWidget()) { 42 if (view_->GetWidget()) {
67 view_->Layout(); 43 view_->Layout();
68 view_->SchedulePaint(); 44 view_->SchedulePaint();
69 } 45 }
70 } 46 }
71 47
72 /////////////////////////////////////////////////////////////////////////////// 48 ///////////////////////////////////////////////////////////////////////////////
73 // OpaqueBrowserFrameViewObserver: 49 // OpaqueBrowserFrameViewObserver:
74 50
75 // static 51 // static
76 OpaqueBrowserFrameViewPlatformSpecific* 52 OpaqueBrowserFrameViewPlatformSpecific*
77 OpaqueBrowserFrameViewPlatformSpecific::Create( 53 OpaqueBrowserFrameViewPlatformSpecific::Create(
78 OpaqueBrowserFrameView* view, 54 OpaqueBrowserFrameView* view,
79 OpaqueBrowserFrameViewLayout* layout) { 55 OpaqueBrowserFrameViewLayout* layout) {
80 return new OpaqueBrowserFrameViewLinux(view, layout); 56 return new OpaqueBrowserFrameViewLinux(view, layout);
81 } 57 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698