[gnome-robots/arnaudb/modernize-code: 4/5] Use GtkEventControllerMotion.



commit 2740887610635572c78a57a32bedb35a62e5e042
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Sat May 23 21:53:16 2020 +0200

    Use GtkEventControllerMotion.

 src/game.c         | 13 ++++++++-----
 src/game.h         |  5 ++++-
 src/gnome-robots.c |  5 ++++-
 3 files changed, 16 insertions(+), 7 deletions(-)
---
diff --git a/src/game.c b/src/game.c
index 61a3254..417c47b 100644
--- a/src/game.c
+++ b/src/game.c
@@ -1342,16 +1342,19 @@ mouse_cb (GtkGestureMultiPress *gesture,
   return;
 }
 
-gboolean
-move_cb (GtkWidget * widget, GdkEventMotion * e, gpointer data)
+void
+move_cb (GtkEventControllerMotion *controller,
+         gdouble                   x,
+         gdouble                   y,
+         gpointer                  user_data)
 {
   int dx, dy;
 
-  get_dir (e->x, e->y, &dx, &dy);
+  get_dir ((int)x, (int)y, &dx, &dy);
 
-  set_cursor_by_direction (gtk_widget_get_window (widget), dx, dy);
+  set_cursor_by_direction (gtk_widget_get_window (game_area), dx, dy);
 
-  return TRUE;
+  return;
 }
 
 /**********************************************************************/
diff --git a/src/game.h b/src/game.h
index 8f88184..3dec455 100644
--- a/src/game.h
+++ b/src/game.h
@@ -33,7 +33,10 @@ void mouse_cb (GtkGestureMultiPress *gesture,
                gdouble               x,
                gdouble               y,
                gpointer              user_data);
-gboolean move_cb (GtkWidget * widget, GdkEventMotion * e, gpointer data);
+void move_cb (GtkEventControllerMotion *controller,
+              gdouble                   x,
+              gdouble                   y,
+              gpointer                  user_data);
 /**********************************************************************/
 
 
diff --git a/src/gnome-robots.c b/src/gnome-robots.c
index 90e24d4..d92f1da 100644
--- a/src/gnome-robots.c
+++ b/src/gnome-robots.c
@@ -353,6 +353,7 @@ activate (GtkApplication *app, gpointer user_data)
   GtkStyleContext *style_context;
   GamesScoresDirectoryImporter *importer;
   GtkGesture *click_controller;
+  GtkEventController *motion_controller;
 
   if (window != NULL)
   {
@@ -386,7 +387,6 @@ activate (GtkApplication *app, gpointer user_data)
 
   game_area = gtk_drawing_area_new ();
   gtk_widget_add_events (game_area, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | 
GDK_POINTER_MOTION_MASK);
-  g_signal_connect (G_OBJECT (game_area), "motion-notify-event",    G_CALLBACK (move_cb),   NULL);
   g_signal_connect (G_OBJECT (game_area), "configure-event",        G_CALLBACK (resize_cb), NULL);
   g_signal_connect (G_OBJECT (game_area), "draw",                   G_CALLBACK (draw_cb),   NULL);
   g_signal_connect (G_OBJECT (game_area), "destroy",                G_CALLBACK (gtk_widget_destroyed), 
&game_area);
@@ -394,6 +394,9 @@ activate (GtkApplication *app, gpointer user_data)
   click_controller = gtk_gesture_multi_press_new (game_area);
   g_signal_connect (G_OBJECT (click_controller), "pressed", G_CALLBACK (mouse_cb), NULL);
 
+  motion_controller = gtk_event_controller_motion_new (game_area);
+  g_signal_connect (G_OBJECT (motion_controller), "motion", G_CALLBACK (move_cb), NULL);
+
   gridframe = GTK_WIDGET (games_grid_frame_new (GAME_WIDTH, GAME_HEIGHT));
   gtk_container_add (GTK_CONTAINER (gridframe), game_area);
 


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