| Index: ui/views/widget/tooltip_manager_aura.cc
|
| diff --git a/ui/views/widget/tooltip_manager_aura.cc b/ui/views/widget/tooltip_manager_aura.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0847ed3fa6b2f1feab811ae0cec2a09b3ba81288
|
| --- /dev/null
|
| +++ b/ui/views/widget/tooltip_manager_aura.cc
|
| @@ -0,0 +1,107 @@
|
| +// Copyright (c) 2011 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 "base/logging.h"
|
| +#include "ui/aura/client/aura_constants.h"
|
| +#include "ui/aura/client/tooltip_client.h"
|
| +#include "ui/aura/desktop.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/gfx/font.h"
|
| +#include "ui/gfx/rect.h"
|
| +#include "ui/gfx/screen.h"
|
| +#include "ui/views/widget/native_widget_aura.h"
|
| +#include "ui/views/widget/tooltip_manager_aura.h"
|
| +
|
| +namespace views {
|
| +
|
| +// static
|
| +int TooltipManager::GetTooltipHeight() {
|
| + // Not used for linux and chromeos.
|
| + NOTIMPLEMENTED();
|
| + return 0;
|
| +}
|
| +
|
| +// static
|
| +gfx::Font TooltipManager::GetDefaultFont() {
|
| + return aura::TooltipClient::GetDefaultFont();
|
| +}
|
| +
|
| +// static
|
| +int TooltipManager::GetMaxWidth(int x, int y) {
|
| + return aura::TooltipClient::GetMaxWidth(x, y);
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// TooltipManagerAura public:
|
| +
|
| +TooltipManagerAura::TooltipManagerAura(NativeWidgetAura* native_widget_aura)
|
| + : native_widget_aura_(native_widget_aura) {
|
| + native_widget_aura_->GetNativeView()->SetProperty(aura::kTooltipTextKey,
|
| + &tooltip_text_);
|
| +}
|
| +
|
| +TooltipManagerAura::~TooltipManagerAura() {
|
| + native_widget_aura_->GetNativeView()->SetProperty(aura::kTooltipTextKey,
|
| + NULL);
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// TooltipManagerAura, TooltipManager implementation:
|
| +
|
| +void TooltipManagerAura::UpdateTooltip() {
|
| + void* property = aura::Desktop::GetInstance()->GetProperty(
|
| + aura::kDesktopTooltipClientKey);
|
| + if (property) {
|
| + gfx::Point view_point = aura::Desktop::GetInstance()->last_mouse_location();
|
| + aura::Window::ConvertPointToWindow(aura::Desktop::GetInstance(),
|
| + native_widget_aura_->GetNativeView(), &view_point);
|
| + View* view = GetViewUnderPoint(view_point);
|
| + if (view) {
|
| + View::ConvertPointFromWidget(view, &view_point);
|
| + if (!view->GetTooltipText(view_point, &tooltip_text_))
|
| + tooltip_text_.clear();
|
| + } else {
|
| + tooltip_text_.clear();
|
| + }
|
| + aura::TooltipClient* tc = static_cast<aura::TooltipClient*>(property);
|
| + tc->UpdateTooltip(native_widget_aura_->GetNativeView());
|
| + }
|
| +}
|
| +
|
| +void TooltipManagerAura::TooltipTextChanged(View* view) {
|
| + void* property = aura::Desktop::GetInstance()->GetProperty(
|
| + aura::kDesktopTooltipClientKey);
|
| + if (property) {
|
| + gfx::Point view_point = aura::Desktop::GetInstance()->last_mouse_location();
|
| + aura::Window::ConvertPointToWindow(aura::Desktop::GetInstance(),
|
| + native_widget_aura_->GetNativeView(), &view_point);
|
| + View* target = GetViewUnderPoint(view_point);
|
| + if (target != view)
|
| + return;
|
| + if (target) {
|
| + View::ConvertPointFromWidget(view, &view_point);
|
| + if (!view->GetTooltipText(view_point, &tooltip_text_))
|
| + tooltip_text_.clear();
|
| + } else {
|
| + tooltip_text_.clear();
|
| + }
|
| + aura::TooltipClient* tc = static_cast<aura::TooltipClient*>(property);
|
| + tc->UpdateTooltip(native_widget_aura_->GetNativeView());
|
| + }
|
| +}
|
| +
|
| +void TooltipManagerAura::ShowKeyboardTooltip(View* view) {
|
| + NOTREACHED();
|
| +}
|
| +
|
| +void TooltipManagerAura::HideKeyboardTooltip() {
|
| + NOTREACHED();
|
| +}
|
| +
|
| +View* TooltipManagerAura::GetViewUnderPoint(const gfx::Point& point) {
|
| + View* root_view = native_widget_aura_->GetWidget()->GetRootView();
|
| + return root_view->GetEventHandlerForPoint(point);
|
| +}
|
| +
|
| +} // namespace views.
|
|
|