[gtk/wip/carlosg/event-final-cleanup] tests: Port motion-compression to using a motion controller



commit a23d3605671613d865a96f0b9a81a13f160a8ef2
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Jun 28 19:48:00 2018 +0200

    tests: Port motion-compression to using a motion controller

 tests/motion-compression.c | 38 ++++++++++++++++++--------------------
 1 file changed, 18 insertions(+), 20 deletions(-)
---
diff --git a/tests/motion-compression.c b/tests/motion-compression.c
index f869bcfeb4..65e1ca5e8e 100644
--- a/tests/motion-compression.c
+++ b/tests/motion-compression.c
@@ -4,24 +4,18 @@
 GtkAdjustment *adjustment;
 int cursor_x, cursor_y;
 
-static gboolean
-event_cb (GtkWidget *window,
-          GdkEvent  *event)
+static void
+motion_cb (GtkEventControllerMotion *motion,
+           gdouble                   x,
+           gdouble                   y,
+           GtkWidget                *widget)
 {
-  if (gdk_event_get_event_type (event) == GDK_MOTION_NOTIFY &&
-      gdk_event_get_surface (event) == gtk_widget_get_surface (window))
-    {
-      gdouble x, y;
-      float processing_ms = gtk_adjustment_get_value (adjustment);
-      g_usleep (processing_ms * 1000);
-
-      gdk_event_get_coords ((GdkEvent *)event, &x, &y);
-      cursor_x = x;
-      cursor_y = y;
-      gtk_widget_queue_draw (window);
-    }
-
-  return GDK_EVENT_PROPAGATE;
+  float processing_ms = gtk_adjustment_get_value (adjustment);
+  g_usleep (processing_ms * 1000);
+
+  cursor_x = x;
+  cursor_y = y;
+  gtk_widget_queue_draw (widget);
 }
 
 static void
@@ -48,6 +42,7 @@ main (int argc, char **argv)
   GtkWidget *label;
   GtkWidget *scale;
   GtkWidget *da;
+  GtkEventController *controller;
 
   gtk_init ();
 
@@ -69,9 +64,12 @@ main (int argc, char **argv)
   gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (da), on_draw, NULL, NULL);
   gtk_widget_set_vexpand (da, TRUE);
   gtk_box_pack_end (GTK_BOX (vbox), da);
-  
-  g_signal_connect (window, "event",
-                    G_CALLBACK (event_cb), NULL);
+
+  controller = gtk_event_controller_motion_new ();
+  g_signal_connect (controller, "motion",
+                    G_CALLBACK (motion_cb), da);
+  gtk_widget_add_controller (da, controller);
+
   g_signal_connect (window, "destroy",
                     G_CALLBACK (gtk_main_quit), NULL);
 


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