summaryrefslogtreecommitdiffstats
path: root/views/desktop/desktop_window_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'views/desktop/desktop_window_manager.h')
-rw-r--r--views/desktop/desktop_window_manager.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/views/desktop/desktop_window_manager.h b/views/desktop/desktop_window_manager.h
new file mode 100644
index 0000000..146bb2a
--- /dev/null
+++ b/views/desktop/desktop_window_manager.h
@@ -0,0 +1,69 @@
+// 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.
+
+#ifndef VIEWS_DESKTOP_DESKTOP_WINDOW_MANAGER_H_
+#define VIEWS_DESKTOP_DESKTOP_WINDOW_MANAGER_H_
+
+#include "base/compiler_specific.h"
+#include "base/scoped_ptr.h"
+#include "views/widget/window_manager.h"
+
+namespace gfx {
+class Point;
+}
+
+namespace views {
+class Widget;
+
+namespace desktop {
+class WindowController;
+
+// A tentative window manager for views destktop until we have *right*
+// implementation based on aura/layer API. This is minimum
+// implmenetation and complicated actio like moving transformed window
+// doesn't work. TODO(oshima): move active widget to WindowManager.
+class DesktopWindowManager : public views::WindowManager {
+ public:
+ DesktopWindowManager(Widget* desktop);
+ virtual ~DesktopWindowManager();
+
+ // views::WindowManager implementations:
+ virtual void StartMoveDrag(views::Widget* widget,
+ const gfx::Point& point) OVERRIDE;
+ virtual void StartResizeDrag(views::Widget* widget,
+ const gfx::Point& point,
+ int hittest_code);
+ virtual bool SetMouseCapture(views::Widget* widget) OVERRIDE;
+ virtual bool ReleaseMouseCapture(views::Widget* widget) OVERRIDE;
+ virtual bool HasMouseCapture(const views::Widget* widget) const OVERRIDE;
+ virtual bool HandleMouseEvent(views::Widget* widget,
+ const views::MouseEvent& event) OVERRIDE;
+
+ private:
+ void SetMouseCapture();
+ void ReleaseMouseCapture();
+ bool HasMouseCapture() const;
+
+ views::Widget* desktop_;
+ views::Widget* mouse_capture_;
+ scoped_ptr<WindowController> window_controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(DesktopWindowManager);
+};
+
+// An behavioral interface for objects implements window resize/movement.
+class WindowController {
+ public:
+ WindowController();
+ virtual ~WindowController();
+ virtual bool OnMouseEvent(const views::MouseEvent& event) = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(WindowController);
+};
+
+} // namespace desktop
+} // namespace views
+
+#endif // VIEWS_DESKTOP_DESKTOP_WINDOW_MANAGER_H_