diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/widget.cc | 9 | ||||
-rw-r--r-- | ui/views/widget/widget.h | 3 |
2 files changed, 11 insertions, 1 deletions
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index fc76d58..4ccf36d 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc @@ -173,6 +173,7 @@ Widget::Widget() focus_on_creation_(true), is_top_level_(false), native_widget_initialized_(false), + native_widget_destroyed_(false), is_mouse_button_pressed_(false), last_mouse_event_was_move_(false) { } @@ -184,8 +185,13 @@ Widget::~Widget() { } DestroyRootView(); - if (ownership_ == InitParams::WIDGET_OWNS_NATIVE_WIDGET) + if (ownership_ == InitParams::WIDGET_OWNS_NATIVE_WIDGET) { delete native_widget_; + } else { + DCHECK(native_widget_destroyed_) + << "Destroying a widget with a live native widget. " + << "Widget probably should use WIDGET_OWNS_NATIVE_WIDGET ownership."; + } } // static @@ -951,6 +957,7 @@ void Widget::OnNativeWidgetDestroying() { void Widget::OnNativeWidgetDestroyed() { widget_delegate_->DeleteDelegate(); widget_delegate_ = NULL; + native_widget_destroyed_ = true; } gfx::Size Widget::GetMinimumSize() { diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h index 9932ae9..319655e 100644 --- a/ui/views/widget/widget.h +++ b/ui/views/widget/widget.h @@ -749,6 +749,9 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // Tracks whether native widget has been initialized. bool native_widget_initialized_; + // Whether native widget has been destroyed. + bool native_widget_destroyed_; + // TODO(beng): Remove NativeWidgetGtk's dependence on these: // If true, the mouse is currently down. bool is_mouse_button_pressed_; |