summaryrefslogtreecommitdiffstats
path: root/chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc')
-rw-r--r--chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc211
1 files changed, 0 insertions, 211 deletions
diff --git a/chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc b/chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc
deleted file mode 100644
index 24f9a0ad90b..00000000000
--- a/chromium/ash/wm/caption_buttons/alternate_frame_size_button.cc
+++ /dev/null
@@ -1,211 +0,0 @@
-// 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/caption_buttons/alternate_frame_size_button.h"
-
-#include "ash/metrics/user_metrics_recorder.h"
-#include "ash/shell.h"
-#include "ash/touch/touch_uma.h"
-#include "ash/wm/window_state.h"
-#include "ash/wm/workspace/snap_sizer.h"
-#include "ui/gfx/vector2d.h"
-#include "ui/views/widget/widget.h"
-
-namespace {
-
-// The default delay between the user pressing the size button and the buttons
-// adjacent to the size button morphing into buttons for snapping left and
-// right.
-const int kSetButtonsToSnapModeDelayMs = 150;
-
-// The amount that a user can overshoot the snap left / snap right button and
-// keep the snap left / snap right button pressed.
-const int kPressedHitBoundsExpandX = 200;
-const int kPressedHitBoundsExpandY = 50;
-
-} // namespace
-
-namespace ash {
-
-AlternateFrameSizeButton::AlternateFrameSizeButton(
- views::ButtonListener* listener,
- views::Widget* frame,
- AlternateFrameSizeButtonDelegate* delegate)
- : FrameCaptionButton(listener, CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE),
- frame_(frame),
- delegate_(delegate),
- set_buttons_to_snap_mode_delay_ms_(kSetButtonsToSnapModeDelayMs),
- in_snap_mode_(false),
- snap_type_(SNAP_NONE) {
-}
-
-AlternateFrameSizeButton::~AlternateFrameSizeButton() {
-}
-
-bool AlternateFrameSizeButton::OnMousePressed(const ui::MouseEvent& event) {
- // The minimize and close buttons are set to snap left and right when snapping
- // is enabled. Do not enable snapping if the minimize button is not visible.
- // The close button is always visible.
- if (IsTriggerableEvent(event) &&
- !in_snap_mode_ &&
- delegate_->IsMinimizeButtonVisible()) {
- StartSetButtonsToSnapModeTimer(event);
- }
- FrameCaptionButton::OnMousePressed(event);
- return true;
-}
-
-bool AlternateFrameSizeButton::OnMouseDragged(const ui::MouseEvent& event) {
- UpdatePressedButton(event);
- FrameCaptionButton::OnMouseDragged(event);
- return true;
-}
-
-void AlternateFrameSizeButton::OnMouseReleased(const ui::MouseEvent& event) {
- if (!IsTriggerableEvent(event) || !CommitSnap(event))
- FrameCaptionButton::OnMouseReleased(event);
-}
-
-void AlternateFrameSizeButton::OnMouseCaptureLost() {
- SetButtonsToNormalMode(AlternateFrameSizeButtonDelegate::ANIMATE_YES);
- FrameCaptionButton::OnMouseCaptureLost();
-}
-
-void AlternateFrameSizeButton::OnGestureEvent(ui::GestureEvent* event) {
- if (event->details().touch_points() > 1) {
- SetButtonsToNormalMode(AlternateFrameSizeButtonDelegate::ANIMATE_YES);
- return;
- }
-
- if (event->type() == ui::ET_GESTURE_TAP_DOWN) {
- StartSetButtonsToSnapModeTimer(*event);
- // Go through FrameCaptionButton's handling so that the button gets pressed.
- FrameCaptionButton::OnGestureEvent(event);
- return;
- }
-
- if (event->type() == ui::ET_GESTURE_SCROLL_BEGIN ||
- event->type() == ui::ET_GESTURE_SCROLL_UPDATE) {
- UpdatePressedButton(*event);
- event->SetHandled();
- return;
- }
-
- if (event->type() == ui::ET_GESTURE_TAP ||
- event->type() == ui::ET_GESTURE_SCROLL_END ||
- event->type() == ui::ET_SCROLL_FLING_START ||
- event->type() == ui::ET_GESTURE_END) {
- if (CommitSnap(*event)) {
- if (event->type() == ui::ET_GESTURE_TAP) {
- TouchUMA::GetInstance()->RecordGestureAction(
- TouchUMA::GESTURE_FRAMEMAXIMIZE_TAP);
- }
- event->SetHandled();
- return;
- }
- }
-
- FrameCaptionButton::OnGestureEvent(event);
-}
-
-void AlternateFrameSizeButton::StartSetButtonsToSnapModeTimer(
- const ui::LocatedEvent& event) {
- set_buttons_to_snap_mode_timer_event_location_ = event.location();
- if (set_buttons_to_snap_mode_delay_ms_ == 0) {
- SetButtonsToSnapMode();
- } else {
- set_buttons_to_snap_mode_timer_.Start(
- FROM_HERE,
- base::TimeDelta::FromMilliseconds(set_buttons_to_snap_mode_delay_ms_),
- this,
- &AlternateFrameSizeButton::SetButtonsToSnapMode);
- }
-}
-
-void AlternateFrameSizeButton::SetButtonsToSnapMode() {
- if (in_snap_mode_)
- return;
- in_snap_mode_ = true;
- delegate_->SetButtonIcons(CAPTION_BUTTON_ICON_LEFT_SNAPPED,
- CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
- AlternateFrameSizeButtonDelegate::ANIMATE_YES);
-}
-
-void AlternateFrameSizeButton::UpdatePressedButton(
- const ui::LocatedEvent& event) {
- if (!in_snap_mode_) {
- // Set the buttons adjacent to the size button to snap left and right early
- // if the user drags past the drag threshold.
- // |set_buttons_to_snap_mode_timer_| is checked to avoid entering the snap
- // mode as a result of an unsupported drag type (e.g. only the right mouse
- // button is pressed).
- gfx::Vector2d delta(
- event.location() - set_buttons_to_snap_mode_timer_event_location_);
- if (!set_buttons_to_snap_mode_timer_.IsRunning() ||
- !views::View::ExceededDragThreshold(delta)) {
- return;
- }
- SetButtonsToSnapMode();
- }
-
- gfx::Point event_location_in_screen(event.location());
- views::View::ConvertPointToScreen(this, &event_location_in_screen);
-
- gfx::Insets pressed_button_hittest_insets(-kPressedHitBoundsExpandY,
- -kPressedHitBoundsExpandX,
- -kPressedHitBoundsExpandY,
- -kPressedHitBoundsExpandX);
- const FrameCaptionButton* pressed_button = delegate_->PressButtonAt(
- event_location_in_screen, pressed_button_hittest_insets);
- snap_type_ = SNAP_NONE;
- if (pressed_button) {
- switch (pressed_button->icon()) {
- case CAPTION_BUTTON_ICON_LEFT_SNAPPED:
- snap_type_ = SNAP_LEFT;
- break;
- case CAPTION_BUTTON_ICON_RIGHT_SNAPPED:
- snap_type_ = SNAP_RIGHT;
- break;
- case CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE:
- // snap_type_ = SNAP_NONE
- break;
- case CAPTION_BUTTON_ICON_MINIMIZE:
- case CAPTION_BUTTON_ICON_CLOSE:
- NOTREACHED();
- break;
- }
- }
-}
-
-bool AlternateFrameSizeButton::CommitSnap(const ui::LocatedEvent& event) {
- // The position of |event| may be different than the position of the previous
- // event.
- UpdatePressedButton(event);
-
- if (in_snap_mode_ &&
- (snap_type_ == SNAP_LEFT || snap_type_ == SNAP_RIGHT)) {
- using internal::SnapSizer;
- SnapSizer::SnapWindow(ash::wm::GetWindowState(frame_->GetNativeWindow()),
- snap_type_ == SNAP_LEFT ?
- SnapSizer::LEFT_EDGE : SnapSizer::RIGHT_EDGE);
- ash::Shell::GetInstance()->metrics()->RecordUserMetricsAction(
- snap_type_ == SNAP_LEFT ?
- ash::UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT :
- ash::UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT);
- SetButtonsToNormalMode(AlternateFrameSizeButtonDelegate::ANIMATE_NO);
- return true;
- }
- SetButtonsToNormalMode(AlternateFrameSizeButtonDelegate::ANIMATE_YES);
- return false;
-}
-
-void AlternateFrameSizeButton::SetButtonsToNormalMode(
- AlternateFrameSizeButtonDelegate::Animate animate) {
- in_snap_mode_ = false;
- snap_type_ = SNAP_NONE;
- set_buttons_to_snap_mode_timer_.Stop();
- delegate_->SetButtonsToNormal(animate);
-}
-
-} // namespace ash