diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-12-08 23:27:45 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-12-08 23:27:45 (GMT) |
commit | 70243bca0f6b77c6861a98a014f68f74d7a415fd (patch) | |
tree | cf53aba857a32aa5cbf91d192d817f36d6fb0405 /src/gui/panels/welcome.c | |
parent | da97f9c3b608a238a5862bd67992f65866e1df4f (diff) |
Fixed registered signals for ephemeral panels.
Diffstat (limited to 'src/gui/panels/welcome.c')
-rw-r--r-- | src/gui/panels/welcome.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gui/panels/welcome.c b/src/gui/panels/welcome.c index 9192d66..14e88c5 100644 --- a/src/gui/panels/welcome.c +++ b/src/gui/panels/welcome.c @@ -63,6 +63,8 @@ struct _GWelcomePanel bool uorigin; /* Origine de l'affichage */ + gulong sig_id; /* Connexion par signal */ + }; /* Panneau d'accueil par défaut (classe) */ @@ -269,7 +271,7 @@ static void g_welcome_panel_init(GWelcomePanel *panel) manager = get_project_manager(); - g_signal_connect(manager, "changed", G_CALLBACK(on_recent_list_changed), panel); + panel->sig_id = g_signal_connect(manager, "changed", G_CALLBACK(on_recent_list_changed), panel); g_welcome_panel_reload_project_list(panel, manager); @@ -294,7 +296,16 @@ static void g_welcome_panel_init(GWelcomePanel *panel) static void g_welcome_panel_dispose(GWelcomePanel *panel) { - free(panel->tips); + GtkRecentManager *manager; /* Gestionnaire global */ + + if (panel->sig_id > 0) + { + manager = get_project_manager(); + + g_signal_handler_disconnect(manager, panel->sig_id); + panel->sig_id = 0; + + } G_OBJECT_CLASS(g_welcome_panel_parent_class)->dispose(G_OBJECT(panel)); @@ -317,6 +328,8 @@ static void g_welcome_panel_finalize(GWelcomePanel *panel) { cairo_surface_destroy(panel->background); + free(panel->tips); + G_OBJECT_CLASS(g_welcome_panel_parent_class)->finalize(G_OBJECT(panel)); } |