summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-22 19:20:40 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-22 19:20:40 +0000
commit242503c64503eef50c858af8ac35d71dd598220a (patch)
tree1e76303233c743565d2c4a324c8ae2fe7a68c9af /views
parent6dfff6333eb5442582369195386fedce84395a72 (diff)
downloadchromium_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.cc31
-rw-r--r--views/widget/native_widget_views.h3
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_;