Home | History | Annotate | Download | only in workspace
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef ASH_WM_WORKSPACE_WORKSPACE_EVENT_HANDLER_H_
      6 #define ASH_WM_WORKSPACE_WORKSPACE_EVENT_HANDLER_H_
      7 
      8 #include "ash/wm/workspace/multi_window_resize_controller.h"
      9 #include "ui/events/event_handler.h"
     10 
     11 namespace ash {
     12 class WorkspaceEventHandlerTestHelper;
     13 
     14 namespace wm {
     15 class WindowState;
     16 }
     17 
     18 class WorkspaceEventHandler : public ui::EventHandler {
     19  public:
     20   WorkspaceEventHandler();
     21   virtual ~WorkspaceEventHandler();
     22 
     23   // ui::EventHandler:
     24   virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
     25   virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
     26 
     27  private:
     28   friend class WorkspaceEventHandlerTestHelper;
     29 
     30   // Determines if |event| corresponds to a double click on either the top or
     31   // bottom vertical resize edge, and if so toggles the vertical height of the
     32   // window between its restored state and the full available height of the
     33   // workspace.
     34   void HandleVerticalResizeDoubleClick(wm::WindowState* window_state,
     35                                        ui::MouseEvent* event);
     36 
     37   MultiWindowResizeController multi_window_resize_controller_;
     38 
     39   // The non-client component for the target of a MouseEvent or GestureEvent.
     40   // Events can be destructive to the window tree, which can cause the
     41   // component of a ui::EF_IS_DOUBLE_CLICK event to no longer be the same as
     42   // that of the initial click. Acting on a double click should only occur for
     43   // matching components. This will be set for left clicks, and tap events.
     44   int click_component_;
     45 
     46   DISALLOW_COPY_AND_ASSIGN(WorkspaceEventHandler);
     47 };
     48 
     49 }  // namespace ash
     50 
     51 #endif  // ASH_WM_WORKSPACE_WORKSPACE_EVENT_HANDLER_H_
     52