Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Unified Diff: ui/views/desktop/desktop_window_manager.cc

Issue 8598024: Now that we are doing a hard-cut-over to Aura, remove a bunch of *Views based classes that are ob... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/desktop/desktop_window_manager.h ('k') | ui/views/desktop/desktop_window_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/desktop/desktop_window_manager.cc
===================================================================
--- ui/views/desktop/desktop_window_manager.cc (revision 110826)
+++ ui/views/desktop/desktop_window_manager.cc (working copy)
@@ -1,305 +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/views/desktop/desktop_window_manager.h"
-
-#include "ui/base/hit_test.h"
-#include "ui/gfx/point.h"
-#include "ui/gfx/rect.h"
-#include "ui/views/events/event.h"
-#include "ui/views/window/non_client_view.h"
-#include "views/widget/native_widget_private.h"
-#include "views/widget/native_widget_view.h"
-#include "views/widget/native_widget_views.h"
-#include "views/widget/widget_delegate.h"
-
-namespace {
-
-class MoveWindowController : public views::desktop::WindowController {
- public:
- MoveWindowController(views::Widget* widget, const gfx::Point& start)
- : target_(widget),
- offset_(start) {
- }
-
- virtual ~MoveWindowController() {
- }
-
- bool OnMouseEvent(const views::MouseEvent& event) {
- if (event.type()== ui::ET_MOUSE_DRAGGED) {
- gfx::Point origin = event.location().Subtract(offset_);
- gfx::Rect rect = target_->GetWindowScreenBounds();
- rect.set_origin(origin);
- target_->SetBounds(rect);
- return true;
- }
- return false;
- }
-
- private:
- views::Widget* target_;
- gfx::Point offset_;
-
- DISALLOW_COPY_AND_ASSIGN(MoveWindowController);
-};
-
-// Simple resize controller that handle all resize as if the bottom
-// right corner is selected.
-class ResizeWindowController : public views::desktop::WindowController {
- public:
- ResizeWindowController(views::Widget* widget)
- : target_(widget) {
- }
-
- virtual ~ResizeWindowController() {
- }
-
- bool OnMouseEvent(const views::MouseEvent& event) OVERRIDE {
- if (event.type()== ui::ET_MOUSE_DRAGGED) {
- gfx::Point location = event.location();
- gfx::Rect rect = target_->GetWindowScreenBounds();
- gfx::Point size = location.Subtract(rect.origin());
- target_->SetSize(gfx::Size(std::max(10, size.x()),
- std::max(10, size.y())));
- return true;
- }
- return false;
- }
-
- private:
- views::Widget* target_;
-
- DISALLOW_COPY_AND_ASSIGN(ResizeWindowController);
-};
-
-} // namespace
-
-namespace views {
-namespace desktop {
-
-WindowController::WindowController() {
-}
-
-WindowController::~WindowController() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// DesktopWindowManager, public:
-
-DesktopWindowManager::DesktopWindowManager(Widget* desktop)
- : desktop_(desktop),
- mouse_capture_(NULL),
- active_widget_(NULL) {
-}
-
-DesktopWindowManager::~DesktopWindowManager() {
- DCHECK_EQ(0U, toplevels_.size()) << "Window manager getting destroyed "
- << "before all the windows are closed.";
-}
-
-void DesktopWindowManager::UpdateWindowsAfterScreenSizeChanged(
- const gfx::Rect& new_size) {
- for (std::vector<Widget*>::iterator i = toplevels_.begin();
- i != toplevels_.end(); ++i) {
- Widget* toplevel = *i;
- if (!toplevel->IsMaximized())
- continue;
-
- // If the window is maximized, then resize it!
- toplevel->SetSize(new_size.size());
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// DesktopWindowManager, WindowManager implementation:
-
-void DesktopWindowManager::StartMoveDrag(
- views::Widget* widget,
- const gfx::Point& point) {
- DCHECK(!window_controller_.get());
- DCHECK(!HasMouseCapture());
- if (!widget->IsMaximized() && !widget->IsMinimized()) {
- gfx::Point new_point = point;
- if (desktop_->non_client_view()) {
- gfx::Rect client =
- desktop_->non_client_view()->frame_view()->GetBoundsForClientView();
- new_point.Offset(client.x(), client.y());
- }
- SetMouseCapture();
- window_controller_.reset(new MoveWindowController(widget, new_point));
- }
-}
-
-void DesktopWindowManager::StartResizeDrag(
- views::Widget* widget, const gfx::Point& point, int hittest_code) {
- DCHECK(!window_controller_.get());
- DCHECK(!HasMouseCapture());
- if (!widget->IsMaximized() &&
- !widget->IsMinimized() &&
- (widget->widget_delegate() || widget->widget_delegate()->CanResize())) {
- SetMouseCapture();
- window_controller_.reset(new ResizeWindowController(widget));
- }
-}
-
-bool DesktopWindowManager::SetMouseCapture(views::Widget* widget) {
- if (mouse_capture_)
- return false;
- if (mouse_capture_ == widget)
- return true;
- DCHECK(!HasMouseCapture());
- SetMouseCapture();
- mouse_capture_ = widget;
- return true;
-}
-
-bool DesktopWindowManager::ReleaseMouseCapture(views::Widget* widget) {
- if (!widget || mouse_capture_ != widget)
- return false;
- DCHECK(HasMouseCapture());
- ReleaseMouseCapture();
- mouse_capture_ = NULL;
- return true;
-}
-
-bool DesktopWindowManager::HasMouseCapture(const views::Widget* widget) const {
- return widget && mouse_capture_ == widget;
-}
-
-bool DesktopWindowManager::HandleKeyEvent(
- views::Widget* widget, const views::KeyEvent& event) {
- return active_widget_ ?
- static_cast<NativeWidgetViews*>(active_widget_->native_widget_private())
- ->OnKeyEvent(event) : false;
-}
-
-bool DesktopWindowManager::HandleMouseEvent(
- views::Widget* widget, const views::MouseEvent& event) {
- if (mouse_capture_) {
- views::MouseEvent translated(event, widget->GetRootView(),
- mouse_capture_->GetRootView());
- mouse_capture_->OnMouseEvent(translated);
- return true;
- }
-
- if (event.type() == ui::ET_MOUSE_PRESSED)
- ActivateWidgetAtLocation(widget, event.location());
- else if (event.type() == ui::ET_MOUSEWHEEL && active_widget_)
- return active_widget_->OnMouseEvent(event);
-
- if (window_controller_.get()) {
- if (!window_controller_->OnMouseEvent(event)) {
- ReleaseMouseCapture();
- window_controller_.reset();
- }
- return true;
- }
-
- return false;
-}
-
-ui::TouchStatus DesktopWindowManager::HandleTouchEvent(Widget* widget,
- const TouchEvent& event) {
- // If there is a widget capturing mouse events, the widget should also receive
- // touch events.
- if (mouse_capture_) {
- views::TouchEvent translated(event, widget->GetRootView(),
- mouse_capture_->GetRootView());
- return mouse_capture_->OnTouchEvent(translated);
- }
-
- // If a touch event activates a Widget, let the event still go through to the
- // activated Widget.
- if (event.type() == ui::ET_TOUCH_PRESSED)
- ActivateWidgetAtLocation(widget, event.location());
- return ui::TOUCH_STATUS_UNKNOWN;
-}
-
-void DesktopWindowManager::Register(Widget* widget) {
- DCHECK(!widget->HasObserver(this));
- if (widget->is_top_level())
- toplevels_.push_back(widget);
- widget->AddObserver(this);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// DesktopWindowManager, private:
-
-void DesktopWindowManager::OnWidgetClosing(Widget* widget) {
- if (active_widget_ && active_widget_ == widget)
- active_widget_ = NULL;
- if (widget->is_top_level()) {
- for (std::vector<Widget*>::iterator i = toplevels_.begin();
- i != toplevels_.end(); ++i) {
- if (*i == widget) {
- toplevels_.erase(i);
- break;
- }
- }
- }
-}
-
-void DesktopWindowManager::OnWidgetVisibilityChanged(Widget* widget,
- bool visible) {
- // If there's no active Widget, then activate the first visible toplevel
- // Widget.
- if (widget->is_top_level() && widget->CanActivate() && visible &&
- active_widget_ == NULL) {
- Activate(widget);
- }
-}
-
-void DesktopWindowManager::OnWidgetActivationChanged(Widget* widget,
- bool active) {
- if (active) {
- if (active_widget_)
- active_widget_->Deactivate();
- active_widget_ = widget;
- } else if (widget == active_widget_) {
- active_widget_ = NULL;
- }
-}
-
-void DesktopWindowManager::SetMouseCapture() {
- return desktop_->native_widget_private()->SetMouseCapture();
-}
-
-void DesktopWindowManager::ReleaseMouseCapture() {
- return desktop_->native_widget_private()->ReleaseMouseCapture();
-}
-
-bool DesktopWindowManager::HasMouseCapture() const {
- return desktop_->native_widget_private()->HasMouseCapture();
-}
-
-void DesktopWindowManager::Activate(Widget* widget) {
- if (widget && widget->IsActive())
- return;
-
- if (widget) {
- if (!widget->HasObserver(this))
- widget->AddObserver(this);
- widget->Activate();
- }
-}
-
-bool DesktopWindowManager::ActivateWidgetAtLocation(Widget* widget,
- const gfx::Point& point) {
- View* target = widget->GetRootView()->GetEventHandlerForPoint(point);
-
- if (target->GetClassName() == internal::NativeWidgetView::kViewClassName) {
- internal::NativeWidgetView* native_widget_view =
- static_cast<internal::NativeWidgetView*>(target);
- views::Widget* target_widget = native_widget_view->GetAssociatedWidget();
- if (!target_widget->IsActive() && target_widget->CanActivate()) {
- Activate(target_widget);
- return true;
- }
- }
-
- return false;
-}
-
-} // namespace desktop
-} // namespace views
« no previous file with comments | « ui/views/desktop/desktop_window_manager.h ('k') | ui/views/desktop/desktop_window_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698