1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/wm/panels/panel_window_event_handler.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/metrics/user_metrics_recorder.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/shell.h" 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ash/wm/window_state.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/window.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/window_delegate.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/hit_test.h" 13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ash { 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PanelWindowEventHandler::PanelWindowEventHandler() { 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPanelWindowEventHandler::~PanelWindowEventHandler() { 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PanelWindowEventHandler::OnMouseEvent(ui::MouseEvent* event) { 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch aura::Window* target = static_cast<aura::Window*>(event->target()); 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!event->handled() && 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) event->type() == ui::ET_MOUSE_PRESSED && 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->flags() & ui::EF_IS_DOUBLE_CLICK && 283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch event->IsOnlyLeftMouseButton() && 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->delegate()->GetNonClientComponent(event->location()) == 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch HTCAPTION) { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction( 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::UMA_PANEL_MINIMIZE_CAPTION_CLICK); 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) wm::GetWindowState(target)->Minimize(); 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) event->StopPropagation(); 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return; 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PanelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch aura::Window* target = static_cast<aura::Window*>(event->target()); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!event->handled() && 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) event->type() == ui::ET_GESTURE_TAP && 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->details().tap_count() == 2 && 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->delegate()->GetNonClientComponent(event->location()) == 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch HTCAPTION) { 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction( 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::UMA_PANEL_MINIMIZE_CAPTION_GESTURE); 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) wm::GetWindowState(target)->Minimize(); 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->StopPropagation(); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return; 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace ash 55