From 899291f3cbf9b90ccda7af0bee9c3ce3928df0be Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Sun, 17 Feb 2019 20:03:05 +0100
Subject: Reset edge selection when needed.

---
 src/gtkext/gtkgraphdisplay.c | 42 +++++++++++++++++++++++++++++++++++++-----
 1 file changed, 37 insertions(+), 5 deletions(-)

diff --git a/src/gtkext/gtkgraphdisplay.c b/src/gtkext/gtkgraphdisplay.c
index 0865e04..72519a2 100644
--- a/src/gtkext/gtkgraphdisplay.c
+++ b/src/gtkext/gtkgraphdisplay.c
@@ -119,6 +119,9 @@ static gboolean gtk_graph_display_button_release(GtkWidget *, GdkEventButton *,
 /* Assure la suivi des déplacements de souris sur le composant. */
 static gboolean gtk_graph_display_motion_notify(GtkWidget *, GdkEventMotion *, GtkGraphDisplay *);
 
+/* Réagit à une fin de survol du support graphique. */
+static gboolean gtk_graph_display_on_leave_notify(GtkWidget *, GdkEventCrossing *, GtkGraphDisplay *);
+
 /* Prépare l'affichage d'une astuce. */
 static gboolean gtk_graph_display_query_tooltip(GtkWidget *, gint, gint, gboolean, GtkTooltip *, GtkGraphDisplay *);
 
@@ -215,19 +218,21 @@ static void gtk_graph_display_init(GtkGraphDisplay *display)
                      G_CALLBACK(gtk_graph_display_draw), display);
 
     g_signal_connect(G_OBJECT(display->support), "button-press-event",
-                      G_CALLBACK(gtk_graph_display_button_press), display);
+                     G_CALLBACK(gtk_graph_display_button_press), display);
     g_signal_connect(G_OBJECT(display->support), "button-release-event",
-                      G_CALLBACK(gtk_graph_display_button_release), display);
+                     G_CALLBACK(gtk_graph_display_button_release), display);
     g_signal_connect(G_OBJECT(display->support), "motion-notify-event",
-                      G_CALLBACK(gtk_graph_display_motion_notify), display);
+                     G_CALLBACK(gtk_graph_display_motion_notify), display);
+    g_signal_connect(G_OBJECT(display->support), "leave-notify-event",
+                     G_CALLBACK(gtk_graph_display_on_leave_notify), display);
     g_signal_connect(G_OBJECT(display->support), "query-tooltip",
-                      G_CALLBACK(gtk_graph_display_query_tooltip), display);
+                     G_CALLBACK(gtk_graph_display_query_tooltip), display);
 
     g_object_set(G_OBJECT(display->support), "has-tooltip", TRUE, NULL);
 
     gtk_widget_add_events(display->support,
                           GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
-                          | GDK_POINTER_MOTION_MASK);
+                          | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK);
 
     gtk_widget_show(display->support);
 
@@ -660,6 +665,33 @@ static gboolean gtk_graph_display_motion_notify(GtkWidget *widget, GdkEventMotio
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : widget  = composant GTK visé par l'opération.                *
+*                event   = informations liées à l'événement.                  *
+*                display = support maître à consulter.                        *
+*                                                                             *
+*  Description : Réagit à une fin de survol du support graphique.             *
+*                                                                             *
+*  Retour      : TRUE pour arrêter la propagation du signal, FALSE sinon.     *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static gboolean gtk_graph_display_on_leave_notify(GtkWidget *widget, GdkEventCrossing *event, GtkGraphDisplay *display)
+{
+    if (display->hl_edge_index < display->edges_count)
+    {
+        display->hl_edge_index = display->edges_count;
+        gtk_widget_queue_draw(widget);
+    }
+
+    return FALSE;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : widget   = composant GTK visé par l'opération.               *
 *                x        = abscisse de la position du message.               *
 *                y        = ordonnée de la position du message.               *
-- 
cgit v0.11.2-87-g4458