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

Unified Diff: ash/wm/workspace/phantom_window_controller.h

Issue 10823199: While dragging a window, show a semi-transparent aura window instead of the standard gray phantom wi (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: re-upload Created 8 years, 4 months 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
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);
};

Powered by Google App Engine
This is Rietveld 408576698