diff options
author | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-25 16:55:20 +0000 |
---|---|---|
committer | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-25 16:55:20 +0000 |
commit | 25736ca0a41f68ae6546b976d16a95af2f7ec3e5 (patch) | |
tree | 2cb8d105baf797d3c4dfbdd6458dc0063ca1b864 | |
parent | efe3fd02b3c61d1c5ef564a0aa2d98151dda1173 (diff) | |
download | chromium_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
-rw-r--r-- | views/view.cc | 4 |
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); } |