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

Unified Diff: ui/aura/window.cc

Issue 1050713002: aura: Remove layerless windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: layerless: rebase Created 5 years, 9 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 | « ui/aura/window.h ('k') | ui/aura/window_layer_type.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/aura/window.cc
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index 3fe502797e0ccf5d30fda8393f2b91c4d6605f63..43d5955d4ab8e1833af88082647cf2851b4def3e 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -40,21 +40,6 @@ namespace aura {
namespace {
-ui::LayerType WindowLayerTypeToUILayerType(WindowLayerType window_layer_type) {
- switch (window_layer_type) {
- case WINDOW_LAYER_NONE:
- break;
- case WINDOW_LAYER_NOT_DRAWN:
- return ui::LAYER_NOT_DRAWN;
- case WINDOW_LAYER_TEXTURED:
- return ui::LAYER_TEXTURED;
- case WINDOW_LAYER_SOLID_COLOR:
- return ui::LAYER_SOLID_COLOR;
- }
- NOTREACHED();
- return ui::LAYER_NOT_DRAWN;
-}
-
// Used when searching for a Window to stack relative to.
template <class T>
T IteratorForDirectionBegin(aura::Window* window);
@@ -217,12 +202,9 @@ Window::Window(WindowDelegate* delegate)
}
Window::~Window() {
- // |layer()| can be NULL during tests, or if this Window is layerless.
- if (layer()) {
- if (layer()->owner() == this)
- layer()->CompleteAllAnimations();
- layer()->SuppressPaint();
- }
+ if (layer()->owner() == this)
+ layer()->CompleteAllAnimations();
+ layer()->SuppressPaint();
// Let the delegate know we're in the processing of destroying.
if (delegate_)
@@ -278,23 +260,18 @@ Window::~Window() {
}
prop_map_.clear();
- // If we have layer it will either be destroyed by |layer_owner_|'s dtor, or
- // by whoever acquired it. We don't have a layer if Init() wasn't invoked or
- // we are layerless.
- if (layer())
- layer()->set_delegate(NULL);
+ // The layer will either be destroyed by |layer_owner_|'s dtor, or by whoever
+ // acquired it.
+ layer()->set_delegate(NULL);
DestroyLayer();
}
-void Window::Init(WindowLayerType window_layer_type) {
- if (window_layer_type != WINDOW_LAYER_NONE) {
- SetLayer(new ui::Layer(WindowLayerTypeToUILayerType(window_layer_type)));
- layer()->SetVisible(false);
- layer()->set_delegate(this);
- UpdateLayerName();
- layer()->SetFillsBoundsOpaquely(!transparent_);
- }
-
+void Window::Init(ui::LayerType layer_type) {
+ SetLayer(new ui::Layer(layer_type));
+ layer()->SetVisible(false);
+ layer()->set_delegate(this);
+ UpdateLayerName();
+ layer()->SetFillsBoundsOpaquely(!transparent_);
Env::GetInstance()->NotifyWindowInitialized(this);
}
@@ -306,7 +283,6 @@ void Window::SetType(ui::wm::WindowType type) {
void Window::SetName(const std::string& name) {
name_ = name;
-
if (layer())
UpdateLayerName();
}
@@ -325,8 +301,7 @@ void Window::SetTransparent(bool transparent) {
}
void Window::SetFillsBoundsCompletely(bool fills_bounds) {
- if (layer())
- layer()->SetFillsBoundsCompletely(fills_bounds);
+ layer()->SetFillsBoundsCompletely(fills_bounds);
}
Window* Window::GetRootWindow() {
@@ -349,13 +324,11 @@ const WindowTreeHost* Window::GetHost() const {
}
void Window::Show() {
- if (layer()) {
- DCHECK_EQ(visible_, layer()->GetTargetVisibility());
- // It is not allowed that a window is visible but the layers alpha is fully
- // transparent since the window would still be considered to be active but
- // could not be seen.
- DCHECK(!(visible_ && layer()->GetTargetOpacity() == 0.0f));
- }
+ DCHECK_EQ(visible_, layer()->GetTargetVisibility());
+ // It is not allowed that a window is visible but the layers alpha is fully
+ // transparent since the window would still be considered to be active but
+ // could not be seen.
+ DCHECK_IMPLIES(visible_, layer()->GetTargetOpacity() > 0.0f);
SetVisible(true);
}
@@ -490,17 +463,7 @@ gfx::Rect Window::GetTargetBounds() const {
}
void Window::SchedulePaintInRect(const gfx::Rect& rect) {
- if (!layer() && parent_) {
- // Notification of paint scheduled happens for the window with a layer.
- gfx::Rect parent_rect(bounds().size());
- parent_rect.Intersect(rect);
- if (!parent_rect.IsEmpty()) {
- parent_rect.Offset(bounds().origin().OffsetFromOrigin());
- parent_->SchedulePaintInRect(parent_rect);
- }
- } else if (layer()) {
- layer()->SchedulePaint(rect);
- }
+ layer()->SchedulePaint(rect);
}
void Window::StackChildAtTop(Window* child) {
@@ -788,8 +751,7 @@ bool Window::HasCapture() {
}
void Window::SuppressPaint() {
- if (layer())
- layer()->SuppressPaint();
+ layer()->SuppressPaint();
}
// {Set,Get,Clear}Property are implemented in window_property.h.
@@ -942,7 +904,7 @@ void Window::SetVisible(bool visible) {
client::GetVisibilityClient(this);
if (visibility_client)
visibility_client->UpdateLayerVisibility(this, visible);
- else if (layer())
+ else
layer()->SetVisible(visible);
visible_ = visible;
SchedulePaint();
@@ -962,21 +924,6 @@ void Window::SchedulePaint() {
void Window::Paint(gfx::Canvas* canvas) {
if (delegate_)
delegate_->OnPaint(canvas);
- PaintLayerlessChildren(canvas);
-}
-
-void Window::PaintLayerlessChildren(gfx::Canvas* canvas) {
- for (size_t i = 0, count = children_.size(); i < count; ++i) {
- Window* child = children_[i];
- if (!child->layer() && child->visible_) {
- gfx::ScopedCanvas scoped_canvas(canvas);
- canvas->ClipRect(child->bounds());
- if (!canvas->IsClipEmpty()) {
- canvas->Translate(child->bounds().OffsetFromOrigin());
- child->Paint(canvas);
- }
- }
- }
}
Window* Window::GetWindowForPoint(const gfx::Point& local_point,
@@ -1344,15 +1291,12 @@ void Window::NotifyAncestorWindowTransformed(Window* source) {
}
void Window::OnWindowBoundsChanged(const gfx::Rect& old_bounds) {
- if (layer()) {
- bounds_ = layer()->bounds();
- if (parent_ && !parent_->layer()) {
- gfx::Vector2d offset;
- aura::Window* ancestor_with_layer =
- parent_->GetAncestorWithLayer(&offset);
- if (ancestor_with_layer)
- bounds_.Offset(-offset);
- }
+ bounds_ = layer()->bounds();
+ if (parent_ && !parent_->layer()) {
+ gfx::Vector2d offset;
+ aura::Window* ancestor_with_layer = parent_->GetAncestorWithLayer(&offset);
+ if (ancestor_with_layer)
+ bounds_.Offset(-offset);
}
if (layout_manager_)
« no previous file with comments | « ui/aura/window.h ('k') | ui/aura/window_layer_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698