| Index: ash/wm/drag_details.cc
|
| diff --git a/ash/wm/drag_details.cc b/ash/wm/drag_details.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f18743163b03cd5b7cfb1c42d07846759fbf6c62
|
| --- /dev/null
|
| +++ b/ash/wm/drag_details.cc
|
| @@ -0,0 +1,74 @@
|
| +// Copyright 2013 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 "ash/wm/drag_details.h"
|
| +
|
| +#include "ash/wm/window_resizer.h"
|
| +#include "ui/aura/window.h"
|
| +#include "ui/base/hit_test.h"
|
| +
|
| +namespace ash {
|
| +
|
| +namespace {
|
| +
|
| +int GetSizeChangeDirectionForWindowComponent(int window_component) {
|
| + int size_change_direction = WindowResizer::kBoundsChangeDirection_None;
|
| + switch (window_component) {
|
| + case HTTOPLEFT:
|
| + case HTTOPRIGHT:
|
| + case HTBOTTOMLEFT:
|
| + case HTBOTTOMRIGHT:
|
| + case HTGROWBOX:
|
| + case HTCAPTION:
|
| + size_change_direction |=
|
| + WindowResizer::kBoundsChangeDirection_Horizontal |
|
| + WindowResizer::kBoundsChangeDirection_Vertical;
|
| + break;
|
| + case HTTOP:
|
| + case HTBOTTOM:
|
| + size_change_direction |= WindowResizer::kBoundsChangeDirection_Vertical;
|
| + break;
|
| + case HTRIGHT:
|
| + case HTLEFT:
|
| + size_change_direction |= WindowResizer::kBoundsChangeDirection_Horizontal;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + return size_change_direction;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +DragDetails::DragDetails(aura::Window* window,
|
| + const gfx::Point& location,
|
| + int window_component,
|
| + aura::client::WindowMoveSource source)
|
| + : initial_bounds_in_parent(window->bounds()),
|
| + initial_location_in_parent(location),
|
| + initial_opacity(window->layer()->opacity()),
|
| + window_component(window_component),
|
| + bounds_change(
|
| + WindowResizer::GetBoundsChangeForWindowComponent(window_component)),
|
| + position_change_direction(
|
| + WindowResizer::GetPositionChangeDirectionForWindowComponent(
|
| + window_component)),
|
| + size_change_direction(
|
| + GetSizeChangeDirectionForWindowComponent(window_component)),
|
| + is_resizable(bounds_change != WindowResizer::kBoundsChangeDirection_None),
|
| + source(source),
|
| + should_attach_to_shelf(window->type() == ui::wm::WINDOW_TYPE_PANEL &&
|
| + wm::GetWindowState(window)->panel_attached()),
|
| + window_resizer(NULL) {
|
| + wm::WindowState* window_state = wm::GetWindowState(window);
|
| + if (window_state->IsNormalShowState() &&
|
| + window_state->HasRestoreBounds() &&
|
| + window_component == HTCAPTION)
|
| + restore_bounds = window_state->GetRestoreBoundsInScreen();
|
| +}
|
| +
|
| +DragDetails::~DragDetails() {
|
| +}
|
| +
|
| +} // namespace ash
|
|
|