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

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

Issue 7015051: Re-land: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 7 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/browser_frame_gtk.h" 5 #include "chrome/browser/ui/views/frame/browser_frame_gtk.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/themes/theme_service.h" 9 #include "chrome/browser/themes/theme_service.h"
10 #include "chrome/browser/themes/theme_service_factory.h" 10 #include "chrome/browser/themes/theme_service_factory.h"
11 #include "chrome/browser/ui/status_bubble.h" 11 #include "chrome/browser/ui/status_bubble.h"
12 #include "chrome/browser/ui/views/frame/app_panel_browser_frame_view.h" 12 #include "chrome/browser/ui/views/frame/app_panel_browser_frame_view.h"
13 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" 13 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
14 #include "chrome/browser/ui/views/frame/browser_root_view.h" 14 #include "chrome/browser/ui/views/frame/browser_root_view.h"
15 #include "chrome/browser/ui/views/frame/browser_view.h" 15 #include "chrome/browser/ui/views/frame/browser_view.h"
16 #include "ui/gfx/font.h" 16 #include "ui/gfx/font.h"
17 #include "views/widget/root_view.h" 17 #include "views/widget/root_view.h"
18 #include "views/window/hit_test.h" 18 #include "views/window/hit_test.h"
19 19
20 #if !defined(OS_CHROMEOS)
21 // static (Factory method.)
22 BrowserFrame* BrowserFrame::Create(BrowserView* browser_view,
23 Profile* profile) {
24 BrowserFrameGtk* frame = new BrowserFrameGtk(browser_view, profile);
25 frame->InitBrowserFrame();
26 return frame;
27 }
28 #endif
29
30 // static 20 // static
31 const gfx::Font& BrowserFrame::GetTitleFont() { 21 const gfx::Font& BrowserFrame::GetTitleFont() {
32 static gfx::Font *title_font = new gfx::Font(); 22 static gfx::Font *title_font = new gfx::Font();
33 return *title_font; 23 return *title_font;
34 } 24 }
35 25
36 BrowserFrameGtk::BrowserFrameGtk(BrowserView* browser_view, Profile* profile) 26 BrowserFrameGtk::BrowserFrameGtk(BrowserFrame* browser_frame,
37 : BrowserFrame(browser_view), 27 BrowserView* browser_view)
38 ALLOW_THIS_IN_INITIALIZER_LIST(delegate_(this)), 28 : views::WindowGtk(browser_frame),
39 browser_view_(browser_view) { 29 browser_view_(browser_view) {
40 set_native_browser_frame(this); 30 // Don't focus anything on creation, selecting a tab will set the focus.
41 browser_view_->set_frame(this); 31 set_focus_on_creation(false);
42 } 32 }
43 33
44 BrowserFrameGtk::~BrowserFrameGtk() { 34 BrowserFrameGtk::~BrowserFrameGtk() {
45 } 35 }
46 36
47 void BrowserFrameGtk::InitBrowserFrame() {
48 WindowGtk::GetWindow()->InitWindow(views::Window::InitParams(browser_view_));
49 // Don't focus anything on creation, selecting a tab will set the focus.
50 }
51
52 //////////////////////////////////////////////////////////////////////////////// 37 ////////////////////////////////////////////////////////////////////////////////
53 // BrowserFrameGtk, NativeBrowserFrame implementation: 38 // BrowserFrameGtk, NativeBrowserFrame implementation:
54 39
55 views::NativeWindow* BrowserFrameGtk::AsNativeWindow() { 40 views::NativeWindow* BrowserFrameGtk::AsNativeWindow() {
56 return this; 41 return this;
57 } 42 }
58 43
59 const views::NativeWindow* BrowserFrameGtk::AsNativeWindow() const { 44 const views::NativeWindow* BrowserFrameGtk::AsNativeWindow() const {
60 return this; 45 return this;
61 } 46 }
62 47
63 BrowserNonClientFrameView* BrowserFrameGtk::CreateBrowserNonClientFrameView() {
64 return browser::CreateBrowserNonClientFrameView(this, browser_view_);
65 }
66
67 int BrowserFrameGtk::GetMinimizeButtonOffset() const { 48 int BrowserFrameGtk::GetMinimizeButtonOffset() const {
68 NOTIMPLEMENTED(); 49 NOTIMPLEMENTED();
69 return 0; 50 return 0;
70 } 51 }
71 52
72 ThemeProvider* BrowserFrameGtk::GetThemeProviderForFrame() const {
73 // This is implemented for a different interface than GetThemeProvider is,
74 // but they mean the same things.
75 return GetThemeProvider();
76 }
77
78 bool BrowserFrameGtk::AlwaysUseNativeFrame() const {
79 return false;
80 }
81
82 void BrowserFrameGtk::TabStripDisplayModeChanged() { 53 void BrowserFrameGtk::TabStripDisplayModeChanged() {
83 if (GetRootView()->has_children()) { 54 if (GetWidget()->GetRootView()->has_children()) {
84 // Make sure the child of the root view gets Layout again. 55 // Make sure the child of the root view gets Layout again.
85 GetRootView()->GetChildViewAt(0)->InvalidateLayout(); 56 GetWidget()->GetRootView()->GetChildViewAt(0)->InvalidateLayout();
86 } 57 }
87 GetRootView()->Layout(); 58 GetWidget()->GetRootView()->Layout();
88 } 59 }
89 60
90 //////////////////////////////////////////////////////////////////////////////// 61 ////////////////////////////////////////////////////////////////////////////////
91 // BrowserFrameGtk, WindowGtk overrides : 62 // BrowserFrameGtk, WindowGtk overrides :
92 63
93 ThemeProvider* BrowserFrameGtk::GetThemeProvider() const {
94 return ThemeServiceFactory::GetForProfile(
95 browser_view_->browser()->profile());
96 }
97
98 void BrowserFrameGtk::SetInitialFocus() {
99 browser_view_->RestoreFocus();
100 }
101
102 views::RootView* BrowserFrameGtk::CreateRootView() {
103 return delegate_->DelegateCreateRootView();
104 }
105
106 bool BrowserFrameGtk::GetAccelerator(int cmd_id,
107 ui::Accelerator* accelerator) {
108 return browser_view_->GetAccelerator(cmd_id, accelerator);
109 }
110
111 views::NonClientFrameView* BrowserFrameGtk::CreateFrameViewForWindow() {
112 return delegate_->DelegateCreateFrameViewForWindow();
113 }
114
115 gboolean BrowserFrameGtk::OnWindowStateEvent(GtkWidget* widget, 64 gboolean BrowserFrameGtk::OnWindowStateEvent(GtkWidget* widget,
116 GdkEventWindowState* event) { 65 GdkEventWindowState* event) {
117 bool was_full_screen = IsFullscreen(); 66 bool was_full_screen = IsFullscreen();
118 gboolean result = views::WindowGtk::OnWindowStateEvent(widget, event); 67 gboolean result = views::WindowGtk::OnWindowStateEvent(widget, event);
119 if ((!IsVisible() || IsMinimized()) && browser_view_->GetStatusBubble()) { 68 if ((!IsVisible() || IsMinimized()) && browser_view_->GetStatusBubble()) {
120 // The window is effectively hidden. We have to hide the status bubble as 69 // The window is effectively hidden. We have to hide the status bubble as
121 // unlike windows gtk has no notion of child windows that are hidden along 70 // unlike windows gtk has no notion of child windows that are hidden along
122 // with the parent. 71 // with the parent.
123 browser_view_->GetStatusBubble()->Hide(); 72 browser_view_->GetStatusBubble()->Hide();
124 } 73 }
125 if (was_full_screen != IsFullscreen()) 74 if (was_full_screen != IsFullscreen())
126 browser_view_->FullScreenStateChanged(); 75 browser_view_->FullScreenStateChanged();
127 return result; 76 return result;
128 } 77 }
129 78
130 gboolean BrowserFrameGtk::OnConfigureEvent(GtkWidget* widget, 79 gboolean BrowserFrameGtk::OnConfigureEvent(GtkWidget* widget,
131 GdkEventConfigure* event) { 80 GdkEventConfigure* event) {
132 browser_view_->WindowMoved(); 81 browser_view_->WindowMoved();
133 return views::WindowGtk::OnConfigureEvent(widget, event); 82 return views::WindowGtk::OnConfigureEvent(widget, event);
134 } 83 }
84
85
86 ////////////////////////////////////////////////////////////////////////////////
87 // NativeBrowserFrame, public:
88
89 // static
90 NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame(
91 BrowserFrame* browser_frame,
92 BrowserView* browser_view) {
93 return new BrowserFrameGtk(browser_frame, browser_view);
94 }
95
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_gtk.h ('k') | chrome/browser/ui/views/frame/browser_frame_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698