diff options
Diffstat (limited to 'chromium/ui/views/widget/widget.cc')
-rw-r--r-- | chromium/ui/views/widget/widget.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/chromium/ui/views/widget/widget.cc b/chromium/ui/views/widget/widget.cc index ecd7be9185f..a06ebe82c33 100644 --- a/chromium/ui/views/widget/widget.cc +++ b/chromium/ui/views/widget/widget.cc @@ -93,7 +93,7 @@ bool Widget::g_disable_activation_change_handling_ = false; // WidgetDelegate is supplied. class DefaultWidgetDelegate : public WidgetDelegate { public: - explicit DefaultWidgetDelegate(Widget* widget) : widget_(widget) { + DefaultWidgetDelegate() { // In most situations where a Widget is used without a delegate the Widget // is used as a container, so that we want focus to advance to the top-level // widget. A good example of this is the find bar. @@ -103,12 +103,8 @@ class DefaultWidgetDelegate : public WidgetDelegate { // WidgetDelegate: void DeleteDelegate() override { delete this; } - Widget* GetWidget() override { return widget_; } - const Widget* GetWidget() const override { return widget_; } private: - Widget* widget_; - DISALLOW_COPY_AND_ASSIGN(DefaultWidgetDelegate); }; @@ -179,6 +175,8 @@ Widget::Widget(InitParams params) { } Widget::~Widget() { + if (widget_delegate_) + widget_delegate_->WidgetDestroying(); DestroyRootView(); if (ownership_ == InitParams::WIDGET_OWNS_NATIVE_WIDGET) { delete native_widget_; @@ -298,8 +296,7 @@ void Widget::Init(InitParams params) { // ViewsDelegate::OnBeforeWidgetInit() may change `params.delegate` either // by setting it to null or assigning a different value to it, so handle // both cases. - auto default_widget_delegate = - std::make_unique<DefaultWidgetDelegate>(this); + auto default_widget_delegate = std::make_unique<DefaultWidgetDelegate>(); widget_delegate_ = params.delegate ? params.delegate : default_widget_delegate.get(); @@ -322,6 +319,9 @@ void Widget::Init(InitParams params) { // Henceforth, ensure the delegate outlives the Widget. widget_delegate_->can_delete_this_ = false; + if (params.delegate) + params.delegate->WidgetInitializing(this); + ownership_ = params.ownership; native_widget_ = CreateNativeWidget(params, this)->AsNativeWidgetPrivate(); root_view_.reset(CreateRootView()); @@ -377,7 +377,7 @@ void Widget::Init(InitParams params) { native_widget_->OnWidgetInitDone(); if (delegate) - delegate->OnWidgetInitialized(); + delegate->WidgetInitialized(); internal::AnyWidgetObserverSingleton::GetInstance()->OnAnyWidgetInitialized( this); @@ -1162,6 +1162,8 @@ gfx::Size Widget::GetMaximumSize() const { } void Widget::OnNativeWidgetMove() { + TRACE_EVENT0("ui", "Widget::OnNativeWidgetMove"); + widget_delegate_->OnWidgetMove(); NotifyCaretBoundsChanged(GetInputMethod()); @@ -1170,6 +1172,8 @@ void Widget::OnNativeWidgetMove() { } void Widget::OnNativeWidgetSizeChanged(const gfx::Size& new_size) { + TRACE_EVENT0("ui", "Widget::OnNativeWidgetSizeChanged"); + View* root = GetRootView(); if (root) root->SetSize(new_size); @@ -1229,6 +1233,8 @@ void Widget::OnKeyEvent(ui::KeyEvent* event) { // RootView from anywhere in Widget. Use // SendEventToSink() instead. See crbug.com/348087. void Widget::OnMouseEvent(ui::MouseEvent* event) { + TRACE_EVENT0("ui", "Widget::OnMouseEvent"); + View* root_view = GetRootView(); switch (event->type()) { case ui::ET_MOUSE_PRESSED: { @@ -1472,6 +1478,8 @@ View* Widget::GetFocusTraversableParentView() { // Widget, ui::NativeThemeObserver implementation: void Widget::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) { + TRACE_EVENT0("ui", "Widget::OnNativeThemeUpdated"); + DCHECK(observer_manager_.IsObserving(observed_theme)); #if defined(OS_MACOSX) || defined(OS_WIN) |