| Index: ui/views/widget/desktop_aura/scoped_tooltip_client.cc
|
| diff --git a/ui/views/widget/desktop_aura/scoped_tooltip_client.cc b/ui/views/widget/desktop_aura/scoped_tooltip_client.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5b2736af532d0a800f1bdbc7a6f45c99a635191b
|
| --- /dev/null
|
| +++ b/ui/views/widget/desktop_aura/scoped_tooltip_client.cc
|
| @@ -0,0 +1,37 @@
|
| +// Copyright (c) 2013 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/views/widget/desktop_aura/scoped_tooltip_client.h"
|
| +
|
| +#include "ui/aura/root_window.h"
|
| +#include "ui/views/corewm/tooltip_controller.h"
|
| +
|
| +namespace views {
|
| +
|
| +// static
|
| +corewm::TooltipController* ScopedTooltipClient::tooltip_controller_ = NULL;
|
| +
|
| +// static
|
| +int ScopedTooltipClient::scoped_tooltip_client_count_ = 0;
|
| +
|
| +ScopedTooltipClient::ScopedTooltipClient(aura::RootWindow* root_window)
|
| + : root_window_(root_window) {
|
| + if (scoped_tooltip_client_count_++ == 0) {
|
| + tooltip_controller_ =
|
| + new corewm::TooltipController(gfx::SCREEN_TYPE_NATIVE);
|
| + }
|
| + aura::client::SetTooltipClient(root_window_, tooltip_controller_);
|
| + root_window_->AddPreTargetHandler(tooltip_controller_);
|
| +}
|
| +
|
| +ScopedTooltipClient::~ScopedTooltipClient() {
|
| + root_window_->RemovePreTargetHandler(tooltip_controller_);
|
| + aura::client::SetTooltipClient(root_window_, NULL);
|
| + if (--scoped_tooltip_client_count_ == 0) {
|
| + delete tooltip_controller_;
|
| + tooltip_controller_ = NULL;
|
| + }
|
| +}
|
| +
|
| +} // namespace views
|
|
|