[gtk+/multitouch: 24/27] gtk, pah: Use the touch area if available for the notification size.



commit 6f50a251e47a6af7333b862f4e0d346b01854f46
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Nov 6 12:13:14 2011 +0100

    gtk,pah: Use the touch area if available for the notification size.
    
    On multitouch devices that are capable of returning the touch area,
    use it to display the press-and-hold indicator at a reasonable size.

 gtk/gtkwidget.c |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index e9cfcac..94bec80 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -7240,11 +7240,26 @@ _gtk_widget_press_and_hold_check_start (GtkWidget      *widget,
       source_device = gdk_event_get_source_device ((GdkEvent *) event);
       source = gdk_device_get_source (source_device);
 
-      if (source == GDK_SOURCE_TOUCH)
+      if (source == GDK_SOURCE_TOUCH ||
+          source == GDK_SOURCE_MULTITOUCH)
         {
-          /* Have an indicator with 2.5cm of diameter */
-          data->size = (25 * gdk_screen_get_width (screen)) /
-            gdk_screen_get_width_mm (screen);
+          cairo_region_t *region;
+
+          region = gdk_event_get_touch_area ((GdkEvent *) event);
+
+          if (region)
+            {
+              cairo_rectangle_int_t rect;
+
+              cairo_region_get_extents (region, &rect);
+              data->size = MAX (rect.width, rect.height);
+            }
+          else
+            {
+              /* Have an indicator with 2.5cm of diameter */
+              data->size = (25 * gdk_screen_get_width (screen)) /
+                gdk_screen_get_width_mm (screen);
+            }
         }
       else
         data->size = gdk_display_get_default_cursor_size (gtk_widget_get_display (widget));



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