summaryrefslogtreecommitdiffstats
path: root/views/widget/widget_gtk.cc
diff options
context:
space:
mode:
authorglotov@google.com <glotov@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-13 11:32:57 +0000
committerglotov@google.com <glotov@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-13 11:32:57 +0000
commit549b7e2b1e215aba3617e346c822272e1ec8f04f (patch)
treea1c101bbd0037c224e3d31bdf1e989dfcb0cab44 /views/widget/widget_gtk.cc
parentbb7005d19a66c276933d6cffe01cc52bd9ec22fd (diff)
downloadchromium_src-549b7e2b1e215aba3617e346c822272e1ec8f04f.zip
chromium_src-549b7e2b1e215aba3617e346c822272e1ec8f04f.tar.gz
chromium_src-549b7e2b1e215aba3617e346c822272e1ec8f04f.tar.bz2
Revert 85257 - Removing DeleteSoon() from WigetGtk so it behaves like WidgetWin
This is a retry of http://codereview.chromium.org/7002029/ after it has been reverted because of the failing test BrowserTest.CloseWithAppMenuOpen (failed only on buildbot) BUG=chromium-os:15129 TEST=tests TBR=dpolukhin TBR=glotov@google.com Review URL: http://codereview.chromium.org/7016033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85262 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/widget_gtk.cc')
-rw-r--r--views/widget/widget_gtk.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc
index 6fe0248..b506dac 100644
--- a/views/widget/widget_gtk.cc
+++ b/views/widget/widget_gtk.cc
@@ -322,9 +322,6 @@ WidgetGtk::WidgetGtk()
}
WidgetGtk::~WidgetGtk() {
- LOG(ERROR) << this << " WidgetGtk::~WidgetGtk()"; // FIXME
- if (!delete_on_destroy_ && widget_)
- CloseNow();
// We need to delete the input method before calling DestroyRootView(),
// because it'll set focus_manager_ to NULL.
input_method_.reset();
@@ -903,16 +900,15 @@ void WidgetGtk::MoveAbove(gfx::NativeView native_view) {
}
void WidgetGtk::SetShape(gfx::NativeRegion region) {
- if (widget_ && widget_->window) {
- gdk_window_shape_combine_region(widget_->window, region, 0, 0);
- gdk_region_destroy(region);
- }
+ DCHECK(widget_);
+ DCHECK(widget_->window);
+ gdk_window_shape_combine_region(widget_->window, region, 0, 0);
+ gdk_region_destroy(region);
}
void WidgetGtk::Close() {
if (!widget_)
return; // No need to do anything.
- LOG(ERROR) << this << " WidgetGtk::Close()"; // FIXME
// Hide first.
Hide();
@@ -1308,16 +1304,17 @@ void WidgetGtk::OnGrabNotify(GtkWidget* widget, gboolean was_grabbed) {
}
void WidgetGtk::OnDestroy(GtkWidget* object) {
- LOG(ERROR) << this << " WidgetGtk::OnDestroy" << delete_on_destroy_; // FIXME
if (!child_)
ActiveWindowWatcherX::RemoveObserver(this);
// Note that this handler is hooked to GtkObject::destroy.
// NULL out pointers here since we might still be in an observerer list
// until delstion happens.
widget_ = window_contents_ = NULL;
- OnDestroyed();
- if (delete_on_destroy_)
- delete this;
+ if (delete_on_destroy_) {
+ // Delays the deletion of this WidgetGtk as we want its children to have
+ // access to it when destroyed.
+ MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+ }
}
void WidgetGtk::OnShow(GtkWidget* widget) {