| Index: ui/touch_selection/longpress_drag_selector.h
|
| diff --git a/ui/touch_selection/longpress_drag_selector.h b/ui/touch_selection/longpress_drag_selector.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f6e84ecf1cd7463786720c79dd3779f383134cb3
|
| --- /dev/null
|
| +++ b/ui/touch_selection/longpress_drag_selector.h
|
| @@ -0,0 +1,72 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef UI_TOUCH_SELECTION_LONGPRESS_DRAG_SELECTOR_H_
|
| +#define UI_TOUCH_SELECTION_LONGPRESS_DRAG_SELECTOR_H_
|
| +
|
| +#include "base/time/time.h"
|
| +#include "ui/gfx/geometry/point_f.h"
|
| +#include "ui/gfx/geometry/vector2d_f.h"
|
| +#include "ui/touch_selection/touch_selection_draggable.h"
|
| +#include "ui/touch_selection/ui_touch_selection_export.h"
|
| +
|
| +namespace ui {
|
| +
|
| +class MotionEvent;
|
| +
|
| +class UI_TOUCH_SELECTION_EXPORT LongPressDragSelectorClient
|
| + : public TouchSelectionDraggableClient {
|
| + public:
|
| + ~LongPressDragSelectorClient() override {}
|
| + virtual void OnLongPressDragActiveStateChanged() = 0;
|
| + virtual gfx::PointF GetSelectionStart() const = 0;
|
| + virtual gfx::PointF GetSelectionEnd() const = 0;
|
| +};
|
| +
|
| +// Supports text selection via touch dragging after a longpress-initiated
|
| +// selection.
|
| +class UI_TOUCH_SELECTION_EXPORT LongPressDragSelector
|
| + : public TouchSelectionDraggable {
|
| + public:
|
| + explicit LongPressDragSelector(LongPressDragSelectorClient* client);
|
| + ~LongPressDragSelector() override;
|
| +
|
| + // TouchSelectionDraggable implementation.
|
| + bool WillHandleTouchEvent(const MotionEvent& event) override;
|
| + bool IsActive() const override;
|
| +
|
| + // Called just prior to a longpress event being handled.
|
| + void OnLongPressEvent(base::TimeTicks event_time,
|
| + const gfx::PointF& position);
|
| +
|
| + // Called when the active selection changes.
|
| + void OnSelectionActivated();
|
| + void OnSelectionDeactivated();
|
| +
|
| + private:
|
| + enum SelectionState {
|
| + INACTIVE,
|
| + LONGPRESS_PENDING,
|
| + SELECTION_PENDING,
|
| + DRAG_PENDING,
|
| + DRAGGING
|
| + };
|
| +
|
| + void SetState(SelectionState state);
|
| +
|
| + LongPressDragSelectorClient* const client_;
|
| +
|
| + SelectionState state_;
|
| +
|
| + base::TimeTicks touch_down_time_;
|
| + gfx::PointF touch_down_position_;
|
| +
|
| + gfx::Vector2dF longpress_drag_selection_offset_;
|
| + gfx::PointF longpress_drag_start_anchor_;
|
| + bool has_longpress_drag_start_anchor_;
|
| +};
|
| +
|
| +} // namespace ui
|
| +
|
| +#endif // UI_TOUCH_SELECTION_LONGPRESS_DRAG_SELECTOR_H_
|
|
|