Home | History | Annotate | Download | only in panels
      1 // Copyright 2013 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 #include "ash/wm/panels/panel_window_event_handler.h"
      6 
      7 #include "ash/metrics/user_metrics_recorder.h"
      8 #include "ash/shell.h"
      9 #include "ash/wm/window_state.h"
     10 #include "ui/aura/window.h"
     11 #include "ui/aura/window_delegate.h"
     12 #include "ui/base/hit_test.h"
     13 #include "ui/events/event.h"
     14 
     15 namespace ash {
     16 
     17 PanelWindowEventHandler::PanelWindowEventHandler() {
     18 }
     19 
     20 PanelWindowEventHandler::~PanelWindowEventHandler() {
     21 }
     22 
     23 void PanelWindowEventHandler::OnMouseEvent(ui::MouseEvent* event) {
     24   aura::Window* target = static_cast<aura::Window*>(event->target());
     25   if (!event->handled() &&
     26       event->type() == ui::ET_MOUSE_PRESSED &&
     27       event->flags() & ui::EF_IS_DOUBLE_CLICK &&
     28       event->IsOnlyLeftMouseButton() &&
     29       target->delegate()->GetNonClientComponent(event->location()) ==
     30           HTCAPTION) {
     31     ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction(
     32         ash::UMA_PANEL_MINIMIZE_CAPTION_CLICK);
     33     wm::GetWindowState(target)->Minimize();
     34     event->StopPropagation();
     35     return;
     36   }
     37 }
     38 
     39 void PanelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) {
     40   aura::Window* target = static_cast<aura::Window*>(event->target());
     41   if (!event->handled() &&
     42       event->type() == ui::ET_GESTURE_TAP &&
     43       event->details().tap_count() == 2 &&
     44       target->delegate()->GetNonClientComponent(event->location()) ==
     45           HTCAPTION) {
     46     ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction(
     47         ash::UMA_PANEL_MINIMIZE_CAPTION_GESTURE);
     48     wm::GetWindowState(target)->Minimize();
     49     event->StopPropagation();
     50     return;
     51   }
     52 }
     53 
     54 }  // namespace ash
     55