| 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 } // namespace | 69 } // namespace |
| 70 | 70 |
| 71 //////////////////////////////////////////////////////////////////////////////// | 71 //////////////////////////////////////////////////////////////////////////////// |
| 72 // NativeWidgetAura, public: | 72 // NativeWidgetAura, public: |
| 73 | 73 |
| 74 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) | 74 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) |
| 75 : delegate_(delegate), | 75 : delegate_(delegate), |
| 76 window_(new aura::Window(this)), | 76 window_(new aura::Window(this)), |
| 77 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), | 77 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
| 78 close_widget_factory_(this), | 78 close_widget_factory_(this), |
| 79 can_activate_(true), |
| 79 destroying_(false), | 80 destroying_(false), |
| 80 cursor_(gfx::kNullCursor), | 81 cursor_(gfx::kNullCursor), |
| 81 saved_window_state_(ui::SHOW_STATE_DEFAULT) { | 82 saved_window_state_(ui::SHOW_STATE_DEFAULT) { |
| 82 aura::client::SetFocusChangeObserver(window_, this); | 83 aura::client::SetFocusChangeObserver(window_, this); |
| 83 aura::client::SetActivationChangeObserver(window_, this); | 84 aura::client::SetActivationChangeObserver(window_, this); |
| 84 } | 85 } |
| 85 | 86 |
| 86 // static | 87 // static |
| 87 void NativeWidgetAura::RegisterNativeWidgetForWindow( | 88 void NativeWidgetAura::RegisterNativeWidgetForWindow( |
| 88 internal::NativeWidgetPrivate* native_widget, | 89 internal::NativeWidgetPrivate* native_widget, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 } | 154 } |
| 154 | 155 |
| 155 // Wait to set the bounds until we have a parent. That way we can know our | 156 // Wait to set the bounds until we have a parent. That way we can know our |
| 156 // true state/bounds (the LayoutManager may enforce a particular | 157 // true state/bounds (the LayoutManager may enforce a particular |
| 157 // state/bounds). | 158 // state/bounds). |
| 158 if (IsMaximized()) | 159 if (IsMaximized()) |
| 159 SetRestoreBounds(window_, window_bounds); | 160 SetRestoreBounds(window_, window_bounds); |
| 160 else | 161 else |
| 161 SetBounds(window_bounds); | 162 SetBounds(window_bounds); |
| 162 window_->set_ignore_events(!params.accept_events); | 163 window_->set_ignore_events(!params.accept_events); |
| 164 can_activate_ = params.can_activate && |
| 165 params.type != Widget::InitParams::TYPE_CONTROL && |
| 166 params.type != Widget::InitParams::TYPE_TOOLTIP; |
| 163 DCHECK(GetWidget()->GetRootView()); | 167 DCHECK(GetWidget()->GetRootView()); |
| 164 if (params.type != Widget::InitParams::TYPE_TOOLTIP) | 168 if (params.type != Widget::InitParams::TYPE_TOOLTIP) |
| 165 tooltip_manager_.reset(new views::TooltipManagerAura(GetWidget())); | 169 tooltip_manager_.reset(new views::TooltipManagerAura(GetWidget())); |
| 166 | 170 |
| 167 drop_helper_.reset(new DropHelper(GetWidget()->GetRootView())); | 171 drop_helper_.reset(new DropHelper(GetWidget()->GetRootView())); |
| 168 if (params.type != Widget::InitParams::TYPE_TOOLTIP && | 172 if (params.type != Widget::InitParams::TYPE_TOOLTIP && |
| 169 params.type != Widget::InitParams::TYPE_POPUP) { | 173 params.type != Widget::InitParams::TYPE_POPUP) { |
| 170 aura::client::SetDragDropDelegate(window_, this); | 174 aura::client::SetDragDropDelegate(window_, this); |
| 171 } | 175 } |
| 172 | 176 |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 ShowWithWindowState(ui::SHOW_STATE_MAXIMIZED); | 480 ShowWithWindowState(ui::SHOW_STATE_MAXIMIZED); |
| 477 } | 481 } |
| 478 | 482 |
| 479 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { | 483 void NativeWidgetAura::ShowWithWindowState(ui::WindowShowState state) { |
| 480 if (!window_) | 484 if (!window_) |
| 481 return; | 485 return; |
| 482 | 486 |
| 483 if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN) | 487 if (state == ui::SHOW_STATE_MAXIMIZED || state == ui::SHOW_STATE_FULLSCREEN) |
| 484 window_->SetProperty(aura::client::kShowStateKey, state); | 488 window_->SetProperty(aura::client::kShowStateKey, state); |
| 485 window_->Show(); | 489 window_->Show(); |
| 486 if (delegate_->CanActivate()) { | 490 if (can_activate_) { |
| 487 if (state != ui::SHOW_STATE_INACTIVE) | 491 if (state != ui::SHOW_STATE_INACTIVE) |
| 488 Activate(); | 492 Activate(); |
| 489 // SetInitialFocus() should be always be called, even for | 493 // SetInitialFocus() should be always be called, even for |
| 490 // SHOW_STATE_INACTIVE. If the window has to stay inactive, the method will | 494 // SHOW_STATE_INACTIVE. If the window has to stay inactive, the method will |
| 491 // do the right thing. | 495 // do the right thing. |
| 492 SetInitialFocus(state); | 496 SetInitialFocus(state); |
| 493 } | 497 } |
| 494 } | 498 } |
| 495 | 499 |
| 496 bool NativeWidgetAura::IsVisible() const { | 500 bool NativeWidgetAura::IsVisible() const { |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 762 std::find(window_->layer()->children().begin(), | 766 std::find(window_->layer()->children().begin(), |
| 763 window_->layer()->children().end(), layer)); | 767 window_->layer()->children().end(), layer)); |
| 764 if (root_layer_iter > child_layer_iter) | 768 if (root_layer_iter > child_layer_iter) |
| 765 return false; | 769 return false; |
| 766 } | 770 } |
| 767 } | 771 } |
| 768 return true; | 772 return true; |
| 769 } | 773 } |
| 770 | 774 |
| 771 bool NativeWidgetAura::CanFocus() { | 775 bool NativeWidgetAura::CanFocus() { |
| 772 return ShouldActivate(); | 776 return can_activate_; |
| 773 } | 777 } |
| 774 | 778 |
| 775 void NativeWidgetAura::OnCaptureLost() { | 779 void NativeWidgetAura::OnCaptureLost() { |
| 776 delegate_->OnMouseCaptureLost(); | 780 delegate_->OnMouseCaptureLost(); |
| 777 } | 781 } |
| 778 | 782 |
| 779 void NativeWidgetAura::OnPaint(gfx::Canvas* canvas) { | 783 void NativeWidgetAura::OnPaint(gfx::Canvas* canvas) { |
| 780 delegate_->OnNativeWidgetPaint(canvas); | 784 delegate_->OnNativeWidgetPaint(canvas); |
| 781 } | 785 } |
| 782 | 786 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 859 void NativeWidgetAura::OnGestureEvent(ui::GestureEvent* event) { | 863 void NativeWidgetAura::OnGestureEvent(ui::GestureEvent* event) { |
| 860 DCHECK(window_); | 864 DCHECK(window_); |
| 861 DCHECK(window_->IsVisible() || event->IsEndingEvent()); | 865 DCHECK(window_->IsVisible() || event->IsEndingEvent()); |
| 862 delegate_->OnGestureEvent(event); | 866 delegate_->OnGestureEvent(event); |
| 863 } | 867 } |
| 864 | 868 |
| 865 //////////////////////////////////////////////////////////////////////////////// | 869 //////////////////////////////////////////////////////////////////////////////// |
| 866 // NativeWidgetAura, aura::client::ActivationDelegate implementation: | 870 // NativeWidgetAura, aura::client::ActivationDelegate implementation: |
| 867 | 871 |
| 868 bool NativeWidgetAura::ShouldActivate() const { | 872 bool NativeWidgetAura::ShouldActivate() const { |
| 869 return delegate_->CanActivate(); | 873 return can_activate_ && delegate_->CanActivate(); |
| 870 } | 874 } |
| 871 | 875 |
| 872 //////////////////////////////////////////////////////////////////////////////// | 876 //////////////////////////////////////////////////////////////////////////////// |
| 873 // NativeWidgetAura, aura::client::ActivationChangeObserver implementation: | 877 // NativeWidgetAura, aura::client::ActivationChangeObserver implementation: |
| 874 | 878 |
| 875 void NativeWidgetAura::OnWindowActivated(aura::Window* gained_active, | 879 void NativeWidgetAura::OnWindowActivated(aura::Window* gained_active, |
| 876 aura::Window* lost_active) { | 880 aura::Window* lost_active) { |
| 877 DCHECK(window_ == gained_active || window_ == lost_active); | 881 DCHECK(window_ == gained_active || window_ == lost_active); |
| 878 if (GetWidget()->GetFocusManager()) { | 882 if (GetWidget()->GetFocusManager()) { |
| 879 if (window_ == gained_active) | 883 if (window_ == gained_active) |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); | 1157 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); |
| 1154 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); | 1158 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); |
| 1155 return gfx::FontList(gfx::Font(caption_font)); | 1159 return gfx::FontList(gfx::Font(caption_font)); |
| 1156 #else | 1160 #else |
| 1157 return gfx::FontList(); | 1161 return gfx::FontList(); |
| 1158 #endif | 1162 #endif |
| 1159 } | 1163 } |
| 1160 | 1164 |
| 1161 } // namespace internal | 1165 } // namespace internal |
| 1162 } // namespace views | 1166 } // namespace views |
| OLD | NEW |