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 13 namespace ash { 14 namespace internal { 15 PanelWindowEventHandler(aura::Window * owner)16PanelWindowEventHandler::PanelWindowEventHandler(aura::Window* owner) 17 : ToplevelWindowEventHandler(owner) { 18 } 19 ~PanelWindowEventHandler()20PanelWindowEventHandler::~PanelWindowEventHandler() { 21 } 22 OnMouseEvent(ui::MouseEvent * event)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 OnGestureEvent(ui::GestureEvent * event)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