| Index: ui/aura_shell/default_container_event_filter.cc
|
| ===================================================================
|
| --- ui/aura_shell/default_container_event_filter.cc (revision 115655)
|
| +++ ui/aura_shell/default_container_event_filter.cc (working copy)
|
| @@ -1,131 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/aura_shell/default_container_event_filter.h"
|
| -
|
| -#include "ui/aura/event.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/aura_shell/default_container_layout_manager.h"
|
| -#include "ui/aura_shell/window_frame.h"
|
| -#include "ui/aura_shell/window_util.h"
|
| -#include "ui/base/hit_test.h"
|
| -
|
| -namespace {
|
| -
|
| -// Sends OnWindowHoveredChanged(|hovered|) to the WindowFrame for |window|,
|
| -// which may be NULL.
|
| -void WindowHoverChanged(aura::Window* window, bool hovered) {
|
| - if (!window)
|
| - return;
|
| - aura_shell::WindowFrame* window_frame =
|
| - static_cast<aura_shell::WindowFrame*>(
|
| - window->GetProperty(aura_shell::kWindowFrameKey));
|
| - if (!window_frame)
|
| - return;
|
| - window_frame->OnWindowHoverChanged(hovered);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace aura_shell {
|
| -namespace internal {
|
| -
|
| -DefaultContainerEventFilter::DefaultContainerEventFilter(aura::Window* owner)
|
| - : ToplevelWindowEventFilter(owner),
|
| - drag_state_(DRAG_NONE),
|
| - hovered_window_(NULL) {
|
| -}
|
| -
|
| -DefaultContainerEventFilter::~DefaultContainerEventFilter() {
|
| -}
|
| -
|
| -bool DefaultContainerEventFilter::PreHandleMouseEvent(aura::Window* target,
|
| - aura::MouseEvent* event) {
|
| - DefaultContainerLayoutManager* layout_manager =
|
| - static_cast<DefaultContainerLayoutManager*>(owner()->layout_manager());
|
| - DCHECK(layout_manager);
|
| -
|
| - // TODO(oshima|derat): Incorporate the logic below and introduce DragObserver
|
| - // (or something similar) to decouple DCLM.
|
| -
|
| - // Notify layout manager that drag event may move/resize the target wnidow.
|
| - if (event->type() == ui::ET_MOUSE_DRAGGED && drag_state_ == DRAG_NONE)
|
| - layout_manager->PrepareForMoveOrResize(target, event);
|
| -
|
| - bool handled = ToplevelWindowEventFilter::PreHandleMouseEvent(target, event);
|
| -
|
| - switch (event->type()) {
|
| - case ui::ET_MOUSE_DRAGGED:
|
| - // Cancel move/resize if the event wasn't handled, or
|
| - // drag_state_ didn't move to MOVE or RESIZE.
|
| - if (handled) {
|
| - switch (drag_state_) {
|
| - case DRAG_NONE:
|
| - if (!UpdateDragState())
|
| - layout_manager->CancelMoveOrResize(target, event);
|
| - break;
|
| - case DRAG_MOVE:
|
| - layout_manager->ProcessMove(target, event);
|
| - break;
|
| - case DRAG_RESIZE:
|
| - break;
|
| - }
|
| - } else {
|
| - layout_manager->CancelMoveOrResize(target, event);
|
| - }
|
| - break;
|
| - case ui::ET_MOUSE_ENTERED:
|
| - UpdateHoveredWindow(GetActivatableWindow(target));
|
| - break;
|
| - case ui::ET_MOUSE_EXITED:
|
| - UpdateHoveredWindow(NULL);
|
| - break;
|
| - case ui::ET_MOUSE_RELEASED:
|
| - if (drag_state_ == DRAG_MOVE)
|
| - layout_manager->EndMove(target, event);
|
| - else if (drag_state_ == DRAG_RESIZE)
|
| - layout_manager->EndResize(target, event);
|
| -
|
| - drag_state_ = DRAG_NONE;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - return handled;
|
| -}
|
| -
|
| -bool DefaultContainerEventFilter::UpdateDragState() {
|
| - DCHECK_EQ(DRAG_NONE, drag_state_);
|
| - switch (window_component()) {
|
| - case HTCAPTION:
|
| - drag_state_ = DRAG_MOVE;
|
| - break;
|
| - case HTTOP:
|
| - case HTTOPRIGHT:
|
| - case HTRIGHT:
|
| - case HTBOTTOMRIGHT:
|
| - case HTBOTTOM:
|
| - case HTBOTTOMLEFT:
|
| - case HTLEFT:
|
| - case HTTOPLEFT:
|
| - case HTGROWBOX:
|
| - drag_state_ = DRAG_RESIZE;
|
| - break;
|
| - default:
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void DefaultContainerEventFilter::UpdateHoveredWindow(
|
| - aura::Window* toplevel_window) {
|
| - if (toplevel_window == hovered_window_)
|
| - return;
|
| - WindowHoverChanged(hovered_window_, false);
|
| - hovered_window_ = toplevel_window;
|
| - WindowHoverChanged(hovered_window_, true);
|
| -}
|
| -
|
| -} // internal
|
| -} // aura_shell
|
|
|