summaryrefslogtreecommitdiffstats
path: root/views/widget/widget_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'views/widget/widget_gtk.cc')
-rw-r--r--views/widget/widget_gtk.cc24
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)