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

Side by Side Diff: chrome/browser/ui/views/extensions/shell_window_views.cc

Issue 11369237: Add a way to fetch window frame metrics from NativeShellWindow (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add comments Created 8 years, 1 month 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) 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/shell_window_views.h" 5 #include "chrome/browser/ui/views/extensions/shell_window_views.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/extensions/extension_host.h" 8 #include "chrome/browser/extensions/extension_host.h"
9 #include "chrome/browser/favicon/favicon_tab_helper.h" 9 #include "chrome/browser/favicon/favicon_tab_helper.h"
10 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h" 10 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h"
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 is_fullscreen_(false), 402 is_fullscreen_(false),
403 frameless_(win_params.frame == ShellWindow::CreateParams::FRAME_NONE) { 403 frameless_(win_params.frame == ShellWindow::CreateParams::FRAME_NONE) {
404 window_ = new views::Widget; 404 window_ = new views::Widget;
405 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); 405 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
406 params.delegate = this; 406 params.delegate = this;
407 params.remove_standard_frame = true; 407 params.remove_standard_frame = true;
408 params.use_system_default_icon = true; 408 params.use_system_default_icon = true;
409 minimum_size_ = win_params.minimum_size; 409 minimum_size_ = win_params.minimum_size;
410 maximum_size_ = win_params.maximum_size; 410 maximum_size_ = win_params.maximum_size;
411 window_->Init(params); 411 window_->Init(params);
412 gfx::Rect window_bounds = 412 gfx::Rect window_bounds = WindowBoundsForContentBounds(win_params.bounds);
413 window_->non_client_view()->GetWindowBoundsForClientBounds(
414 win_params.bounds);
415 // Center window if no position was specified. 413 // Center window if no position was specified.
416 if (win_params.bounds.x() == INT_MIN || win_params.bounds.y() == INT_MIN) { 414 if (win_params.bounds.x() == INT_MIN || win_params.bounds.y() == INT_MIN) {
417 window_->CenterWindow(window_bounds.size()); 415 window_->CenterWindow(window_bounds.size());
418 } else { 416 } else {
419 window_->SetBounds(window_bounds); 417 window_->SetBounds(window_bounds);
420 } 418 }
421 #if defined(OS_WIN) && !defined(USE_AURA) 419 #if defined(OS_WIN) && !defined(USE_AURA)
422 std::string app_name = web_app::GenerateApplicationNameFromExtensionId( 420 std::string app_name = web_app::GenerateApplicationNameFromExtensionId(
423 extension()->id()); 421 extension()->id());
424 ui::win::SetAppIdForWindow( 422 ui::win::SetAppIdForWindow(
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 } 565 }
568 566
569 void ShellWindowViews::FlashFrame(bool flash) { 567 void ShellWindowViews::FlashFrame(bool flash) {
570 window_->FlashFrame(flash); 568 window_->FlashFrame(flash);
571 } 569 }
572 570
573 bool ShellWindowViews::IsAlwaysOnTop() const { 571 bool ShellWindowViews::IsAlwaysOnTop() const {
574 return false; 572 return false;
575 } 573 }
576 574
575 gfx::Rect ShellWindowViews::ContentBoundsForWindowBounds(
576 const gfx::Rect& window_bounds) const {
577 if (frameless()) {
578 return window_bounds;
579 } else {
580 gfx::Rect bounds = window_bounds;
581 bounds.set_height(std::max(0, bounds.height() - kCaptionHeight));
582 return bounds;
583 }
584 }
585
586 gfx::Rect ShellWindowViews::WindowBoundsForContentBounds(
587 const gfx::Rect& content_bounds) const {
588 if (frameless()) {
589 return content_bounds;
590 } else {
591 gfx::Rect bounds = content_bounds;
592 bounds.set_height(bounds.height() + kCaptionHeight);
593 return bounds;
594 }
595 }
596
577 void ShellWindowViews::DeleteDelegate() { 597 void ShellWindowViews::DeleteDelegate() {
578 shell_window_->OnNativeClose(); 598 shell_window_->OnNativeClose();
579 } 599 }
580 600
581 bool ShellWindowViews::CanResize() const { 601 bool ShellWindowViews::CanResize() const {
582 return maximum_size_.IsEmpty() || minimum_size_ != maximum_size_; 602 return maximum_size_.IsEmpty() || minimum_size_ != maximum_size_;
583 } 603 }
584 604
585 bool ShellWindowViews::CanMaximize() const { 605 bool ShellWindowViews::CanMaximize() const {
586 return CanResize(); 606 return CanResize();
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 ui::WindowShowState show_state) { 754 ui::WindowShowState show_state) {
735 views::WidgetDelegate::SaveWindowPlacement(bounds, show_state); 755 views::WidgetDelegate::SaveWindowPlacement(bounds, show_state);
736 shell_window_->SaveWindowPosition(); 756 shell_window_->SaveWindowPosition();
737 } 757 }
738 758
739 // static 759 // static
740 NativeShellWindow* NativeShellWindow::Create( 760 NativeShellWindow* NativeShellWindow::Create(
741 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { 761 ShellWindow* shell_window, const ShellWindow::CreateParams& params) {
742 return new ShellWindowViews(shell_window, params); 762 return new ShellWindowViews(shell_window, params);
743 } 763 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698