diff options
Diffstat (limited to 'ui/wm/public/scoped_tooltip_disabler.cc')
-rw-r--r-- | ui/wm/public/scoped_tooltip_disabler.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ui/wm/public/scoped_tooltip_disabler.cc b/ui/wm/public/scoped_tooltip_disabler.cc new file mode 100644 index 0000000..45a39ca --- /dev/null +++ b/ui/wm/public/scoped_tooltip_disabler.cc @@ -0,0 +1,43 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/wm/public/scoped_tooltip_disabler.h" + +#include "ui/aura/window.h" +#include "ui/wm/public/tooltip_client.h" + +namespace aura { +namespace client { + +ScopedTooltipDisabler::ScopedTooltipDisabler(aura::Window* window) + : root_(window ? window->GetRootWindow() : NULL) { + if (root_) { + root_->AddObserver(this); + TooltipClient* client = GetTooltipClient(root_); + if (client) + client->SetTooltipsEnabled(false); + } +} + +ScopedTooltipDisabler::~ScopedTooltipDisabler() { + EnableTooltips(); +} + +void ScopedTooltipDisabler::EnableTooltips() { + if (!root_) + return; + TooltipClient* client = GetTooltipClient(root_); + if (client) + client->SetTooltipsEnabled(true); + root_->RemoveObserver(this); + root_ = NULL; +} + +void ScopedTooltipDisabler::OnWindowDestroying(aura::Window* window) { + EnableTooltips(); +} + + +} // namespace client +} // namespace aura |