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

Unified Diff: ui/base/touch/touch_editing_controller.h

Issue 700563002: Implementing directional text selection handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@new_assets_text
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: ui/base/touch/touch_editing_controller.h
diff --git a/ui/base/touch/touch_editing_controller.h b/ui/base/touch/touch_editing_controller.h
index 00d8d496388c4b916c280115ff598b6e171de3eb..2e4c56b13e6275d6192d6dcb91c8672485c14990 100644
--- a/ui/base/touch/touch_editing_controller.h
+++ b/ui/base/touch/touch_editing_controller.h
@@ -9,8 +9,44 @@
#include "ui/gfx/point.h"
#include "ui/gfx/rect.h"
+namespace cc {
+struct ViewportSelectionBound;
+}
+
namespace ui {
+// Bound of a selected region.
+struct UI_BASE_EXPORT SelectionBound {
mohsen 2014/11/07 16:52:27 Can you make fields private and add setter/getters
mfomitchev 2014/11/10 04:04:12 I thought it would be good to keep this similar to
+ public:
+ enum Type {
+ LEFT,
+ RIGHT,
+ CENTER,
+ EMPTY,
+ LAST = EMPTY
+ };
+
+ SelectionBound();
+ virtual ~SelectionBound();
+
+ int GetHeight() const;
+
+ Type type;
+
+ // A valid selection bound should have the same y-coordinate for |edge_top|
+ // and |edge_bottom|.
+ gfx::Point edge_top;
+ gfx::Point edge_bottom;
+};
+
+UI_BASE_EXPORT bool operator==(const SelectionBound& lhs,
+ const SelectionBound& rhs);
+UI_BASE_EXPORT bool operator!=(const SelectionBound& lhs,
+ const SelectionBound& rhs);
+
+UI_BASE_EXPORT gfx::Rect RectBetweenSelectionBounds(const SelectionBound& b1,
+ const SelectionBound& b2);
+
// An interface implemented by widget that has text that can be selected/edited
// using touch.
class UI_BASE_EXPORT TouchEditable : public ui::SimpleMenuModel::Delegate {
@@ -26,17 +62,18 @@ class UI_BASE_EXPORT TouchEditable : public ui::SimpleMenuModel::Delegate {
// Move the caret to |point|. |point| is in local coordinates.
virtual void MoveCaretTo(const gfx::Point& point) = 0;
- // Gets the end points of the current selection. The end points p1 and p2 must
- // be the cursor rect for the start and end of selection (in local
- // coordinates):
+ // Gets the end points of the current selection. The end points |anchor| and
+ // |focus| must be the cursor rect for the logical start and logical end of
+ // selection (in local coordinates):
// ____________________________________
// | textfield with |selected text| |
// ------------------------------------
- // ^p1 ^p2
+ // ^anchor ^focus
//
- // p1 should be the logical start and p2 the logical end of selection. Hence,
- // visually, p1 could be to the right of p2 in the figure above.
- virtual void GetSelectionEndPoints(gfx::Rect* p1, gfx::Rect* p2) = 0;
+ // Visually, anchor could be to the right of focus in the figure above - it
+ // depends on the selection direction.
+ virtual void GetSelectionEndPoints(ui::SelectionBound* anchor,
+ ui::SelectionBound* focus) = 0;
// Gets the bounds of the client view in its local coordinates.
virtual gfx::Rect GetBounds() = 0;
@@ -94,6 +131,6 @@ class UI_BASE_EXPORT TouchSelectionControllerFactory {
virtual ~TouchSelectionControllerFactory() {}
};
-} // namespace views
+} // namespace ui
#endif // UI_BASE_TOUCH_TOUCH_EDITING_CONTROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698