summaryrefslogtreecommitdiff
path: root/gtk/gtktooltip.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-11-26 20:28:53 +0100
committerMatthias Clasen <mclasen@redhat.com>2012-03-01 16:25:22 -0500
commit51189ae260699f63862a3136a552ad369d4e336a (patch)
tree12e6dfb52fefc3b8e274d44fcb80f4b68dcb7234 /gtk/gtktooltip.c
parent1a26b9a90a78e8c6d0cd864ec4659e0fddea563f (diff)
downloadgtk+-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.c21
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. */