diff options
Diffstat (limited to 'views/widget/widget_gtk.cc')
-rw-r--r-- | views/widget/widget_gtk.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc index 4f24498..89561cd 100644 --- a/views/widget/widget_gtk.cc +++ b/views/widget/widget_gtk.cc @@ -287,6 +287,11 @@ void WidgetGtk::Init(GtkWidget* parent, 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); @@ -678,7 +683,7 @@ gboolean WidgetGtk::OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event) { 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) { @@ -691,6 +696,13 @@ gboolean WidgetGtk::OnKeyRelease(GtkWidget* widget, GdkEventKey* event) { 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. @@ -982,6 +994,16 @@ gboolean WidgetGtk::CallKeyRelease(GtkWidget* widget, GdkEventKey* event) { 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) |