[gtk+/gestures] texthandle: Make a bigger hit area around texthandles



commit 3d98b5063db018987611a75b5f2acba8178d9e81
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri May 16 19:59:31 2014 +0200

    texthandle: Make a bigger hit area around texthandles
    
    The hit area now extends to all sides around the handle, instead
    of just towards where the text is. This makes it easier to grab
    handles once shown.

 gtk/gtktexthandle.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtktexthandle.c b/gtk/gtktexthandle.c
index 0634749..2261987 100644
--- a/gtk/gtktexthandle.c
+++ b/gtk/gtktexthandle.c
@@ -102,11 +102,14 @@ _gtk_text_handle_draw (GtkTextHandle         *handle,
 
   priv = handle->priv;
   context = gtk_widget_get_style_context (priv->parent);
+  _gtk_text_handle_get_size (handle, &width, &height);
 
   cairo_save (cr);
 
   if (pos == GTK_TEXT_HANDLE_POSITION_SELECTION_END)
-    cairo_translate (cr, 0, priv->windows[pos].pointing_to.height);
+    cairo_translate (cr, width, priv->windows[pos].pointing_to.height);
+  else
+    cairo_translate (cr, width, height);
 
   gtk_style_context_save (context);
   gtk_style_context_add_class (context,
@@ -125,7 +128,6 @@ _gtk_text_handle_draw (GtkTextHandle         *handle,
     gtk_style_context_add_class (context,
                                  GTK_STYLE_CLASS_TOP);
 
-  _gtk_text_handle_get_size (handle, &width, &height);
   gtk_render_background (context, cr, 0, 0, width, height);
 
   gtk_style_context_restore (context);
@@ -313,6 +315,13 @@ _gtk_text_handle_update (GtkTextHandle         *handle,
       rect.width = width;
       rect.height = 0;
 
+      /* Make the window 3 times as wide, and 2 times as high (plus
+       * handle_window->pointing_to.height), the handle will be rendered
+       * in the center. Making the rest an invisible input area.
+       */
+      width *= 3;
+      height *= 2;
+
       _handle_update_child_visible (handle, pos);
 
       window = gtk_widget_get_parent (handle_window->widget);


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