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