Index: chrome/browser/dock_info.h |
=================================================================== |
--- chrome/browser/dock_info.h (revision 68008) |
+++ chrome/browser/dock_info.h (working copy) |
@@ -1,190 +0,0 @@ |
-// Copyright (c) 2009 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 CHROME_BROWSER_DOCK_INFO_H_ |
-#define CHROME_BROWSER_DOCK_INFO_H_ |
-#pragma once |
- |
-#include <set> |
- |
-#include "gfx/native_widget_types.h" |
-#include "gfx/point.h" |
-#include "gfx/rect.h" |
- |
-// DockInfo is used to do determine possible dock locations for a dragged |
-// tab. To use DockInfo invoke GetDockInfoAtPoint. This returns a new |
-// DockInfo whose type indicates the type of dock that should occur based |
-// on the screen location. As the user drags the mouse around invoke |
-// IsValidForPoint, this returns true if the DockInfo is still valid for the |
-// new location. If the DockInfo is not valid, invoke GetDockInfoAtPoint to |
-// get the new DockInfo. Use GetNewWindowBounds to get the position to place |
-// the new window at. |
-// |
-// DockInfos are cheap and explicitly allow copy and assignment operators. |
-class DockInfo { |
- public: |
- class Factory { |
- public: |
- virtual DockInfo GetDockInfoAtPoint( |
- const gfx::Point& screen_point, |
- const std::set<gfx::NativeView>& ignore) = 0; |
- |
- virtual gfx::NativeWindow GetLocalProcessWindowAtPoint( |
- const gfx::Point& screen_point, |
- const std::set<gfx::NativeView>& ignore) = 0; |
- |
- protected: |
- virtual ~Factory() {} |
- }; |
- |
- // Possible dock positions. |
- enum Type { |
- // Indicates there is no valid dock position for the current location. |
- NONE, |
- |
- // Indicates the new window should be positioned relative to the window |
- // identified by window(). |
- LEFT_OF_WINDOW, |
- RIGHT_OF_WINDOW, |
- BOTTOM_OF_WINDOW, |
- TOP_OF_WINDOW, |
- |
- // Indicates the window should be maximized on the monitor at hot_spot. |
- MAXIMIZE, |
- |
- // Indicates the window should be docked to a specific side of the monitor. |
- LEFT_HALF, |
- RIGHT_HALF, |
- BOTTOM_HALF |
- }; |
- |
- DockInfo() : type_(NONE), window_(NULL), in_enable_area_(false) {} |
- |
- // Returns true if |screen_loc| is close to the hotspot at |x|, |y|. If the |
- // point is close enough to the hotspot true is returned and |in_enable_area| |
- // is set appropriately. |
- static bool IsCloseToPoint(const gfx::Point& screen_loc, |
- int x, |
- int y, |
- bool* in_enable_area); |
- |
- // Variant of IsCloseToPoint used for monitor relative positions. |
- static bool IsCloseToMonitorPoint(const gfx::Point& screen_loc, |
- int x, |
- int y, |
- DockInfo::Type type, |
- bool* in_enable_area); |
- |
- // Sets the factory. |
- static void set_factory(Factory* factory) { factory_ = factory; } |
- |
- // Size of the popup window shown to indicate a valid dock location. |
- static int popup_width(); |
- static int popup_height(); |
- |
- // Returns the DockInfo for the specified point |screen_point|. |ignore| |
- // contains the set of windows to ignore from consideration. This contains the |
- // dragged window as well as any windows showing possible dock locations. |
- // |
- // If there is no docking position for the specified location the returned |
- // DockInfo has a type of NONE. |
- // |
- // If a Factory has been set, the method of the same name is invoked on the |
- // Factory to determine the DockInfo. |
- static DockInfo GetDockInfoAtPoint(const gfx::Point& screen_point, |
- const std::set<gfx::NativeView>& ignore); |
- |
- // Returns the top most window from the current process at |screen_point|. |
- // See GetDockInfoAtPoint for a description of |ignore|. This returns NULL if |
- // there is no window from the current process at |screen_point|, or another |
- // window obscures the topmost window from our process at |screen_point|. |
- // |
- // If a Factory has been set, the method of the same name is invoked on the |
- // Factory to determine the DockInfo. |
- static gfx::NativeWindow GetLocalProcessWindowAtPoint( |
- const gfx::Point& screen_point, |
- const std::set<gfx::NativeView>& ignore); |
- |
- // Returns true if this DockInfo is valid for the specified point. This |
- // resets in_enable_area based on the new location. |
- bool IsValidForPoint(const gfx::Point& screen_point); |
- |
- // Returns the bounds for the new window in |new_window_bounds|. If the new |
- // window is to be maximized, |maximize_new_window| is set to true. |
- // This returns true if type is other than NONE or the mouse isn't in the |
- // enable area, false otherwise. |
- bool GetNewWindowBounds(gfx::Rect* new_window_bounds, |
- bool* maximize_new_window) const; |
- |
- // Adjust the bounds of the other window during docking. Does nothing if type |
- // is NONE, in_enable_are is false, or the type is not window relative. |
- void AdjustOtherWindowBounds() const; |
- |
- // Type of docking to occur. |
- void set_type(Type type) { type_ = type; } |
- Type type() const { return type_; } |
- |
- // The window to dock too. Is null for dock types that are relative to the |
- // monitor. |
- void set_window(gfx::NativeWindow window) { window_ = window; } |
- gfx::NativeWindow window() const { return window_; } |
- |
- // The location of the hotspot. |
- void set_hot_spot(const gfx::Point& hot_spot) { hot_spot_ = hot_spot; } |
- const gfx::Point& hot_spot() const { return hot_spot_; } |
- |
- // Bounds of the monitor. |
- void set_monitor_bounds(const gfx::Rect& monitor_bounds) { |
- monitor_bounds_ = monitor_bounds; |
- } |
- const gfx::Rect& monitor_bounds() const { return monitor_bounds_; } |
- |
- // Returns the bounds of the window to show the indicator for. |
- gfx::Rect GetPopupRect() const; |
- |
- // Returns true if the drop should result in docking. DockInfo maintains two |
- // states (as indicated by this boolean): |
- // 1. The mouse is close enough to the hot spot such that a visual indicator |
- // should be shown, but if the user releases the mouse docking shouldn't |
- // result. This corresponds to a value of false for in_enable_area. |
- // 2. The mouse is close enough to the hot spot such that releasing the mouse |
- // should result in docking. This corresponds to a value of true for |
- // in_enable_area. |
- void set_in_enable_area(bool in_enable_area) { |
- in_enable_area_ = in_enable_area; |
- } |
- bool in_enable_area() const { return in_enable_area_; } |
- |
- // Returns true if |other| is considered equal to this. Two DockInfos are |
- // considered equal if they have the same type and same window. |
- bool equals(const DockInfo& other) const { |
- return type_ == other.type_ && window_ == other.window_ && |
- monitor_bounds_ == other.monitor_bounds_; |
- } |
- |
- // If screen_loc is close enough to the hot spot given by |x| and |y|, the |
- // type and hot_spot are set from the supplied parameters. This is used |
- // internally, there is no need to invoke this otherwise. |
- bool CheckMonitorPoint(const gfx::Point& screen_loc, |
- int x, |
- int y, |
- Type type); |
- |
- private: |
- // Returns the bounds of the window. |
- bool GetWindowBounds(gfx::Rect* bounds) const; |
- void SizeOtherWindowTo(const gfx::Rect& bounds) const; |
- |
- Type type_; |
- gfx::NativeWindow window_; |
- gfx::Point hot_spot_; |
- gfx::Rect monitor_bounds_; |
- bool in_enable_area_; |
- |
- // Factory that creates DockInfos. By default this is NULL, which gives the |
- // default behavior. |
- static Factory* factory_; |
-}; |
- |
-#endif // CHROME_BROWSER_DOCK_INFO_H_ |