Commit 94ad0b64 authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Add WidgetObserver methods for drag start/end.

These will be used by test code to trigger events based on dragging.  Tests
can't reliably e.g. "queue event to trigger a drag and then call a particular
callback" due to the nested, filtered message loop on Windows.  Using drag
observer methods is reliable, and clearer as well.

Bug: 923188
Change-Id: Id24b8150d04dc878dce543fe469994aba29694e4
Reviewed-on: https://chromium-review.googlesource.com/c/1483931
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#634869}
parent 1130351d
......@@ -804,6 +804,9 @@ void Widget::RunShellDrag(View* view,
dragged_view_ = view;
OnDragWillStart();
for (WidgetObserver& observer : observers_)
observer.OnWidgetDragWillStart(this);
WidgetDeletionObserver widget_deletion_observer(this);
native_widget_->RunShellDrag(view, data, location, operation, source);
......@@ -818,6 +821,9 @@ void Widget::RunShellDrag(View* view,
view->OnDragDone();
}
OnDragComplete();
for (WidgetObserver& observer : observers_)
observer.OnWidgetDragComplete(this);
}
void Widget::SchedulePaintInRect(const gfx::Rect& rect) {
......
......@@ -37,8 +37,11 @@ class VIEWS_EXPORT WidgetObserver : public base::CheckedObserver {
// widget has been destroyed.
virtual void OnWidgetDestroyed(Widget* widget) {}
virtual void OnWidgetVisibilityChanging(Widget* widget, bool visible) {}
// Called before RunShellDrag() is called and after it returns.
virtual void OnWidgetDragWillStart(Widget* widget) {}
virtual void OnWidgetDragComplete(Widget* widget) {}
virtual void OnWidgetVisibilityChanging(Widget* widget, bool visible) {}
virtual void OnWidgetVisibilityChanged(Widget* widget, bool visible) {}
virtual void OnWidgetActivationChanged(Widget* widget, bool active) {}
......
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