summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authormazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-17 23:08:30 +0000
committermazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-17 23:08:30 +0000
commitced29a71e4b701010a4de6a0de67f79842858853 (patch)
treefd628af4be7619a89f01663c51eac2ca91a13bff /ui
parentd318a889e90bc5083b7edd4dd30d8797111767f5 (diff)
downloadchromium_src-ced29a71e4b701010a4de6a0de67f79842858853.zip
chromium_src-ced29a71e4b701010a4de6a0de67f79842858853.tar.gz
chromium_src-ced29a71e4b701010a4de6a0de67f79842858853.tar.bz2
Use Layer's target visibility instead of the current visibility in Window::SetVisible.
Widget::Show does not take effect if it's called while the hide animation is running. This CL modifies Window::SetVisible to check Layer's target visibility instead of Layer's current visibility so that Window::Show takes effect even when Window::Hide followed immediately by Window::Show. Also modified the widnow animation code so that Layer's target visibility is correctly set. BUG=127863 TEST=Tried repro steps (see BUG) and didn't crash. Passed aura_unittests and aura_shell_unittests. Review URL: https://chromiumcodereview.appspot.com/10387146 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137764 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/aura/window.cc17
1 files changed, 7 insertions, 10 deletions
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index 4128d90..1bdd6c7 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -596,17 +596,15 @@ void Window::SetBoundsInternal(const gfx::Rect& new_bounds) {
}
void Window::SetVisible(bool visible) {
- if (visible == layer_->visible())
+ if (visible == layer_->GetTargetVisibility())
return; // No change.
- if (visible != layer_->visible()) {
- RootWindow* root_window = GetRootWindow();
- if (client::GetVisibilityClient(root_window)) {
- client::GetVisibilityClient(root_window)->UpdateLayerVisibility(
- this, visible);
- } else {
- layer_->SetVisible(visible);
- }
+ RootWindow* root_window = GetRootWindow();
+ if (client::GetVisibilityClient(root_window)) {
+ client::GetVisibilityClient(root_window)->UpdateLayerVisibility(
+ this, visible);
+ } else {
+ layer_->SetVisible(visible);
}
visible_ = visible;
SchedulePaint();
@@ -618,7 +616,6 @@ void Window::SetVisible(bool visible) {
FOR_EACH_OBSERVER(WindowObserver, observers_,
OnWindowVisibilityChanged(this, visible));
- RootWindow* root_window = GetRootWindow();
if (root_window)
root_window->OnWindowVisibilityChanged(this, visible);
}