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

Unified Diff: ash/wm/drag_window_controller.cc

Issue 2129773002: [CrOS] Initial rough cut of alt-tab window cycling UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: function rename Created 4 years, 5 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
« no previous file with comments | « ash/common/wm/forwarding_layer_delegate.cc ('k') | ash/wm/window_cycle_list.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/drag_window_controller.cc
diff --git a/ash/wm/drag_window_controller.cc b/ash/wm/drag_window_controller.cc
index 49377cb037757670201dbec4501b3d20a2523fa5..4e1fbddadec0f2dbd7a9a723aedba62557ee0f40 100644
--- a/ash/wm/drag_window_controller.cc
+++ b/ash/wm/drag_window_controller.cc
@@ -6,7 +6,9 @@
#include <algorithm>
+#include "ash/aura/wm_window_aura.h"
#include "ash/common/shell_window_ids.h"
+#include "ash/common/wm/forwarding_layer_delegate.h"
#include "ash/display/window_tree_host_manager.h"
#include "ash/screen_util.h"
#include "ash/shell.h"
@@ -28,61 +30,9 @@
#include "ui/wm/core/window_util.h"
namespace ash {
-namespace {
-// A layer delegate to paint the content of the recreaetd layers
-// by delegating the paint request to the original delegate.
-// It checks if the orignal delegate is still valid by traversing
-// the original layers.
-class DragWindowLayerDelegate : public ui::LayerDelegate {
- public:
- DragWindowLayerDelegate(aura::Window* original_window,
- ui::LayerDelegate* delegate)
- : original_window_(original_window), original_delegate_(delegate) {}
- ~DragWindowLayerDelegate() override {}
-
- private:
- // ui:LayerDelegate:
- void OnPaintLayer(const ui::PaintContext& context) override {
- if (!original_delegate_)
- return;
- // |original_delegate_| may have already been deleted or
- // disconnected by this time. Check if |original_delegate_| is still
- // used by the original_window tree, or skip otherwise.
- if (IsDelegateValid(original_window_->layer()))
- original_delegate_->OnPaintLayer(context);
- else
- original_delegate_ = nullptr;
- }
- void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override {}
- void OnDeviceScaleFactorChanged(float device_scale_factor) override {
- // Don't tell the original delegate about device scale factor change
- // on cloned layer because the original layer is still on the same display.
- }
- base::Closure PrepareForLayerBoundsChange() override {
- return base::Closure();
- }
-
- bool IsDelegateValid(ui::Layer* layer) {
- if (layer->delegate() == original_delegate_)
- return true;
- for (auto* child : layer->children()) {
- if (IsDelegateValid(child))
- return true;
- }
- return false;
- }
-
- aura::Window* original_window_;
- ui::LayerDelegate* original_delegate_;
-
- DISALLOW_COPY_AND_ASSIGN(DragWindowLayerDelegate);
-};
-
-} // namespace
-
-// This keeps tack of the drag window's state. It creates/destory/updates bounds
-// and opacity based on the current bounds.
+// This keeps track of the drag window's state. It creates/destroys/updates
+// bounds and opacity based on the current bounds.
class DragWindowController::DragWindowDetails
: public aura::WindowDelegate,
public ::wm::LayerDelegateFactory {
@@ -186,8 +136,8 @@ class DragWindowController::DragWindowDetails
ui::LayerDelegate* CreateDelegate(ui::LayerDelegate* delegate) override {
if (!delegate)
return nullptr;
- DragWindowLayerDelegate* new_delegate =
- new DragWindowLayerDelegate(original_window_, delegate);
+ wm::ForwardingLayerDelegate* new_delegate = new wm::ForwardingLayerDelegate(
+ WmWindowAura::Get(original_window_), delegate);
delegates_.push_back(base::WrapUnique(new_delegate));
return new_delegate;
}
@@ -227,7 +177,7 @@ class DragWindowController::DragWindowDetails
aura::Window* original_window_ = nullptr;
- std::vector<std::unique_ptr<DragWindowLayerDelegate>> delegates_;
+ std::vector<std::unique_ptr<wm::ForwardingLayerDelegate>> delegates_;
// The copy of window_->layer() and its descendants.
std::unique_ptr<ui::LayerTreeOwner> layer_owner_;
« no previous file with comments | « ash/common/wm/forwarding_layer_delegate.cc ('k') | ash/wm/window_cycle_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698