Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "views/widget/native_widget_views.h" | 5 #include "views/widget/native_widget_views.h" |
| 6 | 6 |
| 7 #include "ui/gfx/compositor/compositor.h" | 7 #include "ui/gfx/compositor/compositor.h" |
| 8 #include "views/desktop/desktop_window_view.h" | |
| 9 #include "views/view.h" | 8 #include "views/view.h" |
| 10 #include "views/views_delegate.h" | 9 #include "views/views_delegate.h" |
| 11 #include "views/widget/native_widget_view.h" | 10 #include "views/widget/native_widget_view.h" |
| 12 #include "views/widget/root_view.h" | 11 #include "views/widget/root_view.h" |
| 13 #include "views/widget/window_manager.h" | 12 #include "views/widget/window_manager.h" |
| 14 | 13 |
| 15 #if defined(HAVE_IBUS) | 14 #if defined(HAVE_IBUS) |
| 16 #include "views/ime/input_method_ibus.h" | 15 #include "views/ime/input_method_ibus.h" |
| 17 #else | 16 #else |
| 18 #include "views/ime/mock_input_method.h" | 17 #include "views/ime/mock_input_method.h" |
| 19 #endif | 18 #endif |
| 20 | 19 |
| 21 #if defined(OS_LINUX) | 20 #if defined(OS_LINUX) |
| 22 #include "views/window/hit_test.h" | 21 #include "views/window/hit_test.h" |
| 23 #endif | 22 #endif |
| 24 | 23 |
| 25 namespace views { | 24 namespace views { |
| 26 | 25 |
| 27 //////////////////////////////////////////////////////////////////////////////// | 26 //////////////////////////////////////////////////////////////////////////////// |
| 28 // NativeWidgetViews, public: | 27 // NativeWidgetViews, public: |
| 29 | 28 |
| 30 NativeWidgetViews::NativeWidgetViews(internal::NativeWidgetDelegate* delegate) | 29 NativeWidgetViews::NativeWidgetViews(internal::NativeWidgetDelegate* delegate) |
| 31 : delegate_(delegate), | 30 : delegate_(delegate), |
| 32 view_(NULL), | 31 view_(NULL), |
| 33 active_(false), | 32 active_(false), |
| 34 minimized_(false), | 33 window_state_(ui::SHOW_STATE_DEFAULT), |
| 35 always_on_top_(false), | 34 always_on_top_(false), |
| 36 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), | 35 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), |
| 37 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), | 36 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
| 38 delete_native_view_(true) { | 37 delete_native_view_(true) { |
| 39 } | 38 } |
| 40 | 39 |
| 41 NativeWidgetViews::~NativeWidgetViews() { | 40 NativeWidgetViews::~NativeWidgetViews() { |
| 42 delegate_->OnNativeWidgetDestroying(); | 41 delegate_->OnNativeWidgetDestroying(); |
| 43 | 42 |
| 44 if (view_ && delete_native_view_) { | 43 if (view_ && delete_native_view_) { |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 403 | 402 |
| 404 void NativeWidgetViews::SetAlwaysOnTop(bool on_top) { | 403 void NativeWidgetViews::SetAlwaysOnTop(bool on_top) { |
| 405 always_on_top_ = on_top; | 404 always_on_top_ = on_top; |
| 406 // This is not complete yet. At least |MoveToTop| will need to be updated to | 405 // This is not complete yet. At least |MoveToTop| will need to be updated to |
| 407 // make sure a 'normal' window does not get on top of a window with | 406 // make sure a 'normal' window does not get on top of a window with |
| 408 // |always_on_top_| set. | 407 // |always_on_top_| set. |
| 409 NOTIMPLEMENTED(); | 408 NOTIMPLEMENTED(); |
| 410 } | 409 } |
| 411 | 410 |
| 412 void NativeWidgetViews::Maximize() { | 411 void NativeWidgetViews::Maximize() { |
| 413 NOTIMPLEMENTED(); | 412 if (window_state_ == ui::SHOW_STATE_MAXIMIZED) |
| 413 return; | |
| 414 | |
| 415 // Remember bounds and transform to use when unmaximized. | |
| 416 restored_bounds_ = view_->bounds(); | |
|
sky
2011/09/22 17:59:10
Should we only do this if we're not minimized?
sadrul
2011/09/22 18:24:45
Yep. Good catch. Made this change here and also in
| |
| 417 restored_transform_ = view_->GetTransform(); | |
| 418 | |
| 419 window_state_ = ui::SHOW_STATE_MAXIMIZED; | |
| 420 gfx::Size size = GetParentNativeWidget()->GetWindowScreenBounds().size(); | |
| 421 SetBounds(gfx::Rect(gfx::Point(), size)); | |
| 414 } | 422 } |
| 415 | 423 |
| 416 void NativeWidgetViews::Minimize() { | 424 void NativeWidgetViews::Minimize() { |
| 417 gfx::Rect view_bounds = view_->bounds(); | 425 gfx::Rect view_bounds = view_->bounds(); |
| 418 gfx::Rect parent_bounds = view_->parent()->bounds(); | 426 gfx::Rect parent_bounds = view_->parent()->bounds(); |
| 419 | 427 |
| 420 restored_bounds_ = view_bounds; | 428 restored_bounds_ = view_bounds; |
| 421 restored_transform_ = view_->GetTransform(); | 429 restored_transform_ = view_->GetTransform(); |
| 422 | 430 |
| 423 float aspect_ratio = static_cast<float>(view_bounds.width()) / | 431 float aspect_ratio = static_cast<float>(view_bounds.width()) / |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 434 int target_y = parent_bounds.height() - target_size - 20; | 442 int target_y = parent_bounds.height() - target_size - 20; |
| 435 | 443 |
| 436 view_->SetBounds( | 444 view_->SetBounds( |
| 437 target_x, target_y, view_bounds.width(), view_bounds.height()); | 445 target_x, target_y, view_bounds.width(), view_bounds.height()); |
| 438 | 446 |
| 439 ui::Transform transform; | 447 ui::Transform transform; |
| 440 transform.SetScale((float)target_width / (float)view_bounds.width(), | 448 transform.SetScale((float)target_width / (float)view_bounds.width(), |
| 441 (float)target_height / (float)view_bounds.height()); | 449 (float)target_height / (float)view_bounds.height()); |
| 442 view_->SetTransform(transform); | 450 view_->SetTransform(transform); |
| 443 | 451 |
| 444 minimized_ = true; | 452 window_state_ = ui::SHOW_STATE_MINIMIZED; |
| 445 } | 453 } |
| 446 | 454 |
| 447 bool NativeWidgetViews::IsMaximized() const { | 455 bool NativeWidgetViews::IsMaximized() const { |
| 448 // NOTIMPLEMENTED(); | 456 return window_state_ == ui::SHOW_STATE_MAXIMIZED; |
| 449 return false; | |
| 450 } | 457 } |
| 451 | 458 |
| 452 bool NativeWidgetViews::IsMinimized() const { | 459 bool NativeWidgetViews::IsMinimized() const { |
| 453 return minimized_; | 460 return window_state_ == ui::SHOW_STATE_MINIMIZED; |
| 454 } | 461 } |
| 455 | 462 |
| 456 void NativeWidgetViews::Restore() { | 463 void NativeWidgetViews::Restore() { |
| 457 minimized_ = false; | 464 window_state_ = ui::SHOW_STATE_NORMAL; |
| 458 view_->SetBoundsRect(restored_bounds_); | 465 view_->SetBoundsRect(restored_bounds_); |
| 459 view_->SetTransform(restored_transform_); | 466 view_->SetTransform(restored_transform_); |
| 460 } | 467 } |
| 461 | 468 |
| 462 void NativeWidgetViews::SetFullscreen(bool fullscreen) { | 469 void NativeWidgetViews::SetFullscreen(bool fullscreen) { |
| 463 NOTIMPLEMENTED(); | 470 NOTIMPLEMENTED(); |
| 464 } | 471 } |
| 465 | 472 |
| 466 bool NativeWidgetViews::IsFullscreen() const { | 473 bool NativeWidgetViews::IsFullscreen() const { |
| 467 // NOTIMPLEMENTED(); | 474 // NOTIMPLEMENTED(); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 581 } | 588 } |
| 582 default: | 589 default: |
| 583 // Everything else falls into standard client event handling. | 590 // Everything else falls into standard client event handling. |
| 584 break; | 591 break; |
| 585 } | 592 } |
| 586 } | 593 } |
| 587 return false; | 594 return false; |
| 588 } | 595 } |
| 589 | 596 |
| 590 } // namespace views | 597 } // namespace views |
| OLD | NEW |