| 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 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 window_->SetProperty(aura::client::kCanResizeKey, | 150 window_->SetProperty(aura::client::kCanResizeKey, |
| 151 GetWidget()->widget_delegate()->CanResize()); | 151 GetWidget()->widget_delegate()->CanResize()); |
| 152 | 152 |
| 153 if (parent) { | 153 if (parent) { |
| 154 parent->AddChild(window_); | 154 parent->AddChild(window_); |
| 155 } else { | 155 } else { |
| 156 aura::client::ParentWindowWithContext( | 156 aura::client::ParentWindowWithContext( |
| 157 window_, context->GetRootWindow(), window_bounds); | 157 window_, context->GetRootWindow(), window_bounds); |
| 158 } | 158 } |
| 159 | 159 |
| 160 // Start observing property changes. |
| 161 window_->AddObserver(this); |
| 162 |
| 160 // Wait to set the bounds until we have a parent. That way we can know our | 163 // Wait to set the bounds until we have a parent. That way we can know our |
| 161 // true state/bounds (the LayoutManager may enforce a particular | 164 // true state/bounds (the LayoutManager may enforce a particular |
| 162 // state/bounds). | 165 // state/bounds). |
| 163 if (IsMaximized()) | 166 if (IsMaximized()) |
| 164 SetRestoreBounds(window_, window_bounds); | 167 SetRestoreBounds(window_, window_bounds); |
| 165 else | 168 else |
| 166 SetBounds(window_bounds); | 169 SetBounds(window_bounds); |
| 167 window_->set_ignore_events(!params.accept_events); | 170 window_->set_ignore_events(!params.accept_events); |
| 168 DCHECK(GetWidget()->GetRootView()); | 171 DCHECK(GetWidget()->GetRootView()); |
| 169 if (params.type != Widget::InitParams::TYPE_TOOLTIP) | 172 if (params.type != Widget::InitParams::TYPE_TOOLTIP) |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 | 794 |
| 792 void NativeWidgetAura::OnPaint(gfx::Canvas* canvas) { | 795 void NativeWidgetAura::OnPaint(gfx::Canvas* canvas) { |
| 793 delegate_->OnNativeWidgetPaint(canvas); | 796 delegate_->OnNativeWidgetPaint(canvas); |
| 794 } | 797 } |
| 795 | 798 |
| 796 void NativeWidgetAura::OnDeviceScaleFactorChanged(float device_scale_factor) { | 799 void NativeWidgetAura::OnDeviceScaleFactorChanged(float device_scale_factor) { |
| 797 // Repainting with new scale factor will paint the content at the right scale. | 800 // Repainting with new scale factor will paint the content at the right scale. |
| 798 } | 801 } |
| 799 | 802 |
| 800 void NativeWidgetAura::OnWindowDestroying(aura::Window* window) { | 803 void NativeWidgetAura::OnWindowDestroying(aura::Window* window) { |
| 804 window_->RemoveObserver(this); |
| 801 delegate_->OnNativeWidgetDestroying(); | 805 delegate_->OnNativeWidgetDestroying(); |
| 802 | 806 |
| 803 // If the aura::Window is destroyed, we can no longer show tooltips. | 807 // If the aura::Window is destroyed, we can no longer show tooltips. |
| 804 tooltip_manager_.reset(); | 808 tooltip_manager_.reset(); |
| 805 } | 809 } |
| 806 | 810 |
| 807 void NativeWidgetAura::OnWindowDestroyed(aura::Window* window) { | 811 void NativeWidgetAura::OnWindowDestroyed(aura::Window* window) { |
| 808 window_ = NULL; | 812 window_ = NULL; |
| 809 delegate_->OnNativeWidgetDestroyed(); | 813 delegate_->OnNativeWidgetDestroyed(); |
| 810 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) | 814 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
| 811 delete this; | 815 delete this; |
| 812 } | 816 } |
| 813 | 817 |
| 814 void NativeWidgetAura::OnWindowTargetVisibilityChanged(bool visible) { | 818 void NativeWidgetAura::OnWindowTargetVisibilityChanged(bool visible) { |
| 815 delegate_->OnNativeWidgetVisibilityChanged(visible); | 819 delegate_->OnNativeWidgetVisibilityChanged(visible); |
| 816 } | 820 } |
| 817 | 821 |
| 818 bool NativeWidgetAura::HasHitTestMask() const { | 822 bool NativeWidgetAura::HasHitTestMask() const { |
| 819 return delegate_->HasHitTestMask(); | 823 return delegate_->HasHitTestMask(); |
| 820 } | 824 } |
| 821 | 825 |
| 822 void NativeWidgetAura::GetHitTestMask(gfx::Path* mask) const { | 826 void NativeWidgetAura::GetHitTestMask(gfx::Path* mask) const { |
| 823 DCHECK(mask); | 827 DCHECK(mask); |
| 824 delegate_->GetHitTestMask(mask); | 828 delegate_->GetHitTestMask(mask); |
| 825 } | 829 } |
| 826 | 830 |
| 827 //////////////////////////////////////////////////////////////////////////////// | 831 //////////////////////////////////////////////////////////////////////////////// |
| 832 // NativeWidgetAura, aura::WindowObserver implementation: |
| 833 |
| 834 void NativeWidgetAura::OnWindowPropertyChanged(aura::Window* window, |
| 835 const void* key, |
| 836 intptr_t old) { |
| 837 if (key == aura::client::kShowStateKey) |
| 838 delegate_->OnNativeWidgetWindowShowStateChanged(); |
| 839 } |
| 840 |
| 841 //////////////////////////////////////////////////////////////////////////////// |
| 828 // NativeWidgetAura, ui::EventHandler implementation: | 842 // NativeWidgetAura, ui::EventHandler implementation: |
| 829 | 843 |
| 830 void NativeWidgetAura::OnKeyEvent(ui::KeyEvent* event) { | 844 void NativeWidgetAura::OnKeyEvent(ui::KeyEvent* event) { |
| 831 DCHECK(window_); | 845 DCHECK(window_); |
| 832 if (event->is_char()) { | 846 if (event->is_char()) { |
| 833 // If a ui::InputMethod object is attached to the root window, character | 847 // If a ui::InputMethod object is attached to the root window, character |
| 834 // events are handled inside the object and are not passed to this function. | 848 // events are handled inside the object and are not passed to this function. |
| 835 // If such object is not attached, character events might be sent (e.g. on | 849 // If such object is not attached, character events might be sent (e.g. on |
| 836 // Windows). In this case, we just skip these. | 850 // Windows). In this case, we just skip these. |
| 837 return; | 851 return; |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); | 1166 l10n_util::AdjustUIFont(&(ncm.lfCaptionFont)); |
| 1153 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); | 1167 base::win::ScopedHFONT caption_font(CreateFontIndirect(&(ncm.lfCaptionFont))); |
| 1154 return gfx::FontList(gfx::Font(caption_font)); | 1168 return gfx::FontList(gfx::Font(caption_font)); |
| 1155 #else | 1169 #else |
| 1156 return gfx::FontList(); | 1170 return gfx::FontList(); |
| 1157 #endif | 1171 #endif |
| 1158 } | 1172 } |
| 1159 | 1173 |
| 1160 } // namespace internal | 1174 } // namespace internal |
| 1161 } // namespace views | 1175 } // namespace views |
| OLD | NEW |