[gtk+/touch-text-selection: 8/8] text: Set up envvar to test touch features



commit 78a8782b13fec1035eaeff7f6529a9a385d0df8e
Author: Carlos Garnacho <carlos lanedo com>
Date:   Fri Aug 24 15:50:28 2012 +0200

    text: Set up envvar to test touch features
    
    The GTK_TEST_TOUCHSCREEN_FEATURES envvar is now checked in entries
    and textviews to allow testing of text handles with other kinds of
    devices.

 gtk/gtkentry.c    |   14 +++++++++-----
 gtk/gtktextview.c |   14 +++++++++-----
 2 files changed, 18 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index cb6e92c..575697c 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -319,6 +319,7 @@ enum {
 };
 
 static guint signals[LAST_SIGNAL] = { 0 };
+static gboolean test_touchscreen = FALSE;
 
 typedef enum {
   CURSOR_STANDARD,
@@ -1950,6 +1951,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_FEATURES") != NULL;
 
   gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ENTRY_ACCESSIBLE);
 }
@@ -4108,7 +4110,8 @@ gtk_entry_button_press (GtkWidget      *widget,
               gtk_editable_set_position (editable, tmp_pos);
               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)
                 {
                   priv->cursor_handle_dragged = TRUE;
                   _gtk_entry_update_handles (entry, GTK_TEXT_HANDLE_MODE_CURSOR);
@@ -4209,7 +4212,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;
@@ -4391,7 +4395,7 @@ gtk_entry_motion_notify (GtkWidget      *widget,
           /* Don't allow backwards selection on touch devices,
            * so handles don't get inverted.
            */
-          if (input_source == GDK_SOURCE_TOUCHSCREEN)
+          if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN)
             pos = MIN (MAX (pos, gtk_entry_move_backward_word (entry, bound, TRUE)), length);
 
 	  gtk_entry_set_positions (entry, pos, bound);
@@ -4401,13 +4405,13 @@ gtk_entry_motion_notify (GtkWidget      *widget,
           /* Don't allow backwards selection on touch devices,
            * so handles don't get inverted.
            */
-          if (input_source == GDK_SOURCE_TOUCHSCREEN)
+          if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN)
             tmp_pos = MIN (MAX (tmp_pos, priv->selection_bound + 1), length);
           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 f6d75a0..c2df3a3 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -575,6 +575,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))
@@ -1406,6 +1407,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_FEATURES") != NULL;
 }
 
 static void
@@ -4828,7 +4830,8 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
               device = gdk_event_get_source_device ((GdkEvent *) event);
 
               if (priv->editable &&
-                  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;
@@ -4922,7 +4925,8 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
           device = gdk_event_get_source_device ((GdkEvent *) event);
 
           if (priv->editable &&
-              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;
@@ -6476,7 +6480,7 @@ move_mark_to_pointer_and_scroll (GtkTextView    *text_view,
   buffer = get_buffer (text_view);
   get_iter_at_pointer (text_view, device, &newplace, NULL, NULL);
 
-  if (source == GDK_SOURCE_TOUCHSCREEN)
+  if (test_touchscreen || source == GDK_SOURCE_TOUCHSCREEN)
     {
       GtkTextIter min;
 
@@ -6714,7 +6718,7 @@ selection_motion_event_handler (GtkTextView    *text_view,
       start = cursor;
       extend_selection (text_view, data->granularity, &start, &end);
 
-      if (input_source == GDK_SOURCE_TOUCHSCREEN)
+      if (test_touchscreen || input_source == GDK_SOURCE_TOUCHSCREEN)
         {
           /* Don't allow backwards selection on touch devices,
            * so handles don't get inverted.
@@ -6751,7 +6755,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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]