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

Side by Side Diff: ui/aura/window.cc

Issue 8273040: Minimum size for aura window (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments. moved&merged tests Created 9 years, 2 months 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) 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 "ui/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "ui/aura/desktop.h" 10 #include "ui/aura/desktop.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 Desktop::GetInstance()->ActivateTopmostWindow(); 89 Desktop::GetInstance()->ActivateTopmostWindow();
90 } 90 }
91 } 91 }
92 92
93 bool Window::IsVisible() const { 93 bool Window::IsVisible() const {
94 return layer_->IsDrawn(); 94 return layer_->IsDrawn();
95 } 95 }
96 96
97 void Window::Maximize() { 97 void Window::Maximize() {
98 if (UpdateShowStateAndRestoreBounds(ui::SHOW_STATE_MAXIMIZED)) 98 if (UpdateShowStateAndRestoreBounds(ui::SHOW_STATE_MAXIMIZED))
99 SetBounds(gfx::Screen::GetMonitorWorkAreaNearestWindow(this)); 99 SetBoundsInternal(gfx::Screen::GetMonitorWorkAreaNearestWindow(this));
100 } 100 }
101 101
102 void Window::Fullscreen() { 102 void Window::Fullscreen() {
103 if (UpdateShowStateAndRestoreBounds(ui::SHOW_STATE_FULLSCREEN)) 103 if (UpdateShowStateAndRestoreBounds(ui::SHOW_STATE_FULLSCREEN))
104 SetBounds(gfx::Screen::GetMonitorAreaNearestWindow(this)); 104 SetBoundsInternal(gfx::Screen::GetMonitorAreaNearestWindow(this));
105 } 105 }
106 106
107 void Window::Restore() { 107 void Window::Restore() {
108 if (show_state_ != ui::SHOW_STATE_NORMAL) { 108 if (show_state_ != ui::SHOW_STATE_NORMAL) {
109 show_state_ = ui::SHOW_STATE_NORMAL; 109 show_state_ = ui::SHOW_STATE_NORMAL;
110 SetBounds(restore_bounds_); 110 SetBoundsInternal(restore_bounds_);
111 restore_bounds_.SetRect(0, 0, 0, 0); 111 restore_bounds_.SetRect(0, 0, 0, 0);
112 } 112 }
113 } 113 }
114 114
115 void Window::Activate() { 115 void Window::Activate() {
116 // If we support minimization need to ensure this restores the window first. 116 // If we support minimization need to ensure this restores the window first.
117 aura::Desktop::GetInstance()->SetActiveWindow(this, this); 117 aura::Desktop::GetInstance()->SetActiveWindow(this, this);
118 } 118 }
119 119
120 void Window::Deactivate() { 120 void Window::Deactivate() {
(...skipping 10 matching lines...) Expand all
131 131
132 const ToplevelWindowContainer* Window::AsToplevelWindowContainer() const { 132 const ToplevelWindowContainer* Window::AsToplevelWindowContainer() const {
133 return NULL; 133 return NULL;
134 } 134 }
135 135
136 void Window::SetLayoutManager(LayoutManager* layout_manager) { 136 void Window::SetLayoutManager(LayoutManager* layout_manager) {
137 layout_manager_.reset(layout_manager); 137 layout_manager_.reset(layout_manager);
138 } 138 }
139 139
140 void Window::SetBounds(const gfx::Rect& new_bounds) { 140 void Window::SetBounds(const gfx::Rect& new_bounds) {
141 // TODO: funnel this through the Desktop. 141 if (show_state_ == ui::SHOW_STATE_MAXIMIZED ||
142 gfx::Rect old_bounds = bounds(); 142 show_state_ == ui::SHOW_STATE_FULLSCREEN) {
143 bool was_move = old_bounds.size() == new_bounds.size(); 143 restore_bounds_ = new_bounds;
144 layer_->SetBounds(new_bounds); 144 return;
145
146 if (layout_manager_.get())
147 layout_manager_->OnWindowResized();
148 if (delegate_)
149 delegate_->OnBoundsChanged(old_bounds, new_bounds);
150 if (IsVisible()) {
151 if (was_move)
152 layer()->ScheduleDraw();
153 else
154 layer()->SchedulePaint(gfx::Rect());
155 } 145 }
146 SetBoundsInternal(new_bounds);
156 } 147 }
157 148
158 const gfx::Rect& Window::bounds() const { 149 const gfx::Rect& Window::bounds() const {
159 return layer_->bounds(); 150 return layer_->bounds();
160 } 151 }
161 152
162 void Window::SchedulePaintInRect(const gfx::Rect& rect) { 153 void Window::SchedulePaintInRect(const gfx::Rect& rect) {
163 layer_->SchedulePaint(rect); 154 layer_->SchedulePaint(rect);
164 } 155 }
165 156
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 parts.push_back(ui::MultiAnimation::Part(200, ui::Tween::LINEAR)); 372 parts.push_back(ui::MultiAnimation::Part(200, ui::Tween::LINEAR));
382 ui::MultiAnimation* multi_animation = new ui::MultiAnimation(parts); 373 ui::MultiAnimation* multi_animation = new ui::MultiAnimation(parts);
383 multi_animation->set_continuous(false); 374 multi_animation->set_continuous(false);
384 return multi_animation; 375 return multi_animation;
385 } 376 }
386 377
387 internal::RootWindow* Window::GetRoot() { 378 internal::RootWindow* Window::GetRoot() {
388 return parent_ ? parent_->GetRoot() : NULL; 379 return parent_ ? parent_->GetRoot() : NULL;
389 } 380 }
390 381
382 void Window::SetBoundsInternal(const gfx::Rect& new_bounds) {
383 const gfx::Rect old_bounds = bounds();
384 bool was_move = old_bounds.size() == new_bounds.size();
385 layer_->SetBounds(new_bounds);
386
387 if (layout_manager_.get())
388 layout_manager_->OnWindowResized();
389 if (delegate_)
390 delegate_->OnBoundsChanged(old_bounds, new_bounds);
391 if (IsVisible()) {
392 if (was_move)
393 layer()->ScheduleDraw();
394 else
395 layer()->SchedulePaint(gfx::Rect());
396 }
397 }
398
391 void Window::SetVisible(bool visible) { 399 void Window::SetVisible(bool visible) {
392 bool was_visible = IsVisible(); 400 bool was_visible = IsVisible();
393 layer_->SetVisible(visible); 401 layer_->SetVisible(visible);
394 bool is_visible = IsVisible(); 402 bool is_visible = IsVisible();
395 if (was_visible != is_visible) { 403 if (was_visible != is_visible) {
396 SchedulePaint(); 404 SchedulePaint();
397 if (delegate_) 405 if (delegate_)
398 delegate_->OnWindowVisibilityChanged(is_visible); 406 delegate_->OnWindowVisibilityChanged(is_visible);
399 } 407 }
400 } 408 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 } 457 }
450 458
451 return delegate_ ? this : NULL; 459 return delegate_ ? this : NULL;
452 } 460 }
453 461
454 void Window::OnPaintLayer(gfx::Canvas* canvas) { 462 void Window::OnPaintLayer(gfx::Canvas* canvas) {
455 delegate_->OnPaint(canvas); 463 delegate_->OnPaint(canvas);
456 } 464 }
457 465
458 } // namespace aura 466 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698