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

Unified Diff: ash/common/wm/overview/scoped_transform_overview_window.cc

Issue 2401473002: [ash-md] Erases the pre-MD code path for Overview Mode (Closed)
Patch Set: [ash-md] Erases the pre-MD code path for Overview Mode Created 4 years, 2 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/common/wm/overview/scoped_transform_overview_window.cc
diff --git a/ash/common/wm/overview/scoped_transform_overview_window.cc b/ash/common/wm/overview/scoped_transform_overview_window.cc
index 50a980ce4021bf7c8190ef4865db2f8eac90ed62..0ad1c5b434b9e73e805cef5de45ba4f3ac527552 100644
--- a/ash/common/wm/overview/scoped_transform_overview_window.cc
+++ b/ash/common/wm/overview/scoped_transform_overview_window.cc
@@ -7,7 +7,6 @@
#include <algorithm>
#include <vector>
-#include "ash/common/material_design/material_design_controller.h"
#include "ash/common/wm/overview/scoped_overview_animation_settings.h"
#include "ash/common/wm/overview/scoped_overview_animation_settings_factory.h"
#include "ash/common/wm/overview/window_selector_item.h"
@@ -39,10 +38,7 @@ bool immediate_close_for_tests = false;
// The opacity level that windows will be set to when they are restored.
const float kRestoreWindowOpacity = 1.0f;
-// Alpha value used to paint mask layer that masks the original window header.
-const int kOverviewContentMaskAlpha = 255;
-
-// Delay closing window with Material Design to allow it to shrink and fade out.
+// Delay closing window to allow it to shrink and fade out.
const int kCloseWindowDelayInMilliseconds = 150;
WmWindow* GetTransientRoot(WmWindow* window) {
@@ -175,79 +171,6 @@ TransientDescendantIteratorRange GetTransientTreeIterator(WmWindow* window) {
} // namespace
-// Mask layer that clips the window's original header in overview mode.
-// Only used with Material Design.
-class ScopedTransformOverviewWindow::OverviewContentMask
- : public ui::LayerDelegate {
- public:
- explicit OverviewContentMask();
- ~OverviewContentMask() override;
-
- void set_radius(float radius) { radius_ = radius; }
- void set_inset(int inset) { inset_ = inset; }
- ui::Layer* layer() { return &layer_; }
-
- // Overridden from LayerDelegate.
- void OnPaintLayer(const ui::PaintContext& context) override;
- void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override {}
- void OnDeviceScaleFactorChanged(float device_scale_factor) override;
- base::Closure PrepareForLayerBoundsChange() override;
-
- private:
- ui::Layer layer_;
- float radius_;
- int inset_;
-
- DISALLOW_COPY_AND_ASSIGN(OverviewContentMask);
-};
-
-ScopedTransformOverviewWindow::OverviewContentMask::OverviewContentMask()
- : layer_(ui::LAYER_TEXTURED), radius_(0), inset_(0) {
- layer_.set_delegate(this);
-}
-
-ScopedTransformOverviewWindow::OverviewContentMask::~OverviewContentMask() {
- layer_.set_delegate(nullptr);
-}
-
-void ScopedTransformOverviewWindow::OverviewContentMask::OnPaintLayer(
- const ui::PaintContext& context) {
- ui::PaintRecorder recorder(context, layer()->size());
- gfx::Rect bounds(layer()->bounds().size());
- bounds.Inset(0, inset_, 0, 0);
-
- // Tile a window into an area, rounding the bottom corners.
- const SkRect rect = gfx::RectToSkRect(bounds);
- const SkScalar corner_radius_scalar = SkIntToScalar(radius_);
- SkScalar radii[8] = {0,
- 0, // top-left
- 0,
- 0, // top-right
- corner_radius_scalar,
- corner_radius_scalar, // bottom-right
- corner_radius_scalar,
- corner_radius_scalar}; // bottom-left
- SkPath path;
- path.addRoundRect(rect, radii, SkPath::kCW_Direction);
-
- // Set a mask.
- SkPaint paint;
- paint.setAlpha(kOverviewContentMaskAlpha);
- paint.setStyle(SkPaint::kFill_Style);
- paint.setAntiAlias(true);
- recorder.canvas()->DrawPath(path, paint);
-}
-
-void ScopedTransformOverviewWindow::OverviewContentMask::
- OnDeviceScaleFactorChanged(float device_scale_factor) {
- // Redrawing will take care of scale factor change.
-}
-
-base::Closure ScopedTransformOverviewWindow::OverviewContentMask::
- PrepareForLayerBoundsChange() {
- return base::Closure();
-}
-
ScopedTransformOverviewWindow::ScopedTransformOverviewWindow(WmWindow* window)
: window_(window),
determined_original_window_shape_(false),
@@ -270,8 +193,7 @@ void ScopedTransformOverviewWindow::RestoreWindow() {
ScopedAnimationSettings animation_settings_list;
BeginScopedAnimation(OverviewAnimationType::OVERVIEW_ANIMATION_RESTORE_WINDOW,
&animation_settings_list);
- SetTransform(window()->GetRootWindow(), original_transform_,
- false /* use_mask */);
+ SetTransform(window()->GetRootWindow(), original_transform_);
set_overview_transform(original_transform_);
std::unique_ptr<ScopedOverviewAnimationSettings> animation_settings =
@@ -296,9 +218,7 @@ void ScopedTransformOverviewWindow::RestoreWindow() {
}
window_->GetWindowState()->set_ignored_by_shelf(ignored_by_shelf_);
SetOpacity(original_opacity_);
-
- if (ash::MaterialDesignController::IsOverviewMaterial())
- ShowHeaderAndResetShape();
+ ShowHeaderAndResetShape();
}
void ScopedTransformOverviewWindow::BeginScopedAnimation(
@@ -333,20 +253,17 @@ gfx::Rect ScopedTransformOverviewWindow::GetTargetBoundsInScreen() const {
return bounds;
}
-gfx::Rect ScopedTransformOverviewWindow::GetTransformedBounds(
- bool hide_header) const {
+gfx::Rect ScopedTransformOverviewWindow::GetTransformedBounds() const {
if (window_->GetWindowState()->IsMinimized())
return window_->GetMinimizeAnimationTargetBoundsInScreen();
- const bool material = ash::MaterialDesignController::IsOverviewMaterial();
- const int top_inset = hide_header ? GetTopInset() : 0;
+ const int top_inset = GetTopInset();
gfx::Rect bounds;
for (auto* window : GetTransientTreeIterator(window_)) {
// Ignore other window types when computing bounding box of window
// selector target item.
- if (window != window_ &&
- (!material || (window->GetType() != ui::wm::WINDOW_TYPE_NORMAL &&
- window->GetType() != ui::wm::WINDOW_TYPE_PANEL))) {
+ if (window != window_ && (window->GetType() != ui::wm::WINDOW_TYPE_NORMAL &&
+ window->GetType() != ui::wm::WINDOW_TYPE_PANEL)) {
continue;
}
gfx::RectF window_bounds(window->GetTargetBounds());
@@ -355,10 +272,9 @@ gfx::Rect ScopedTransformOverviewWindow::GetTransformedBounds(
window->GetTargetTransform());
new_transform.TransformRect(&window_bounds);
- // With Material Design the preview title is shown above the preview window.
tdanderson 2016/10/06 14:31:59 nit: consider still including the first sentence "
varkha1 2016/10/06 15:07:59 Done.
// Hide the window header for apps or browser windows with no tabs (web
// apps) to avoid showing both the window header and the preview title.
- if (material && top_inset > 0) {
+ if (top_inset > 0) {
gfx::RectF header_bounds(window_bounds);
header_bounds.set_height(top_inset);
new_transform.TransformRect(&header_bounds);
@@ -420,13 +336,8 @@ float ScopedTransformOverviewWindow::GetItemScale(const gfx::Size& source,
const gfx::Size& target,
int top_view_inset,
int title_height) {
- if (ash::MaterialDesignController::IsOverviewMaterial()) {
- return std::min(2.0f, static_cast<float>((target.height() - title_height)) /
- (source.height() - top_view_inset));
- }
- return std::min(
- 1.0f, std::min(static_cast<float>(target.width()) / source.width(),
- static_cast<float>(target.height()) / source.height()));
+ return std::min(2.0f, static_cast<float>((target.height() - title_height)) /
+ (source.height() - top_view_inset));
}
gfx::Rect ScopedTransformOverviewWindow::ShrinkRectToFitPreservingAspectRatio(
@@ -438,14 +349,6 @@ gfx::Rect ScopedTransformOverviewWindow::ShrinkRectToFitPreservingAspectRatio(
DCHECK_LE(top_view_inset, rect.height());
const float scale =
GetItemScale(rect.size(), bounds.size(), top_view_inset, title_height);
- if (!ash::MaterialDesignController::IsOverviewMaterial()) {
- return gfx::Rect(
- bounds.x() + 0.5 * (bounds.width() - scale * rect.width()),
- bounds.y() + title_height - scale * top_view_inset +
- 0.5 * (bounds.height() -
- (title_height + scale * (rect.height() - top_view_inset))),
- rect.width() * scale, rect.height() * scale);
- }
const int horizontal_offset = gfx::ToFlooredInt(
0.5 * (bounds.width() - gfx::ToFlooredInt(scale * rect.width())));
const int width = bounds.width() - 2 * horizontal_offset;
@@ -470,17 +373,10 @@ gfx::Transform ScopedTransformOverviewWindow::GetTransformForRect(
void ScopedTransformOverviewWindow::SetTransform(
WmWindow* root_window,
- const gfx::Transform& transform,
- bool use_mask) {
+ const gfx::Transform& transform) {
DCHECK(overview_started_);
- if (ash::MaterialDesignController::IsOverviewMaterial() &&
- &transform != &original_transform_) {
- if (use_mask && !mask_) {
- mask_.reset(new OverviewContentMask());
- mask_->layer()->SetFillsBoundsOpaquely(false);
- window()->GetLayer()->SetMaskLayer(mask_->layer());
- }
+ if (&transform != &original_transform_) {
tdanderson 2016/10/06 14:31:59 nit: can combine conditions on line 379 and 380
varkha1 2016/10/06 15:07:59 Done.
if (!determined_original_window_shape_) {
determined_original_window_shape_ = true;
SkRegion* window_shape = window()->GetLayer()->alpha_shape();
@@ -509,21 +405,11 @@ void ScopedTransformOverviewWindow::SetOpacity(float opacity) {
}
}
-void ScopedTransformOverviewWindow::HideHeaderAndSetShape(bool use_mask,
- bool use_shape,
- int radius) {
+void ScopedTransformOverviewWindow::HideHeaderAndSetShape(int radius) {
gfx::Rect bounds(GetTargetBoundsInScreen().size());
- const int inset = (use_mask || use_shape) ? GetTopInset() : 0;
- if (mask_) {
- // Mask layer is used both to hide the window header and to use rounded
- // corners. Its layout needs to be updated when setting a transform.
- mask_->layer()->SetBounds(bounds);
- mask_->set_inset(inset);
- mask_->set_radius(radius);
- window()->GetLayer()->SchedulePaint(bounds);
- } else if (inset > 0) {
- // Alpha shape is only used to hide the window header and only when not
- // using a mask layer.
+ const int inset = GetTopInset();
+ if (inset > 0) {
+ // Use alpha shape to hide the window header.
bounds.Inset(0, inset, 0, 0);
std::unique_ptr<SkRegion> region(new SkRegion);
region->setRect(RectToSkIRect(bounds));
@@ -536,9 +422,6 @@ void ScopedTransformOverviewWindow::HideHeaderAndSetShape(bool use_mask,
void ScopedTransformOverviewWindow::ShowHeaderAndResetShape() {
ui::Layer* layer = window()->GetLayer();
- layer->SetMaskLayer(nullptr);
- mask_.reset();
-
if (original_window_shape_) {
layer->SetAlphaShape(
base::MakeUnique<SkRegion>(*original_window_shape_.get()));
@@ -549,8 +432,7 @@ void ScopedTransformOverviewWindow::ShowHeaderAndResetShape() {
}
void ScopedTransformOverviewWindow::Close() {
- if (immediate_close_for_tests ||
- !ash::MaterialDesignController::IsOverviewMaterial()) {
+ if (immediate_close_for_tests) {
CloseWidget();
return;
}

Powered by Google App Engine
This is Rietveld 408576698