summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/views/widget/widget.cc9
-rw-r--r--ui/views/widget/widget.h3
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_;