| 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/ash/browser_non_client_frame_view_ash.h" | 5 #include "chrome/browser/ui/views/ash/browser_non_client_frame_view_ash.h" |
| 6 | 6 |
| 7 #include "ash/wm/frame_painter.h" | 7 #include "ash/wm/frame_painter.h" |
| 8 #include "ash/wm/workspace/frame_maximize_button.h" | 8 #include "ash/wm/workspace/frame_maximize_button.h" |
| 9 #include "ash/wm/workspace/workspace_event_filter.h" |
| 9 #include "chrome/browser/themes/theme_service.h" | 10 #include "chrome/browser/themes/theme_service.h" |
| 10 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/search/search.h" | 12 #include "chrome/browser/ui/search/search.h" |
| 12 #include "chrome/browser/ui/search/search_delegate.h" | 13 #include "chrome/browser/ui/search/search_delegate.h" |
| 13 #include "chrome/browser/ui/search/search_model.h" | 14 #include "chrome/browser/ui/search/search_model.h" |
| 14 #include "chrome/browser/ui/views/avatar_menu_button.h" | 15 #include "chrome/browser/ui/views/avatar_menu_button.h" |
| 15 #include "chrome/browser/ui/views/frame/browser_frame.h" | 16 #include "chrome/browser/ui/views/frame/browser_frame.h" |
| 16 #include "chrome/browser/ui/views/frame/browser_view.h" | 17 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 17 #include "chrome/browser/ui/views/tab_icon_view.h" | 18 #include "chrome/browser/ui/views/tab_icon_view.h" |
| 18 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 19 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 | 125 |
| 125 // static | 126 // static |
| 126 const char BrowserNonClientFrameViewAsh::kViewClassName[] = | 127 const char BrowserNonClientFrameViewAsh::kViewClassName[] = |
| 127 "BrowserNonClientFrameViewAsh"; | 128 "BrowserNonClientFrameViewAsh"; |
| 128 | 129 |
| 129 BrowserNonClientFrameViewAsh::BrowserNonClientFrameViewAsh( | 130 BrowserNonClientFrameViewAsh::BrowserNonClientFrameViewAsh( |
| 130 BrowserFrame* frame, BrowserView* browser_view) | 131 BrowserFrame* frame, BrowserView* browser_view) |
| 131 : BrowserNonClientFrameView(frame, browser_view), | 132 : BrowserNonClientFrameView(frame, browser_view), |
| 132 size_button_(NULL), | 133 size_button_(NULL), |
| 133 close_button_(NULL), | 134 close_button_(NULL), |
| 135 maximize_button_(NULL), |
| 134 window_icon_(NULL), | 136 window_icon_(NULL), |
| 135 frame_painter_(new ash::FramePainter), | 137 frame_painter_(new ash::FramePainter) { |
| 136 size_button_minimizes_(false) { | |
| 137 } | 138 } |
| 138 | 139 |
| 139 BrowserNonClientFrameViewAsh::~BrowserNonClientFrameViewAsh() { | 140 BrowserNonClientFrameViewAsh::~BrowserNonClientFrameViewAsh() { |
| 140 // A non-NULL |size_button_| means it was initialized in Init() where | 141 // A non-NULL |size_button_| means it was initialized in Init() where |
| 141 // |this| was added as observer to ToolbarSearchAnimator, so remove it now. | 142 // |this| was added as observer to ToolbarSearchAnimator, so remove it now. |
| 142 if (size_button_) { | 143 if (size_button_) { |
| 143 browser_view()->browser()->search_delegate()->toolbar_search_animator(). | 144 browser_view()->browser()->search_delegate()->toolbar_search_animator(). |
| 144 RemoveObserver(this); | 145 RemoveObserver(this); |
| 145 } | 146 } |
| 146 } | 147 } |
| 147 | 148 |
| 148 void BrowserNonClientFrameViewAsh::Init() { | 149 void BrowserNonClientFrameViewAsh::Init() { |
| 149 // Panels only minimize. | 150 // Panels only minimize. |
| 150 ash::FramePainter::SizeButtonBehavior size_button_behavior; | 151 ash::FramePainter::SizeButtonBehavior size_button_behavior; |
| 151 if (browser_view()->browser()->is_type_panel() && | 152 if (browser_view()->browser()->is_type_panel() && |
| 152 browser_view()->browser()->app_type() == Browser::APP_TYPE_CHILD) { | 153 browser_view()->browser()->app_type() == Browser::APP_TYPE_CHILD) { |
| 153 size_button_minimizes_ = true; | |
| 154 size_button_ = new views::ImageButton(this); | 154 size_button_ = new views::ImageButton(this); |
| 155 size_button_behavior = ash::FramePainter::SIZE_BUTTON_MINIMIZES; | 155 size_button_behavior = ash::FramePainter::SIZE_BUTTON_MINIMIZES; |
| 156 } else { | 156 } else { |
| 157 size_button_ = new ash::FrameMaximizeButton(this, this); | 157 maximize_button_ = new ash::FrameMaximizeButton(this, this); |
| 158 size_button_ = maximize_button_; |
| 158 size_button_behavior = ash::FramePainter::SIZE_BUTTON_MAXIMIZES; | 159 size_button_behavior = ash::FramePainter::SIZE_BUTTON_MAXIMIZES; |
| 159 } | 160 } |
| 160 size_button_->SetAccessibleName( | 161 size_button_->SetAccessibleName( |
| 161 l10n_util::GetStringUTF16(IDS_ACCNAME_MAXIMIZE)); | 162 l10n_util::GetStringUTF16(IDS_ACCNAME_MAXIMIZE)); |
| 162 AddChildView(size_button_); | 163 AddChildView(size_button_); |
| 163 close_button_ = new views::ImageButton(this); | 164 close_button_ = new views::ImageButton(this); |
| 164 close_button_->SetAccessibleName( | 165 close_button_->SetAccessibleName( |
| 165 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); | 166 l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
| 166 AddChildView(close_button_); | 167 AddChildView(close_button_); |
| 167 | 168 |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 const ui::Event& event) { | 363 const ui::Event& event) { |
| 363 // When shift-clicking slow down animations for visual debugging. | 364 // When shift-clicking slow down animations for visual debugging. |
| 364 // We used to do this via an event filter that looked for the shift key being | 365 // We used to do this via an event filter that looked for the shift key being |
| 365 // pressed but this interfered with several normal keyboard shortcuts. | 366 // pressed but this interfered with several normal keyboard shortcuts. |
| 366 if (event.IsShiftDown()) | 367 if (event.IsShiftDown()) |
| 367 ui::LayerAnimator::set_slow_animation_mode(true); | 368 ui::LayerAnimator::set_slow_animation_mode(true); |
| 368 | 369 |
| 369 if (sender == size_button_) { | 370 if (sender == size_button_) { |
| 370 // The maximize button may move out from under the cursor. | 371 // The maximize button may move out from under the cursor. |
| 371 ResetWindowControls(); | 372 ResetWindowControls(); |
| 372 if (size_button_minimizes_) | 373 if (!maximize_button_) |
| 373 frame()->Minimize(); | 374 frame()->Minimize(); |
| 374 else if (frame()->IsMaximized()) | |
| 375 frame()->Restore(); | |
| 376 else | 375 else |
| 377 frame()->Maximize(); | 376 ash::ToggleMaximizedState( |
| 377 frame()->GetFrameView()->GetWidget()->GetNativeWindow()); |
| 378 // |this| may be deleted - some windows delete their frames on maximize. | 378 // |this| may be deleted - some windows delete their frames on maximize. |
| 379 } else if (sender == close_button_) { | 379 } else if (sender == close_button_) { |
| 380 frame()->Close(); | 380 frame()->Close(); |
| 381 } | 381 } |
| 382 | 382 |
| 383 if (event.IsShiftDown()) | 383 if (event.IsShiftDown()) |
| 384 ui::LayerAnimator::set_slow_animation_mode(false); | 384 ui::LayerAnimator::set_slow_animation_mode(false); |
| 385 } | 385 } |
| 386 | 386 |
| 387 /////////////////////////////////////////////////////////////////////////////// | 387 /////////////////////////////////////////////////////////////////////////////// |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImage() const { | 603 BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImage() const { |
| 604 ui::ThemeProvider* tp = GetThemeProvider(); | 604 ui::ThemeProvider* tp = GetThemeProvider(); |
| 605 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && | 605 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
| 606 browser_view()->IsBrowserTypeNormal() && | 606 browser_view()->IsBrowserTypeNormal() && |
| 607 !browser_view()->IsOffTheRecord()) { | 607 !browser_view()->IsOffTheRecord()) { |
| 608 return tp->GetImageSkiaNamed(ShouldPaintAsActive() ? | 608 return tp->GetImageSkiaNamed(ShouldPaintAsActive() ? |
| 609 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE); | 609 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE); |
| 610 } | 610 } |
| 611 return NULL; | 611 return NULL; |
| 612 } | 612 } |
| OLD | NEW |