Commit dd589a29 authored by Wei Li's avatar Wei Li Committed by Commit Bot

Remove set_owned_by_client() from touch point view

Touch point view can be owned by views hierarchy if we manage to remove
it from the view hierarchy when we need to delete it or to transfer
ownership to someone else. Thus this CL removed using
set_owned_by_client() for touch point view.

BUG=1044687

Change-Id: I7790a8bc679faadd4288dc16024a05eed8038048
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2224007Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Commit-Queue: Wei Li <weili@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774328}
parent 565b6fb9
...@@ -35,13 +35,11 @@ class TouchPointView : public views::View, ...@@ -35,13 +35,11 @@ class TouchPointView : public views::View,
public: public:
explicit TouchPointView(views::Widget* parent_widget) explicit TouchPointView(views::Widget* parent_widget)
: views::AnimationDelegateViews(this) { : views::AnimationDelegateViews(this) {
set_owned_by_client();
SetPaintToLayer(); SetPaintToLayer();
layer()->SetFillsBoundsOpaquely(false); layer()->SetFillsBoundsOpaquely(false);
SetSize(gfx::Size(2 * kPointRadius + 2, 2 * kPointRadius + 2)); SetSize(gfx::Size(2 * kPointRadius + 2, 2 * kPointRadius + 2));
parent_widget->GetContentsView()->AddChildView(this);
widget_observer_.Add(parent_widget); widget_observer_.Add(parent_widget);
} }
...@@ -143,12 +141,16 @@ void TouchHudRenderer::HandleTouchEvent(const ui::TouchEvent& event) { ...@@ -143,12 +141,16 @@ void TouchHudRenderer::HandleTouchEvent(const ui::TouchEvent& event) {
int id = event.pointer_details().id; int id = event.pointer_details().id;
auto iter = points_.find(id); auto iter = points_.find(id);
if (event.type() == ui::ET_TOUCH_PRESSED) { if (event.type() == ui::ET_TOUCH_PRESSED) {
if (iter != points_.end()) if (iter != points_.end()) {
TouchPointView* view = iter->second;
view->parent()->RemoveChildViewT(view);
points_.erase(iter); points_.erase(iter);
}
auto point = std::make_unique<TouchPointView>(parent_widget_); TouchPointView* point = parent_widget_->GetContentsView()->AddChildView(
std::make_unique<TouchPointView>(parent_widget_));
point->UpdateLocation(event); point->UpdateLocation(event);
auto result = points_.insert(std::make_pair(id, std::move(point))); auto result = points_.insert(std::make_pair(id, point));
DCHECK(result.second); DCHECK(result.second);
return; return;
} }
...@@ -158,8 +160,8 @@ void TouchHudRenderer::HandleTouchEvent(const ui::TouchEvent& event) { ...@@ -158,8 +160,8 @@ void TouchHudRenderer::HandleTouchEvent(const ui::TouchEvent& event) {
if (event.type() == ui::ET_TOUCH_RELEASED || if (event.type() == ui::ET_TOUCH_RELEASED ||
event.type() == ui::ET_TOUCH_CANCELLED) { event.type() == ui::ET_TOUCH_CANCELLED) {
TouchPointView* view = iter->second.get(); TouchPointView* view = iter->second;
view->FadeOut(std::move(iter->second)); view->FadeOut(view->parent()->RemoveChildViewT(view));
points_.erase(iter); points_.erase(iter);
} else { } else {
iter->second->UpdateLocation(event); iter->second->UpdateLocation(event);
......
...@@ -46,7 +46,7 @@ class ASH_EXPORT TouchHudRenderer : public views::WidgetObserver { ...@@ -46,7 +46,7 @@ class ASH_EXPORT TouchHudRenderer : public views::WidgetObserver {
views::Widget* parent_widget_; views::Widget* parent_widget_;
// A map of touch ids to TouchPointView. // A map of touch ids to TouchPointView.
std::map<int, std::unique_ptr<TouchPointView>> points_; std::map<int, TouchPointView*> points_;
DISALLOW_COPY_AND_ASSIGN(TouchHudRenderer); DISALLOW_COPY_AND_ASSIGN(TouchHudRenderer);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment