summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-25 16:55:20 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-25 16:55:20 +0000
commit25736ca0a41f68ae6546b976d16a95af2f7ec3e5 (patch)
tree2cb8d105baf797d3c4dfbdd6458dc0063ca1b864 /views
parentefe3fd02b3c61d1c5ef564a0aa2d98151dda1173 (diff)
downloadchromium_src-25736ca0a41f68ae6546b976d16a95af2f7ec3e5.zip
chromium_src-25736ca0a41f68ae6546b976d16a95af2f7ec3e5.tar.gz
chromium_src-25736ca0a41f68ae6546b976d16a95af2f7ec3e5.tar.bz2
Delay deletion of view in View::DoRemoveChildView
BUG=70771 TEST=none Review URL: http://codereview.chromium.org/6267013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/view.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/views/view.cc b/views/view.cc
index ebbb36a..9e801ee 100644
--- a/views/view.cc
+++ b/views/view.cc
@@ -11,6 +11,7 @@
#include "base/logging.h"
#include "base/message_loop.h"
+#include "base/scoped_ptr.h"
#include "base/utf_string_conversions.h"
#include "gfx/canvas_skia.h"
#include "gfx/path.h"
@@ -631,6 +632,7 @@ void View::DoRemoveChildView(View* a_view,
const ViewList::iterator i = find(child_views_.begin(),
child_views_.end(),
a_view);
+ scoped_ptr<View> view_to_be_deleted;
if (i != child_views_.end()) {
if (update_focus_cycle) {
// Let's remove the view from the focus traversal.
@@ -649,7 +651,7 @@ void View::DoRemoveChildView(View* a_view,
a_view->SetParent(NULL);
if (delete_removed_view && a_view->IsParentOwned())
- delete a_view;
+ view_to_be_deleted.reset(a_view);
child_views_.erase(i);
}