OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/views/widget/native_widget_aura.h" | 5 #include "ui/views/widget/native_widget_aura.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "third_party/skia/include/core/SkRegion.h" | 9 #include "third_party/skia/include/core/SkRegion.h" |
10 #include "ui/aura/client/aura_constants.h" | 10 #include "ui/aura/client/aura_constants.h" |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
359 // the full window bounds, for example View::ConvertPointToScreen(). | 359 // the full window bounds, for example View::ConvertPointToScreen(). |
360 return window_ ? window_->GetBoundsInScreen() : gfx::Rect(); | 360 return window_ ? window_->GetBoundsInScreen() : gfx::Rect(); |
361 } | 361 } |
362 | 362 |
363 gfx::Rect NativeWidgetAura::GetRestoredBounds() const { | 363 gfx::Rect NativeWidgetAura::GetRestoredBounds() const { |
364 if (!window_) | 364 if (!window_) |
365 return gfx::Rect(); | 365 return gfx::Rect(); |
366 | 366 |
367 // Restored bounds should only be relevant if the window is minimized or | 367 // Restored bounds should only be relevant if the window is minimized or |
368 // maximized. However, in some places the code expects GetRestoredBounds() | 368 // maximized. However, in some places the code expects GetRestoredBounds() |
369 // to return the current window bounds if the window is not in either state. | 369 // to return the current window bounds if the window is not in either state. |
oshima
2015/07/10 17:43:56
can you update the comment?
varkha
2015/07/10 19:38:26
Done.
| |
370 if (IsMinimized() || IsMaximized() || IsFullscreen()) { | 370 if (IsMinimized() || IsMaximized() || IsFullscreen()) { |
371 // Restore bounds are in screen coordinates, no need to convert. | 371 // Restore bounds are in screen coordinates, no need to convert. |
372 gfx::Rect* restore_bounds = | 372 gfx::Rect* restore_bounds = |
373 window_->GetProperty(aura::client::kRestoreBoundsKey); | 373 window_->GetProperty(aura::client::kRestoreBoundsKey); |
374 if (restore_bounds) | 374 if (restore_bounds) |
375 return *restore_bounds; | 375 return *restore_bounds; |
376 } | 376 } |
377 return window_->GetBoundsInScreen(); | 377 gfx::Rect bounds = window_->GetBoundsInScreen(); |
378 if (IsDocked()) { | |
379 // Restore bounds are in screen coordinates, no need to convert. | |
380 gfx::Rect* restore_bounds = | |
381 window_->GetProperty(aura::client::kRestoreBoundsKey); | |
382 // Use current window horizontal offset origin in order to preserve docked | |
383 // alignment but preserve restored size and vertical offset for the time | |
384 // when the |window_| gets undocked. | |
385 if (restore_bounds) { | |
386 bounds.set_size(restore_bounds->size()); | |
387 bounds.set_y(restore_bounds->y()); | |
388 } | |
389 } | |
390 | |
391 return bounds; | |
378 } | 392 } |
379 | 393 |
380 void NativeWidgetAura::SetBounds(const gfx::Rect& bounds) { | 394 void NativeWidgetAura::SetBounds(const gfx::Rect& bounds) { |
381 if (!window_) | 395 if (!window_) |
382 return; | 396 return; |
383 | 397 |
384 aura::Window* root = window_->GetRootWindow(); | 398 aura::Window* root = window_->GetRootWindow(); |
385 if (root) { | 399 if (root) { |
386 aura::client::ScreenPositionClient* screen_position_client = | 400 aura::client::ScreenPositionClient* screen_position_client = |
387 aura::client::GetScreenPositionClient(root); | 401 aura::client::GetScreenPositionClient(root); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
460 void NativeWidgetAura::ShowMaximizedWithBounds( | 474 void NativeWidgetAura::ShowMaximizedWithBounds( |
461 const gfx::Rect& restored_bounds) { | 475 const gfx::Rect& restored_bounds) { |
462 SetRestoreBounds(window_, restored_bounds); | 476 SetRestoreBounds(window_, restored_bounds); |
463 ShowWithWindowState(ui::SHOW_STATE_MAXIMIZED); | 477 ShowWithWindowState(ui::SHOW_STATE_MAXIMIZED); |
464 } | 478 } |
465 | 479 |
466 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { | 480 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { |
467 if (!window_) | 481 if (!window_) |
468 return; | 482 return; |
469 | 483 |
470 if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN) | 484 if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN || |
485 state == ui::SHOW_STATE_DOCKED) { | |
Peter Kasting
2015/07/10 16:40:56
Nit: No {}
varkha
2015/07/10 19:38:26
Doesn't multiline condition suggest braces?
| |
471 window_->SetProperty(aura::client::kShowStateKey, state); | 486 window_->SetProperty(aura::client::kShowStateKey, state); |
487 } | |
472 window_->Show(); | 488 window_->Show(); |
473 if (delegate_->CanActivate()) { | 489 if (delegate_->CanActivate()) { |
474 if (state != ui::SHOW_STATE_INACTIVE) | 490 if (state != ui::SHOW_STATE_INACTIVE) |
475 Activate(); | 491 Activate(); |
476 // SetInitialFocus() should be always be called, even for | 492 // SetInitialFocus() should be always be called, even for |
477 // SHOW_STATE_INACTIVE. If the window has to stay inactive, the method will | 493 // SHOW_STATE_INACTIVE. If the window has to stay inactive, the method will |
478 // do the right thing. | 494 // do the right thing. |
479 SetInitialFocus(state); | 495 SetInitialFocus(state); |
480 } | 496 } |
481 } | 497 } |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
951 destroying_ = true; | 967 destroying_ = true; |
952 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) | 968 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
953 delete delegate_; | 969 delete delegate_; |
954 else | 970 else |
955 CloseNow(); | 971 CloseNow(); |
956 } | 972 } |
957 | 973 |
958 //////////////////////////////////////////////////////////////////////////////// | 974 //////////////////////////////////////////////////////////////////////////////// |
959 // NativeWidgetAura, private: | 975 // NativeWidgetAura, private: |
960 | 976 |
977 bool NativeWidgetAura::IsDocked() const { | |
978 return window_ && | |
979 window_->GetProperty(aura::client::kShowStateKey) == | |
980 ui::SHOW_STATE_DOCKED; | |
981 } | |
982 | |
961 void NativeWidgetAura::SetInitialFocus(ui::WindowShowState show_state) { | 983 void NativeWidgetAura::SetInitialFocus(ui::WindowShowState show_state) { |
962 // The window does not get keyboard messages unless we focus it. | 984 // The window does not get keyboard messages unless we focus it. |
963 if (!GetWidget()->SetInitialFocus(show_state)) | 985 if (!GetWidget()->SetInitialFocus(show_state)) |
964 window_->Focus(); | 986 window_->Focus(); |
965 } | 987 } |
966 | 988 |
967 //////////////////////////////////////////////////////////////////////////////// | 989 //////////////////////////////////////////////////////////////////////////////// |
968 // Widget, public: | 990 // Widget, public: |
969 | 991 |
970 namespace { | 992 namespace { |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1141 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); | 1163 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); |
1142 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); | 1164 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); |
1143 return gfx::FontList(gfx::Font(caption_font)); | 1165 return gfx::FontList(gfx::Font(caption_font)); |
1144 #else | 1166 #else |
1145 return gfx::FontList(); | 1167 return gfx::FontList(); |
1146 #endif | 1168 #endif |
1147 } | 1169 } |
1148 | 1170 |
1149 } // namespace internal | 1171 } // namespace internal |
1150 } // namespace views | 1172 } // namespace views |
OLD | NEW |