diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-22 19:20:40 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-22 19:20:40 +0000 |
commit | 242503c64503eef50c858af8ac35d71dd598220a (patch) | |
tree | 1e76303233c743565d2c4a324c8ae2fe7a68c9af /views | |
parent | 6dfff6333eb5442582369195386fedce84395a72 (diff) | |
download | chromium_src-242503c64503eef50c858af8ac35d71dd598220a.zip chromium_src-242503c64503eef50c858af8ac35d71dd598220a.tar.gz chromium_src-242503c64503eef50c858af8ac35d71dd598220a.tar.bz2 |
NativeWidgetViews: Implement Maximize.
BUG=none
TEST=manually
Review URL: http://codereview.chromium.org/7925006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102330 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/widget/native_widget_views.cc | 31 | ||||
-rw-r--r-- | views/widget/native_widget_views.h | 3 |
2 files changed, 23 insertions, 11 deletions
diff --git a/views/widget/native_widget_views.cc b/views/widget/native_widget_views.cc index bd0e56f..d6f14c4 100644 --- a/views/widget/native_widget_views.cc +++ b/views/widget/native_widget_views.cc @@ -5,7 +5,6 @@ #include "views/widget/native_widget_views.h" #include "ui/gfx/compositor/compositor.h" -#include "views/desktop/desktop_window_view.h" #include "views/view.h" #include "views/views_delegate.h" #include "views/widget/native_widget_view.h" @@ -31,7 +30,7 @@ NativeWidgetViews::NativeWidgetViews(internal::NativeWidgetDelegate* delegate) : delegate_(delegate), view_(NULL), active_(false), - minimized_(false), + window_state_(ui::SHOW_STATE_DEFAULT), always_on_top_(false), ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), @@ -410,15 +409,28 @@ void NativeWidgetViews::SetAlwaysOnTop(bool on_top) { } void NativeWidgetViews::Maximize() { - NOTIMPLEMENTED(); + if (window_state_ == ui::SHOW_STATE_MAXIMIZED) + return; + + if (window_state_ != ui::SHOW_STATE_MINIMIZED) { + // Remember bounds and transform to use when unmaximized. + restored_bounds_ = view_->bounds(); + restored_transform_ = view_->GetTransform(); + } + + window_state_ = ui::SHOW_STATE_MAXIMIZED; + gfx::Size size = GetParentNativeWidget()->GetWindowScreenBounds().size(); + SetBounds(gfx::Rect(gfx::Point(), size)); } void NativeWidgetViews::Minimize() { gfx::Rect view_bounds = view_->bounds(); gfx::Rect parent_bounds = view_->parent()->bounds(); - restored_bounds_ = view_bounds; - restored_transform_ = view_->GetTransform(); + if (window_state_ != ui::SHOW_STATE_MAXIMIZED) { + restored_bounds_ = view_bounds; + restored_transform_ = view_->GetTransform(); + } float aspect_ratio = static_cast<float>(view_bounds.width()) / static_cast<float>(view_bounds.height()); @@ -441,20 +453,19 @@ void NativeWidgetViews::Minimize() { (float)target_height / (float)view_bounds.height()); view_->SetTransform(transform); - minimized_ = true; + window_state_ = ui::SHOW_STATE_MINIMIZED; } bool NativeWidgetViews::IsMaximized() const { - // NOTIMPLEMENTED(); - return false; + return window_state_ == ui::SHOW_STATE_MAXIMIZED; } bool NativeWidgetViews::IsMinimized() const { - return minimized_; + return window_state_ == ui::SHOW_STATE_MINIMIZED; } void NativeWidgetViews::Restore() { - minimized_ = false; + window_state_ = ui::SHOW_STATE_NORMAL; view_->SetBoundsRect(restored_bounds_); view_->SetTransform(restored_transform_); } diff --git a/views/widget/native_widget_views.h b/views/widget/native_widget_views.h index 3a0d004..6dcef52 100644 --- a/views/widget/native_widget_views.h +++ b/views/widget/native_widget_views.h @@ -9,6 +9,7 @@ #include <map> #include "base/message_loop.h" +#include "ui/base/ui_base_types.h" #include "ui/gfx/transform.h" #include "views/widget/native_widget_private.h" #include "views/widget/widget.h" @@ -155,7 +156,7 @@ class VIEWS_EXPORT NativeWidgetViews : public internal::NativeWidgetPrivate { bool active_; - bool minimized_; + ui::WindowShowState window_state_; // Set when SetAlwaysOnTop is called, or keep_on_top is set during creation. bool always_on_top_; |