Index: ash/wm/workspace/phantom_window_controller.h |
diff --git a/ash/wm/workspace/phantom_window_controller.h b/ash/wm/workspace/phantom_window_controller.h |
index 7ea76c41012e6f2089347baa74d8a6cbacacef90..44262ea4857b3a0efe978c39aa5df141f6ddc5f0 100644 |
--- a/ash/wm/workspace/phantom_window_controller.h |
+++ b/ash/wm/workspace/phantom_window_controller.h |
@@ -9,10 +9,12 @@ |
#include "base/basictypes.h" |
#include "base/memory/scoped_ptr.h" |
#include "ui/base/animation/animation_delegate.h" |
+#include "ui/gfx/display.h" |
#include "ui/gfx/rect.h" |
namespace aura { |
class Window; |
+class RootWindow; |
} |
namespace ui { |
@@ -30,9 +32,17 @@ namespace internal { |
// of a window. It's used used during dragging a window to show a snap location. |
class ASH_EXPORT PhantomWindowController : public ui::AnimationDelegate { |
public: |
+ enum Style { |
+ STYLE_SHADOW, // for window snapping. |
+ STYLE_WINDOW, // for window dragging. |
+ }; |
+ |
explicit PhantomWindowController(aura::Window* window); |
virtual ~PhantomWindowController(); |
+ // Sets the display where the phantom is placed. |
+ void SetDestinationDisplay(const gfx::Display& dst_display); |
+ |
// Bounds last passed to Show(). |
const gfx::Rect& bounds() const { return bounds_; } |
@@ -56,6 +66,14 @@ class ASH_EXPORT PhantomWindowController : public ui::AnimationDelegate { |
phantom_below_window_ = phantom_below_window; |
} |
+ // Sets/gets the style of the phantom window. |
+ void set_style(Style style); |
+ Style style() const { return style_; } |
+ |
+ // Sets/gets the opacity of the phantom window. |
+ void SetOpacity(float opacity); |
+ float GetOpacity() const; |
+ |
// ui::AnimationDelegate overrides: |
virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; |
@@ -63,9 +81,18 @@ class ASH_EXPORT PhantomWindowController : public ui::AnimationDelegate { |
// Creates and shows the |phantom_widget_| at |bounds|. |
void CreatePhantomWidget(const gfx::Rect& bounds); |
+ // Sets bounds of the phantom window. The window is shown on |dst_display_| |
+ // if its id() is valid. Otherwise, a display nearest to |bounds| is chosen. |
+ void SetBoundsInternal(const gfx::Rect& bounds); |
+ |
// Window the phantom is placed beneath. |
aura::Window* window_; |
+ // The display where the phantom is placed. When dst_display_.id() is -1 (i.e. |
+ // the default), a display nearest to the current |bounds_| is automatically |
+ // used. |
+ gfx::Display dst_display_; |
+ |
// If set, the phantom window should get stacked below this window. |
aura::Window* phantom_below_window_; |
@@ -81,6 +108,9 @@ class ASH_EXPORT PhantomWindowController : public ui::AnimationDelegate { |
// Used to transition the bounds. |
scoped_ptr<ui::SlideAnimation> animation_; |
+ // The style of the phantom window. |
+ Style style_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PhantomWindowController); |
}; |