From 29afd1e99c21e02d6a151907f5db393c3d3ef462 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Sat, 21 Jul 2018 10:59:12 +0200
Subject: Made the status stack more modular.

---
 src/gtkext/gtkstatusstack.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gtkext/gtkstatusstack.c b/src/gtkext/gtkstatusstack.c
index 1765eaf..e36c406 100644
--- a/src/gtkext/gtkstatusstack.c
+++ b/src/gtkext/gtkstatusstack.c
@@ -57,6 +57,8 @@ struct _GtkStatusStack
 
     GtkStack *main;                         /* Pile d'informations associée*/
 
+    GSourceFunc def_source;                 /* Appel en fin d'activité     */
+
     GObject *asm_ref;                       /* Espace de référencements #1 */
     assembly_info *asm_info;                /* Informations courantes #1   */
 
@@ -227,6 +229,8 @@ static void gtk_status_stack_init(GtkStatusStack *stack)
     gtk_widget_show(GTK_WIDGET(stack->main));
     gtk_box_pack_start(GTK_BOX(stack), GTK_WIDGET(stack->main), TRUE, TRUE, 8);
 
+    stack->def_source = (GSourceFunc)gtk_status_stack_show_current_instruction;
+
     layer = build_assembly_status_stack(stack);
     gtk_stack_add_named(stack->main, layer, "asm_info");
 
@@ -449,7 +453,7 @@ static void on_size_allocate_for_asm_status(GtkWidget *widget, GdkRectangle *all
     gtk_widget_set_size_request(hbox, (allocation->width * 40) / 100, -1);
 
     /**
-     * On intervient après que le containeur soit passer collecter les tailles
+     * On intervient après que le containeur soit passé collecter les tailles
      * de ses enfants lors de son redimensionnement.
      *
      * Donc on force un prise en compte des changements.
@@ -647,6 +651,8 @@ static gboolean gtk_status_stack_show_current_instruction(GtkStatusStack *stack)
     char raw_pos[6 + VMPA_MAX_LEN + 1];     /* Formatage final en direct   */
     char *content;                          /* Contenu dynamique           */
 
+    stack->def_source = (GSourceFunc)gtk_status_stack_show_current_instruction;
+
     gtk_stack_set_visible_child_name(stack->main, "asm_info");
 
     ref = stack->asm_ref;
@@ -1089,7 +1095,7 @@ void gtk_status_stack_remove_activity(GtkStatusStack *stack, activity_id_t id)
     if (info->count == 0)
     {
         info->tag = 0;
-        g_idle_add((GSourceFunc)gtk_status_stack_show_current_instruction, stack);
+        g_idle_add(stack->def_source, stack);
     }
     else
         info->tag = g_idle_add((GSourceFunc)gtk_status_stack_show_current_activity, stack);
-- 
cgit v0.11.2-87-g4458