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_aura.h" | 5 #include "views/widget/native_widget_aura.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "ui/aura/aura_constants.h" |
8 #include "ui/aura/desktop.h" | 9 #include "ui/aura/desktop.h" |
9 #include "ui/aura/event.h" | 10 #include "ui/aura/event.h" |
10 #include "ui/aura/window.h" | 11 #include "ui/aura/window.h" |
11 #include "ui/aura/window_types.h" | 12 #include "ui/aura/window_types.h" |
12 #include "ui/base/ui_base_types.h" | 13 #include "ui/base/ui_base_types.h" |
13 #include "ui/gfx/canvas.h" | 14 #include "ui/gfx/canvas.h" |
14 #include "ui/gfx/compositor/layer.h" | 15 #include "ui/gfx/compositor/layer.h" |
15 #include "ui/gfx/font.h" | 16 #include "ui/gfx/font.h" |
16 #include "ui/gfx/screen.h" | 17 #include "ui/gfx/screen.h" |
17 #include "views/widget/native_widget_delegate.h" | 18 #include "views/widget/native_widget_delegate.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 | 89 |
89 //////////////////////////////////////////////////////////////////////////////// | 90 //////////////////////////////////////////////////////////////////////////////// |
90 // NativeWidgetAura, internal::NativeWidgetPrivate implementation: | 91 // NativeWidgetAura, internal::NativeWidgetPrivate implementation: |
91 | 92 |
92 void NativeWidgetAura::InitNativeWidget(const Widget::InitParams& params) { | 93 void NativeWidgetAura::InitNativeWidget(const Widget::InitParams& params) { |
93 ownership_ = params.ownership; | 94 ownership_ = params.ownership; |
94 window_->set_user_data(this); | 95 window_->set_user_data(this); |
95 Widget::InitParams::Type window_type = | 96 Widget::InitParams::Type window_type = |
96 params.child ? Widget::InitParams::TYPE_CONTROL : params.type; | 97 params.child ? Widget::InitParams::TYPE_CONTROL : params.type; |
97 window_->SetType(GetAuraWindowTypeForWidgetType(window_type)); | 98 window_->SetType(GetAuraWindowTypeForWidgetType(window_type)); |
| 99 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_NORMAL); |
98 window_->Init(params.create_texture_for_layer ? | 100 window_->Init(params.create_texture_for_layer ? |
99 ui::Layer::LAYER_HAS_TEXTURE : | 101 ui::Layer::LAYER_HAS_TEXTURE : |
100 ui::Layer::LAYER_HAS_NO_TEXTURE); | 102 ui::Layer::LAYER_HAS_NO_TEXTURE); |
101 if (window_type == Widget::InitParams::TYPE_CONTROL) | 103 if (window_type == Widget::InitParams::TYPE_CONTROL) |
102 window_->Show(); | 104 window_->Show(); |
103 | 105 |
104 // TODO(beng): respect |params| authoritah wrt transparency. | 106 // TODO(beng): respect |params| authoritah wrt transparency. |
105 window_->layer()->SetFillsBoundsOpaquely(false); | 107 window_->layer()->SetFillsBoundsOpaquely(false); |
106 delegate_->OnNativeWidgetCreated(); | 108 delegate_->OnNativeWidgetCreated(); |
107 window_->set_minimum_size(delegate_->GetMinimumSize()); | 109 window_->set_minimum_size(delegate_->GetMinimumSize()); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 const gfx::Rect parent_bounds = window_->parent()->bounds(); | 244 const gfx::Rect parent_bounds = window_->parent()->bounds(); |
243 window_->SetBounds(gfx::Rect((parent_bounds.width() - size.width())/2, | 245 window_->SetBounds(gfx::Rect((parent_bounds.width() - size.width())/2, |
244 (parent_bounds.height() - size.height())/2, | 246 (parent_bounds.height() - size.height())/2, |
245 size.width(), | 247 size.width(), |
246 size.height())); | 248 size.height())); |
247 } | 249 } |
248 | 250 |
249 void NativeWidgetAura::GetWindowPlacement( | 251 void NativeWidgetAura::GetWindowPlacement( |
250 gfx::Rect* bounds, | 252 gfx::Rect* bounds, |
251 ui::WindowShowState* maximized) const { | 253 ui::WindowShowState* maximized) const { |
252 *maximized = window_->show_state(); | 254 *maximized = static_cast<ui::WindowShowState>( |
| 255 window_->GetIntProperty(aura::kShowStateKey)); |
253 } | 256 } |
254 | 257 |
255 void NativeWidgetAura::SetWindowTitle(const string16& title) { | 258 void NativeWidgetAura::SetWindowTitle(const string16& title) { |
256 // Aura doesn't have native window frames. | 259 // Aura doesn't have native window frames. |
257 } | 260 } |
258 | 261 |
259 void NativeWidgetAura::SetWindowIcons(const SkBitmap& window_icon, | 262 void NativeWidgetAura::SetWindowIcons(const SkBitmap& window_icon, |
260 const SkBitmap& app_icon) { | 263 const SkBitmap& app_icon) { |
261 // Aura doesn't have window icons. | 264 // Aura doesn't have window icons. |
262 } | 265 } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 window_->Show(); | 341 window_->Show(); |
339 } | 342 } |
340 | 343 |
341 void NativeWidgetAura::Hide() { | 344 void NativeWidgetAura::Hide() { |
342 window_->Hide(); | 345 window_->Hide(); |
343 } | 346 } |
344 | 347 |
345 void NativeWidgetAura::ShowMaximizedWithBounds( | 348 void NativeWidgetAura::ShowMaximizedWithBounds( |
346 const gfx::Rect& restored_bounds) { | 349 const gfx::Rect& restored_bounds) { |
347 window_->SetBounds(restored_bounds); | 350 window_->SetBounds(restored_bounds); |
348 window_->Maximize(); | 351 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
349 window_->Show(); | 352 window_->Show(); |
350 } | 353 } |
351 | 354 |
352 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { | 355 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { |
353 switch(state) { | 356 if (state == ui::SHOW_STATE_MAXIMIZED || |
354 case ui::SHOW_STATE_MAXIMIZED: | 357 state == ui::SHOW_STATE_FULLSCREEN) { |
355 window_->Maximize(); | 358 window_->SetIntProperty(aura::kShowStateKey, state); |
356 break; | |
357 case ui::SHOW_STATE_FULLSCREEN: | |
358 window_->Fullscreen(); | |
359 break; | |
360 default: | |
361 break; | |
362 } | 359 } |
363 window_->Show(); | 360 window_->Show(); |
364 } | 361 } |
365 | 362 |
366 bool NativeWidgetAura::IsVisible() const { | 363 bool NativeWidgetAura::IsVisible() const { |
367 return window_->IsVisible(); | 364 return window_->IsVisible(); |
368 } | 365 } |
369 | 366 |
370 void NativeWidgetAura::Activate() { | 367 void NativeWidgetAura::Activate() { |
371 window_->Activate(); | 368 window_->Activate(); |
372 } | 369 } |
373 | 370 |
374 void NativeWidgetAura::Deactivate() { | 371 void NativeWidgetAura::Deactivate() { |
375 window_->Deactivate(); | 372 window_->Deactivate(); |
376 } | 373 } |
377 | 374 |
378 bool NativeWidgetAura::IsActive() const { | 375 bool NativeWidgetAura::IsActive() const { |
379 return aura::Desktop::GetInstance()->active_window() == window_; | 376 return aura::Desktop::GetInstance()->active_window() == window_; |
380 } | 377 } |
381 | 378 |
382 void NativeWidgetAura::SetAlwaysOnTop(bool on_top) { | 379 void NativeWidgetAura::SetAlwaysOnTop(bool on_top) { |
383 NOTIMPLEMENTED(); | 380 NOTIMPLEMENTED(); |
384 } | 381 } |
385 | 382 |
386 void NativeWidgetAura::Maximize() { | 383 void NativeWidgetAura::Maximize() { |
387 window_->Maximize(); | 384 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
388 } | 385 } |
389 | 386 |
390 void NativeWidgetAura::Minimize() { | 387 void NativeWidgetAura::Minimize() { |
391 NOTIMPLEMENTED(); | 388 NOTIMPLEMENTED(); |
392 } | 389 } |
393 | 390 |
394 bool NativeWidgetAura::IsMaximized() const { | 391 bool NativeWidgetAura::IsMaximized() const { |
395 return window_->show_state() == ui::SHOW_STATE_MAXIMIZED; | 392 return window_->GetIntProperty(aura::kShowStateKey) == |
| 393 ui::SHOW_STATE_MAXIMIZED; |
396 } | 394 } |
397 | 395 |
398 bool NativeWidgetAura::IsMinimized() const { | 396 bool NativeWidgetAura::IsMinimized() const { |
399 return window_->show_state() == ui::SHOW_STATE_MINIMIZED; | 397 return window_->GetIntProperty(aura::kShowStateKey) == |
| 398 ui::SHOW_STATE_MINIMIZED; |
400 } | 399 } |
401 | 400 |
402 void NativeWidgetAura::Restore() { | 401 void NativeWidgetAura::Restore() { |
403 window_->Restore(); | 402 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_NORMAL); |
404 } | 403 } |
405 | 404 |
406 void NativeWidgetAura::SetFullscreen(bool fullscreen) { | 405 void NativeWidgetAura::SetFullscreen(bool fullscreen) { |
407 fullscreen ? window_->Fullscreen() : window_->Restore(); | 406 window_->SetIntProperty( |
| 407 aura::kShowStateKey, |
| 408 fullscreen ? ui::SHOW_STATE_FULLSCREEN : ui::SHOW_STATE_NORMAL); |
408 } | 409 } |
409 | 410 |
410 bool NativeWidgetAura::IsFullscreen() const { | 411 bool NativeWidgetAura::IsFullscreen() const { |
411 return window_->show_state() == ui::SHOW_STATE_FULLSCREEN; | 412 return window_->GetIntProperty(aura::kShowStateKey) == |
| 413 ui::SHOW_STATE_FULLSCREEN; |
412 } | 414 } |
413 | 415 |
414 void NativeWidgetAura::SetOpacity(unsigned char opacity) { | 416 void NativeWidgetAura::SetOpacity(unsigned char opacity) { |
415 window_->layer()->SetOpacity(opacity / 255.0); | 417 window_->layer()->SetOpacity(opacity / 255.0); |
416 } | 418 } |
417 | 419 |
418 void NativeWidgetAura::SetUseDragFrame(bool use_drag_frame) { | 420 void NativeWidgetAura::SetUseDragFrame(bool use_drag_frame) { |
419 NOTIMPLEMENTED(); | 421 NOTIMPLEMENTED(); |
420 } | 422 } |
421 | 423 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 | 571 |
570 void NativeWidgetAura::OnWindowDestroying() { | 572 void NativeWidgetAura::OnWindowDestroying() { |
571 delegate_->OnNativeWidgetDestroying(); | 573 delegate_->OnNativeWidgetDestroying(); |
572 | 574 |
573 // If the aura::Window is destroyed, we can no longer show tooltips. | 575 // If the aura::Window is destroyed, we can no longer show tooltips. |
574 tooltip_manager_.reset(); | 576 tooltip_manager_.reset(); |
575 } | 577 } |
576 | 578 |
577 void NativeWidgetAura::OnWindowDestroyed() { | 579 void NativeWidgetAura::OnWindowDestroyed() { |
578 window_ = NULL; | 580 window_ = NULL; |
| 581 tooltip_manager_.reset(); |
579 delegate_->OnNativeWidgetDestroyed(); | 582 delegate_->OnNativeWidgetDestroyed(); |
580 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) | 583 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
581 delete this; | 584 delete this; |
582 } | 585 } |
583 | 586 |
584 void NativeWidgetAura::OnWindowVisibilityChanged(bool visible) { | 587 void NativeWidgetAura::OnWindowVisibilityChanged(bool visible) { |
585 delegate_->OnNativeWidgetVisibilityChanged(visible); | 588 delegate_->OnNativeWidgetVisibilityChanged(visible); |
586 } | 589 } |
587 | 590 |
588 //////////////////////////////////////////////////////////////////////////////// | 591 //////////////////////////////////////////////////////////////////////////////// |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 } | 674 } |
672 | 675 |
673 // static | 676 // static |
674 bool NativeWidgetPrivate::IsMouseButtonDown() { | 677 bool NativeWidgetPrivate::IsMouseButtonDown() { |
675 NOTIMPLEMENTED(); | 678 NOTIMPLEMENTED(); |
676 return false; | 679 return false; |
677 } | 680 } |
678 | 681 |
679 } // namespace internal | 682 } // namespace internal |
680 } // namespace views | 683 } // namespace views |
OLD | NEW |