panel_window_event_handler.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/client/aura_constants.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/window.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/window_delegate.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/events/event.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/hit_test.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ash { 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace internal { 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPanelWindowEventHandler::PanelWindowEventHandler(aura::Window* owner) 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : ToplevelWindowEventHandler(owner) { 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()); 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (event->type() == ui::ET_MOUSE_PRESSED && 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->flags() & ui::EF_IS_DOUBLE_CLICK && 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->delegate()->GetNonClientComponent(event->location()) == 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch HTCAPTION) { 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return; 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ToplevelWindowEventHandler::OnMouseEvent(event); 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid PanelWindowEventHandler::OnGestureEvent(ui::GestureEvent* event) { 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch aura::Window* target = static_cast<aura::Window*>(event->target()); 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (event->type() == ui::ET_GESTURE_TAP && 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->details().tap_count() == 2 && 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->delegate()->GetNonClientComponent(event->location()) == 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch HTCAPTION) { 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch target->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch event->StopPropagation(); 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return; 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ToplevelWindowEventHandler::OnGestureEvent(event); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace internal 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace ash 50