Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(975)

Side by Side Diff: ui/views/touchui/touch_selection_controller_impl.h

Issue 700563002: Implementing directional text selection handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new_assets_text
Patch Set: Some test cleanup Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_ 5 #ifndef UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_
6 #define UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_ 6 #define UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_
7 7
8 #include "base/timer/timer.h" 8 #include "base/timer/timer.h"
9 #include "ui/aura/window_observer.h" 9 #include "ui/aura/window_observer.h"
10 #include "ui/base/touch/touch_editing_controller.h" 10 #include "ui/base/touch/touch_editing_controller.h"
(...skipping 30 matching lines...) Expand all
41 bool IsHandleDragInProgress() override; 41 bool IsHandleDragInProgress() override;
42 void HideHandles(bool quick) override; 42 void HideHandles(bool quick) override;
43 43
44 private: 44 private:
45 friend class TouchSelectionControllerImplTest; 45 friend class TouchSelectionControllerImplTest;
46 friend class test::WidgetTestInteractive; 46 friend class test::WidgetTestInteractive;
47 47
48 void SetDraggingHandle(EditingHandleView* handle); 48 void SetDraggingHandle(EditingHandleView* handle);
49 49
50 // Callback to inform the client view that the selection handle has been 50 // Callback to inform the client view that the selection handle has been
51 // dragged, hence selection may need to be updated. 51 // dragged, hence selection may need to be updated. |drag_pos| is the new
52 // position for the edge of the selection corresponding to |dragging_handle_|,
53 // specified in handle's coordinates
52 void SelectionHandleDragged(const gfx::Point& drag_pos); 54 void SelectionHandleDragged(const gfx::Point& drag_pos);
53 55
54 // Convenience method to convert a point from a selection handle's coordinate 56 // Convenience method to convert a point from a selection handle's coordinate
55 // system to that of the client view. 57 // system to that of the client view.
56 void ConvertPointToClientView(EditingHandleView* source, gfx::Point* point); 58 void ConvertPointToClientView(EditingHandleView* source, gfx::Point* point);
57 59
58 // Convenience method to set a handle's selection rect and hide it if it is 60 // Convenience method to set a handle's selection bound and hide it if it is
59 // located out of client view. 61 // located out of client view.
60 void SetHandleSelectionRect(EditingHandleView* handle, const gfx::Rect& rect, 62 void SetHandleBound(EditingHandleView* handle,
61 const gfx::Rect& rect_in_screen); 63 const ui::SelectionBound& bound,
64 const ui::SelectionBound& bound_in_screen);
62 65
63 // Checks if handle should be shown for a selection end-point at |rect|. 66 // Checks if handle should be shown for selection bound.
64 // |rect| should be the clipped version of the selection end-point. 67 // |bound| should be the clipped version of the selection bound.
65 bool ShouldShowHandleFor(const gfx::Rect& rect) const; 68 bool ShouldShowHandleFor(const ui::SelectionBound& bound) const;
66 69
67 // Overridden from TouchEditingMenuController. 70 // Overridden from TouchEditingMenuController.
68 bool IsCommandIdEnabled(int command_id) const override; 71 bool IsCommandIdEnabled(int command_id) const override;
69 void ExecuteCommand(int command_id, int event_flags) override; 72 void ExecuteCommand(int command_id, int event_flags) override;
70 void OpenContextMenu() override; 73 void OpenContextMenu() override;
71 void OnMenuClosed(TouchEditingMenuView* menu) override; 74 void OnMenuClosed(TouchEditingMenuView* menu) override;
72 75
73 // Overriden from aura::WindowObserver. 76 // Overriden from aura::WindowObserver.
74 void OnAncestorWindowTransformed(aura::Window* source, 77 void OnAncestorWindowTransformed(aura::Window* source,
75 aura::Window* window) override; 78 aura::Window* window) override;
(...skipping 16 matching lines...) Expand all
92 void StartContextMenuTimer(); 95 void StartContextMenuTimer();
93 96
94 // Convenience method to update the position/visibility of the context menu. 97 // Convenience method to update the position/visibility of the context menu.
95 void UpdateContextMenu(); 98 void UpdateContextMenu();
96 99
97 // Convenience method for hiding context menu. 100 // Convenience method for hiding context menu.
98 void HideContextMenu(); 101 void HideContextMenu();
99 102
100 // Convenience methods for testing. 103 // Convenience methods for testing.
101 gfx::NativeView GetCursorHandleNativeView(); 104 gfx::NativeView GetCursorHandleNativeView();
102 gfx::Point GetSelectionHandle1Position(); 105 gfx::Rect GetSelectionHandle1Bounds();
103 gfx::Point GetSelectionHandle2Position(); 106 gfx::Rect GetSelectionHandle2Bounds();
104 gfx::Point GetCursorHandlePosition(); 107 gfx::Rect GetCursorHandleBounds();
105 bool IsSelectionHandle1Visible(); 108 bool IsSelectionHandle1Visible();
106 bool IsSelectionHandle2Visible(); 109 bool IsSelectionHandle2Visible();
107 bool IsCursorHandleVisible(); 110 bool IsCursorHandleVisible();
111 gfx::Rect GetExpectedHandleBounds(const ui::SelectionBound& bound);
112 views::WidgetDelegateView* GetHandle1View();
113 views::WidgetDelegateView* GetHandle2View();
108 114
109 ui::TouchEditable* client_view_; 115 ui::TouchEditable* client_view_;
110 Widget* client_widget_; 116 Widget* client_widget_;
111 scoped_ptr<EditingHandleView> selection_handle_1_; 117 scoped_ptr<EditingHandleView> selection_handle_1_;
112 scoped_ptr<EditingHandleView> selection_handle_2_; 118 scoped_ptr<EditingHandleView> selection_handle_2_;
113 scoped_ptr<EditingHandleView> cursor_handle_; 119 scoped_ptr<EditingHandleView> cursor_handle_;
114 TouchEditingMenuView* context_menu_; 120 TouchEditingMenuView* context_menu_;
115 121
116 // Timer to trigger |context_menu| (|context_menu| is not shown if the 122 // Timer to trigger |context_menu| (|context_menu| is not shown if the
117 // selection handles are being updated. It appears only when the handles are 123 // selection handles are being updated. It appears only when the handles are
118 // stationary for a certain amount of time). 124 // stationary for a certain amount of time).
119 base::OneShotTimer<TouchSelectionControllerImpl> context_menu_timer_; 125 base::OneShotTimer<TouchSelectionControllerImpl> context_menu_timer_;
120 126
121 // Pointer to the SelectionHandleView being dragged during a drag session. 127 // Pointer to the SelectionHandleView being dragged during a drag session.
122 EditingHandleView* dragging_handle_; 128 EditingHandleView* dragging_handle_;
123 129
124 // Selection end points. In cursor mode, the two end points are the same and 130 // In cursor mode, the two selection bounds are the same and correspond to
125 // correspond to |cursor_handle_|; otherwise, they correspond to 131 // |cursor_handle_|; otherwise, they correspond to |selection_handle_1_| and
126 // |selection_handle_1_| and |selection_handle_2_|, respectively. These 132 // |selection_handle_2_|, respectively. These values should be used when
127 // values should be used when selection end points are needed rather than 133 // selection bounds needed rather than position of handles which might be
128 // position of handles which might be invalid when handles are hidden. 134 // invalid when handles are hidden.
129 gfx::Rect selection_end_point_1_; 135 ui::SelectionBound selection_bound_1_;
130 gfx::Rect selection_end_point_2_; 136 ui::SelectionBound selection_bound_2_;
131 // Selection end points, clipped to client view's boundaries. 137
132 gfx::Rect selection_end_point_1_clipped_; 138 // Selection bounds, clipped to client view's boundaries.
133 gfx::Rect selection_end_point_2_clipped_; 139 ui::SelectionBound selection_bound_1_clipped_;
140 ui::SelectionBound selection_bound_2_clipped_;
134 141
135 DISALLOW_COPY_AND_ASSIGN(TouchSelectionControllerImpl); 142 DISALLOW_COPY_AND_ASSIGN(TouchSelectionControllerImpl);
136 }; 143 };
137 144
138 } // namespace views 145 } // namespace views
139 146
140 #endif // UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_ 147 #endif // UI_UI_VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698