diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-11-26 20:28:53 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-03-01 16:25:22 -0500 |
commit | 51189ae260699f63862a3136a552ad369d4e336a (patch) | |
tree | 12e6dfb52fefc3b8e274d44fcb80f4b68dcb7234 /gtk/gtktooltip.c | |
parent | 1a26b9a90a78e8c6d0cd864ec4659e0fddea563f (diff) | |
download | gtk+-51189ae260699f63862a3136a552ad369d4e336a.tar.gz |
tooltips: Use the source device instead of gtk-touchscreen-mode
This makes tooltips behavior dynamic based on the interacting device.
Diffstat (limited to 'gtk/gtktooltip.c')
-rw-r--r-- | gtk/gtktooltip.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c index 19fb0c5171..84c80e6171 100644 --- a/gtk/gtktooltip.c +++ b/gtk/gtktooltip.c @@ -1535,22 +1535,33 @@ _gtk_tooltip_hide (GtkWidget *widget) } static gboolean -tooltips_enabled (GdkWindow *window) +tooltips_enabled (GdkEvent *event) { + GdkDevice *source_device; + GdkInputSource source; + GdkWindow *window; gboolean enabled; - gboolean touchscreen; GdkScreen *screen; GtkSettings *settings; + window = event->any.window; + source_device = gdk_event_get_source_device (event); + + if (!source_device) + return FALSE; + + source = gdk_device_get_source (source_device); screen = gdk_window_get_screen (window); settings = gtk_settings_get_for_screen (screen); g_object_get (settings, - "gtk-touchscreen-mode", &touchscreen, "gtk-enable-tooltips", &enabled, NULL); - return (!touchscreen && enabled); + if (enabled && source != GDK_SOURCE_TOUCHSCREEN) + return TRUE; + + return FALSE; } void @@ -1562,7 +1573,7 @@ _gtk_tooltip_handle_event (GdkEvent *event) GdkDisplay *display; GtkTooltip *current_tooltip; - if (!tooltips_enabled (event->any.window)) + if (!tooltips_enabled (event)) return; /* Returns coordinates relative to has_tooltip_widget's allocation. */ |