summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-09-02 23:11:15 -0400
committerMatthias Clasen <mclasen@redhat.com>2012-09-03 00:19:46 -0400
commit8c3a668d52251f746c18d21118f0de36476557cc (patch)
tree94ac093e23436e1846f92b048ea04de02bc60c4f /gtk
parent5bda3a001d1a88c269447c91694ce6b0b0c89cb6 (diff)
downloadgtk+-8c3a668d52251f746c18d21118f0de36476557cc.tar.gz
Add a way to test touch features
The GTK_TEST_TOUCHSCREEN envvar is now checked in entries and textviews to allow testing of text handles with other kinds of devices.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkentry.c10
-rw-r--r--gtk/gtktextview.c10
2 files changed, 14 insertions, 6 deletions
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 40535d9f40..8ebb977f39 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -318,6 +318,7 @@ enum {
};
static guint signals[LAST_SIGNAL] = { 0 };
+static gboolean test_touchscreen = FALSE;
typedef enum {
CURSOR_STANDARD,
@@ -1938,6 +1939,7 @@ gtk_entry_class_init (GtkEntryClass *class)
G_PARAM_DEPRECATED));
g_type_class_add_private (gobject_class, sizeof (GtkEntryPrivate));
+ test_touchscreen = g_getenv ("GTK_TEST_TOUCHSCREEN") != NULL;
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ENTRY_ACCESSIBLE);
}
@@ -4044,7 +4046,8 @@ gtk_entry_button_press (GtkWidget *widget,
GdkDevice *source;
source = gdk_event_get_source_device ((GdkEvent *) event);
- is_touchscreen = gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN;
+ is_touchscreen = test_touchscreen ||
+ gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN;
priv->select_words = FALSE;
priv->select_lines = FALSE;
@@ -4229,7 +4232,8 @@ gtk_entry_button_release (GtkWidget *widget,
source = gdk_event_get_source_device ((GdkEvent *) event);
- if (gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN)
+ if (test_touchscreen ||
+ gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN)
gtk_entry_update_handles (entry, GTK_TEXT_HANDLE_MODE_CURSOR);
priv->in_drag = 0;
@@ -4411,7 +4415,7 @@ gtk_entry_motion_notify (GtkWidget *widget,
gtk_entry_set_positions (entry, tmp_pos, -1);
/* Update touch handles' position */
- if (input_source == GDK_SOURCE_TOUCHSCREEN)
+ if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN)
gtk_entry_update_handles (entry,
(priv->current_pos == priv->selection_bound) ?
GTK_TEXT_HANDLE_MODE_CURSOR :
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 9fd3c7d9a7..38af09f04c 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -574,6 +574,7 @@ static gint text_window_get_height (GtkTextWindow *win);
static guint signals[LAST_SIGNAL] = { 0 };
+static gboolean test_touchscreen = FALSE;
G_DEFINE_TYPE_WITH_CODE (GtkTextView, gtk_text_view, GTK_TYPE_CONTAINER,
G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
@@ -1405,6 +1406,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
g_type_class_add_private (gobject_class, sizeof (GtkTextViewPrivate));
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_VIEW_ACCESSIBLE);
+ test_touchscreen = g_getenv ("GTK_TEST_TOUCHSCREEN") != NULL;
}
static void
@@ -4808,7 +4810,8 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
#endif
device = gdk_event_get_source_device ((GdkEvent *) event);
- is_touchscreen = gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN;
+ is_touchscreen = test_touchscreen ||
+ gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN;
if (event->type == GDK_BUTTON_PRESS)
{
@@ -4952,7 +4955,8 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
device = gdk_event_get_source_device ((GdkEvent *) event);
if (gtk_widget_is_sensitive (widget) &&
- gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN)
+ (test_touchscreen ||
+ gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN))
mode = GTK_TEXT_HANDLE_MODE_CURSOR;
else
mode = GTK_TEXT_HANDLE_MODE_NONE;
@@ -6759,7 +6763,7 @@ selection_motion_event_handler (GtkTextView *text_view,
text_view->priv->scroll_timeout =
gdk_threads_add_timeout (50, selection_scan_timeout, text_view);
- if (input_source == GDK_SOURCE_TOUCHSCREEN)
+ if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN)
gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_SELECTION);
return TRUE;