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/wm/window_state.h" 8#include "ui/aura/window.h" 9#include "ui/aura/window_delegate.h" 10#include "ui/base/hit_test.h" 11#include "ui/events/event.h" 12 13namespace ash { 14namespace internal { 15 16PanelWindowEventHandler::PanelWindowEventHandler(aura::Window* owner) 17 : ToplevelWindowEventHandler(owner) { 18} 19 20PanelWindowEventHandler::~PanelWindowEventHandler() { 21} 22 23void PanelWindowEventHandler::OnMouseEvent(ui::MouseEvent* event) { 24 aura::Window* target = static_cast<aura::Window*>(event->target()); 25 if (event->type() == ui::ET_MOUSE_PRESSED && 26 event->flags() & ui::EF_IS_DOUBLE_CLICK && 27 event->IsOnlyLeftMouseButton() && 28 target->delegate()->GetNonClientComponent(event->location()) == 29 HTCAPTION) { 30 wm::GetWindowState(target)->Minimize(); 31 return; 32 } 33 ToplevelWindowEventHandler::OnMouseEvent(event); 34} 35 36void PanelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { 37 aura::Window* target = static_cast<aura::Window*>(event->target()); 38 if (event->type() == ui::ET_GESTURE_TAP && 39 event->details().tap_count() == 2 && 40 target->delegate()->GetNonClientComponent(event->location()) == 41 HTCAPTION) { 42 wm::GetWindowState(target)->Minimize(); 43 event->StopPropagation(); 44 return; 45 } 46 ToplevelWindowEventHandler::OnGestureEvent(event); 47} 48 49} // namespace internal 50} // namespace ash 51