Index: views/widget/tooltip_manager_views.h |
diff --git a/views/widget/tooltip_manager_views.h b/views/widget/tooltip_manager_views.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4cf2657df76d1668092cda4f5f03697374999215 |
--- /dev/null |
+++ b/views/widget/tooltip_manager_views.h |
@@ -0,0 +1,80 @@ |
+// 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. |
+ |
+#ifndef VIEWS_WIDGET_TOOLTIP_MANAGER_VIEWS_H_ |
+#define VIEWS_WIDGET_TOOLTIP_MANAGER_VIEWS_H_ |
+#pragma once |
+ |
+#include "base/message_loop.h" |
+#include "base/timer.h" |
+#include "views/controls/label.h" |
+#include "views/widget/native_widget.h" |
+#include "views/widget/tooltip_manager.h" |
+#include "views/widget/widget_delegate.h" |
+#include "views/view.h" |
+ |
+#if defined(USE_X11) |
+typedef union _XEvent XEvent; |
+#endif |
+ |
+namespace views { |
+ |
+class MouseEvent; |
+class Widget; |
+ |
+// TooltipManager implementation for Views. |
+class TooltipManagerViews : public TooltipManager { |
+ public: |
+ explicit TooltipManagerViews(views::View* root_view); |
+ virtual ~TooltipManagerViews(); |
+ |
+ // Updates the state of the tooltip based on the mouse event. The mouse event |
+ // is the same event that goes to a Widget (i.e. it is in the Widget's |
+ // coordinate system). |
+ void UpdateForMouseEvent(const MouseEvent& event); |
+ |
+ // TooltipManager. |
+ virtual void UpdateTooltip() OVERRIDE; |
+ virtual void TooltipTextChanged(View* view) OVERRIDE; |
+ virtual void ShowKeyboardTooltip(View* view) OVERRIDE; |
+ virtual void HideKeyboardTooltip() OVERRIDE; |
+ |
+ private: |
+ void TooltipTimerFired(); |
+ View* GetViewForTooltip(int x, int y, bool for_keyboard); |
+ |
+ // Updates the tooltip if required (if there is any change in the tooltip |
+ // text or the view. |
+ void UpdateIfRequired(int x, int y, bool for_keyboard); |
+ |
+ // Updates the tooltip. Gets the tooltip text from tooltip_view_ and displays |
+ // it at the current mouse position. |
+ void Update(); |
+ |
+ // Adjusts the bounds given by the arguments to fit inside the parent view |
+ // and applies the adjusted bounds to the tooltip_label_. |
+ void SetTooltipBounds(gfx::Point mouse_pos, int tooltip_width, |
+ int tooltip_height); |
+ |
+ // Creates a widget of type TYPE_TOOLTIP |
+ Widget* CreateTooltip(); |
+ |
+ // Invoked when the mose moves. |
+ void OnMouseMoved(int x, int y); |
+ |
+ scoped_ptr<Widget> tooltip_widget_; |
+ views::View* root_view_; |
+ View* tooltip_view_; |
+ string16 tooltip_text_; |
+ Label tooltip_label_; |
+ |
+ gfx::Point curr_mouse_pos_; |
+ base::RepeatingTimer<TooltipManagerViews> tooltip_timer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TooltipManagerViews); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // VIEWS_WIDGET_TOOLTIP_MANAGER_VIEWS_H_ |