Index: views/touchui/touch_selection_controller_impl.h |
diff --git a/views/touchui/touch_selection_controller_impl.h b/views/touchui/touch_selection_controller_impl.h |
index 00ade4103c9f8dc752cbdc9001e3795a1f8b8473..42f33fa673a6276d9de6d5f6c6c4808208baf241 100644 |
--- a/views/touchui/touch_selection_controller_impl.h |
+++ b/views/touchui/touch_selection_controller_impl.h |
@@ -6,6 +6,7 @@ |
#define VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_IMPL_H_ |
#pragma once |
+#include "base/timer.h" |
#include "ui/gfx/point.h" |
#include "views/touchui/touch_selection_controller.h" |
#include "views/view.h" |
@@ -30,6 +31,7 @@ class TouchSelectionControllerImpl : public TouchSelectionController { |
private: |
friend class TouchSelectionControllerImplTest; |
class SelectionHandleView; |
+ class TouchContextMenuView; |
// Callback to inform the client view that the selection handle has been |
// dragged, hence selection may need to be updated. |
@@ -39,6 +41,21 @@ class TouchSelectionControllerImpl : public TouchSelectionController { |
// system to that of the client view. |
void ConvertPointToClientView(SelectionHandleView* source, gfx::Point* point); |
+ // Checks if the client view supports a context menu command. |
+ bool IsCommandIdEnabled(int command_id) const; |
+ |
+ // Sends a context menu command to the client view. |
+ void ExecuteCommand(int command_id); |
+ |
+ // Time to show context menu. |
+ void ContextMenuTimerFired(); |
+ |
+ // Convenience method to update the position/visibility of the context menu. |
+ void UpdateContextMenu(const gfx::Point& p1, const gfx::Point& p2); |
+ |
+ // Convenience method for hiding context menu. |
+ void HideContextMenu(); |
+ |
// Convenience methods for testing. |
gfx::Point GetSelectionHandle1Position(); |
gfx::Point GetSelectionHandle2Position(); |
@@ -48,6 +65,12 @@ class TouchSelectionControllerImpl : public TouchSelectionController { |
TouchSelectionClientView* client_view_; |
scoped_ptr<SelectionHandleView> selection_handle_1_; |
scoped_ptr<SelectionHandleView> selection_handle_2_; |
+ scoped_ptr<TouchContextMenuView> context_menu_; |
+ |
+ // Timer to trigger |context_menu| (|context_menu| is not shown if the |
+ // selection handles are being updated. It appears only when the handles are |
+ // stationary for a certain amount of time). |
+ base::OneShotTimer<TouchSelectionControllerImpl> context_menu_timer_; |
// Pointer to the SelectionHandleView being dragged during a drag session. |
SelectionHandleView* dragging_handle_; |