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

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: " 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 SetBoundsInternal(new_bounds);
147 }
145 148
146 if (layout_manager_.get()) 149 void Window::SetMinimumSize(const gfx::Size& minimum_size) {
147 layout_manager_->OnWindowResized(); 150 minimum_size_ = minimum_size;
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 }
156 } 151 }
157 152
158 const gfx::Rect& Window::bounds() const { 153 const gfx::Rect& Window::bounds() const {
159 return layer_->bounds(); 154 return layer_->bounds();
160 } 155 }
161 156
162 void Window::SchedulePaintInRect(const gfx::Rect& rect) { 157 void Window::SchedulePaintInRect(const gfx::Rect& rect) {
163 layer_->SchedulePaint(rect); 158 layer_->SchedulePaint(rect);
164 } 159 }
165 160
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 parts.push_back(ui::MultiAnimation::Part(200, ui::Tween::LINEAR)); 364 parts.push_back(ui::MultiAnimation::Part(200, ui::Tween::LINEAR));
370 ui::MultiAnimation* multi_animation = new ui::MultiAnimation(parts); 365 ui::MultiAnimation* multi_animation = new ui::MultiAnimation(parts);
371 multi_animation->set_continuous(false); 366 multi_animation->set_continuous(false);
372 return multi_animation; 367 return multi_animation;
373 } 368 }
374 369
375 internal::RootWindow* Window::GetRoot() { 370 internal::RootWindow* Window::GetRoot() {
376 return parent_ ? parent_->GetRoot() : NULL; 371 return parent_ ? parent_->GetRoot() : NULL;
377 } 372 }
378 373
374 void Window::SetBoundsInternal(const gfx::Rect& new_bounds) {
375 // TODO: funnel this through the Desktop.
Ben Goodger (Google) 2011/10/14 15:40:05 You can remove this comment now.
oshima 2011/10/15 02:10:50 Done.
376 const gfx::Rect old_bounds = bounds();
377 bool was_move = old_bounds.size() == new_bounds.size();
378 layer_->SetBounds(new_bounds);
379
380 if (layout_manager_.get())
381 layout_manager_->OnWindowResized();
382 if (delegate_)
383 delegate_->OnBoundsChanged(old_bounds, new_bounds);
384 if (IsVisible()) {
385 if (was_move)
386 layer()->ScheduleDraw();
387 else
388 layer()->SchedulePaint(gfx::Rect());
389 }
390 }
391
379 void Window::SetVisible(bool visible) { 392 void Window::SetVisible(bool visible) {
380 bool was_visible = IsVisible(); 393 bool was_visible = IsVisible();
381 layer_->SetVisible(visible); 394 layer_->SetVisible(visible);
382 bool is_visible = IsVisible(); 395 bool is_visible = IsVisible();
383 if (was_visible != is_visible) { 396 if (was_visible != is_visible) {
384 SchedulePaint(); 397 SchedulePaint();
385 if (delegate_) 398 if (delegate_)
386 delegate_->OnWindowVisibilityChanged(is_visible); 399 delegate_->OnWindowVisibilityChanged(is_visible);
387 } 400 }
388 } 401 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 } 450 }
438 451
439 return delegate_ ? this : NULL; 452 return delegate_ ? this : NULL;
440 } 453 }
441 454
442 void Window::OnPaintLayer(gfx::Canvas* canvas) { 455 void Window::OnPaintLayer(gfx::Canvas* canvas) {
443 delegate_->OnPaint(canvas); 456 delegate_->OnPaint(canvas);
444 } 457 }
445 458
446 } // namespace aura 459 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698