summaryrefslogtreecommitdiff
path: root/src/gui/panels/welcome.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/welcome.c')
-rw-r--r--src/gui/panels/welcome.c17
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));
}