OLD | NEW |
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/views/extensions/native_app_window_views.h" | 5 #include "chrome/browser/ui/views/extensions/native_app_window_views.h" |
6 | 6 |
7 #include "chrome/browser/extensions/extension_host.h" | 7 #include "chrome/browser/extensions/extension_host.h" |
8 #include "chrome/browser/favicon/favicon_tab_helper.h" | 8 #include "chrome/browser/favicon/favicon_tab_helper.h" |
9 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views
.h" | 9 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views
.h" |
10 #include "chrome/browser/ui/views/extensions/shell_window_frame_view.h" | 10 #include "chrome/browser/ui/views/extensions/shell_window_frame_view.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 web_view_->SetWebContents(NULL); | 71 web_view_->SetWebContents(NULL); |
72 } | 72 } |
73 | 73 |
74 void NativeAppWindowViews::InitializeDefaultWindow( | 74 void NativeAppWindowViews::InitializeDefaultWindow( |
75 const ShellWindow::CreateParams& create_params) { | 75 const ShellWindow::CreateParams& create_params) { |
76 views::Widget::InitParams init_params(views::Widget::InitParams::TYPE_WINDOW); | 76 views::Widget::InitParams init_params(views::Widget::InitParams::TYPE_WINDOW); |
77 init_params.delegate = this; | 77 init_params.delegate = this; |
78 init_params.remove_standard_frame = true; | 78 init_params.remove_standard_frame = true; |
79 init_params.use_system_default_icon = true; | 79 init_params.use_system_default_icon = true; |
80 window_->Init(init_params); | 80 window_->Init(init_params); |
81 gfx::Rect window_bounds = | 81 gfx::Rect window_bounds = create_params.bounds; |
82 window_->non_client_view()->GetWindowBoundsForClientBounds( | 82 window_bounds.Inset(-GetFrameInsets()); |
83 create_params.bounds); | |
84 // Center window if no position was specified. | 83 // Center window if no position was specified. |
85 if (create_params.bounds.x() == INT_MIN || | 84 if (create_params.bounds.x() == INT_MIN || |
86 create_params.bounds.y() == INT_MIN) { | 85 create_params.bounds.y() == INT_MIN) { |
87 window_->CenterWindow(window_bounds.size()); | 86 window_->CenterWindow(window_bounds.size()); |
88 } else { | 87 } else { |
89 window_->SetBounds(window_bounds); | 88 window_->SetBounds(window_bounds); |
90 } | 89 } |
91 | 90 |
92 #if defined(OS_WIN) && !defined(USE_AURA) | 91 #if defined(OS_WIN) && !defined(USE_AURA) |
93 std::string app_name = web_app::GenerateApplicationNameFromExtensionId( | 92 std::string app_name = web_app::GenerateApplicationNameFromExtensionId( |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 } | 202 } |
204 | 203 |
205 void NativeAppWindowViews::FlashFrame(bool flash) { | 204 void NativeAppWindowViews::FlashFrame(bool flash) { |
206 window_->FlashFrame(flash); | 205 window_->FlashFrame(flash); |
207 } | 206 } |
208 | 207 |
209 bool NativeAppWindowViews::IsAlwaysOnTop() const { | 208 bool NativeAppWindowViews::IsAlwaysOnTop() const { |
210 return shell_window_->window_type() == ShellWindow::WINDOW_TYPE_PANEL; | 209 return shell_window_->window_type() == ShellWindow::WINDOW_TYPE_PANEL; |
211 } | 210 } |
212 | 211 |
| 212 gfx::Insets NativeAppWindowViews::GetFrameInsets() const { |
| 213 if (frameless()) |
| 214 return gfx::Insets(); |
| 215 |
| 216 // The pretend client_bounds passed in need to be large enough to ensure that |
| 217 // GetWindowBoundsForClientBounds() doesn't decide that it needs more than |
| 218 // the specified amount of space to fit the window controls in, and return a |
| 219 // number larger than the real frame insets. Most window controls are smaller |
| 220 // than 1000x1000px, so this should be big enough. |
| 221 gfx::Rect client_bounds = gfx::Rect(1000, 1000); |
| 222 gfx::Rect window_bounds = |
| 223 window_->non_client_view()->GetWindowBoundsForClientBounds( |
| 224 client_bounds); |
| 225 return window_bounds.InsetsFrom(client_bounds); |
| 226 } |
| 227 |
213 // Private method. TODO(stevenjb): Move this below InitializePanelWindow() | 228 // Private method. TODO(stevenjb): Move this below InitializePanelWindow() |
214 // to match declaration order. | 229 // to match declaration order. |
215 void NativeAppWindowViews::OnViewWasResized() { | 230 void NativeAppWindowViews::OnViewWasResized() { |
216 // TODO(jeremya): this doesn't seem like a terribly elegant way to keep the | 231 // TODO(jeremya): this doesn't seem like a terribly elegant way to keep the |
217 // window shape in sync. | 232 // window shape in sync. |
218 #if defined(OS_WIN) && !defined(USE_AURA) | 233 #if defined(OS_WIN) && !defined(USE_AURA) |
219 // Set the window shape of the RWHV. | 234 // Set the window shape of the RWHV. |
220 DCHECK(window_); | 235 DCHECK(window_); |
221 DCHECK(web_view_); | 236 DCHECK(web_view_); |
222 gfx::Size sz = web_view_->size(); | 237 gfx::Size sz = web_view_->size(); |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 } | 476 } |
462 | 477 |
463 //------------------------------------------------------------------------------ | 478 //------------------------------------------------------------------------------ |
464 // NativeAppWindow::Create | 479 // NativeAppWindow::Create |
465 | 480 |
466 // static | 481 // static |
467 NativeAppWindow* NativeAppWindow::Create( | 482 NativeAppWindow* NativeAppWindow::Create( |
468 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { | 483 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { |
469 return new NativeAppWindowViews(shell_window, params); | 484 return new NativeAppWindowViews(shell_window, params); |
470 } | 485 } |
OLD | NEW |