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