Index: views/widget/widget_gtk.cc |
=================================================================== |
--- views/widget/widget_gtk.cc (revision 25502) |
+++ views/widget/widget_gtk.cc (working copy) |
@@ -287,6 +287,11 @@ |
tooltip_manager_.reset(new TooltipManagerGtk(this)); |
+ // Register for tooltips. |
+ g_object_set(G_OBJECT(window_contents_), "has-tooltip", TRUE, NULL); |
+ g_signal_connect(G_OBJECT(window_contents_), "query_tooltip", |
+ G_CALLBACK(CallQueryTooltip), this); |
+ |
if (type_ == TYPE_CHILD) { |
if (parent) { |
WidgetGtk* parent_widget = GetViewForNative(parent); |
@@ -668,7 +673,7 @@ |
last_mouse_event_was_move_ = false; |
if (!has_capture_ && !is_mouse_down_) |
root_view_->ProcessOnMouseExited(); |
- return true; |
+ return false; |
} |
gboolean WidgetGtk::OnKeyPress(GtkWidget* widget, GdkEventKey* event) { |
@@ -681,6 +686,13 @@ |
return root_view_->ProcessKeyEvent(key_event); |
} |
+gboolean WidgetGtk::OnQueryTooltip(gint x, |
+ gint y, |
+ gboolean keyboard_mode, |
+ GtkTooltip* tooltip) { |
+ return tooltip_manager_->ShowTooltip(x, y, keyboard_mode, tooltip); |
+} |
+ |
gboolean WidgetGtk::OnGrabBrokeEvent(GtkWidget* widget, GdkEvent* event) { |
HandleGrabBroke(); |
return false; // To let other widgets get the event. |
@@ -972,6 +984,16 @@ |
return widget_gtk->OnKeyRelease(widget, event); |
} |
+// static |
+gboolean WidgetGtk::CallQueryTooltip(GtkWidget* widget, |
+ gint x, |
+ gint y, |
+ gboolean keyboard_mode, |
+ GtkTooltip* tooltip, |
+ WidgetGtk* host) { |
+ return host->OnQueryTooltip(x, y, keyboard_mode, tooltip); |
+} |
+ |
gboolean WidgetGtk::CallScroll(GtkWidget* widget, GdkEventScroll* event) { |
WidgetGtk* widget_gtk = GetViewForNative(widget); |
if (!widget_gtk) |