From c613f485dec9f480ba1acde233272b75cb7c11c9 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Sat, 16 Nov 2019 11:15:58 +0100 Subject: Warned about unsaved projects only if needed. --- src/analysis/project.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/analysis/project.h | 6 ++++++ src/gui/editor.c | 2 +- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/analysis/project.c b/src/analysis/project.c index 8285e7a..e0624f2 100644 --- a/src/analysis/project.c +++ b/src/analysis/project.c @@ -715,6 +715,58 @@ void g_study_project_detach_content(GStudyProject *project, GLoadedContent *cont /****************************************************************************** * * * Paramètres : project = projet dont le contenu est à afficher. * +* * +* Description : Dénombre les contenus associés à un projet. * +* * +* Retour : Nombre de contenus pris en compte. * +* * +* Remarques : - * +* * +******************************************************************************/ + +size_t _g_study_project_count_contents(GStudyProject *project) +{ + size_t result; /* Quantité à retourner */ + + assert(!g_mutex_trylock(&project->mutex)); + + result = project->count; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : project = projet dont le contenu est à afficher. * +* * +* Description : Dénombre les contenus associés à un projet. * +* * +* Retour : Nombre de contenus pris en compte. * +* * +* Remarques : - * +* * +******************************************************************************/ + +size_t g_study_project_count_contents(GStudyProject *project) +{ + size_t result; /* Quantité à retourner */ + + g_study_project_lock_contents(project); + + result = _g_study_project_count_contents(project); + + g_study_project_unlock_contents(project); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : project = projet dont le contenu est à afficher. * * count = nombre de contenus pris en compte. [OUT] * * * * Description : Fournit l'ensemble des contenus associés à un projet. * diff --git a/src/analysis/project.h b/src/analysis/project.h index 7ec6239..e627041 100644 --- a/src/analysis/project.h +++ b/src/analysis/project.h @@ -98,6 +98,12 @@ void g_study_project_attach_content(GStudyProject *, GLoadedContent *); /* Détache un contenu donné d'un projet donné. */ void g_study_project_detach_content(GStudyProject *, GLoadedContent *); +/* Dénombre les contenus associés à un projet. */ +size_t _g_study_project_count_contents(GStudyProject *); + +/* Dénombre les contenus associés à un projet. */ +size_t g_study_project_count_contents(GStudyProject *); + /* Fournit l'ensemble des contenus associés à un projet. */ GLoadedContent **_g_study_project_get_contents(GStudyProject *, size_t *); diff --git a/src/gui/editor.c b/src/gui/editor.c index 8280e7c..42c1f77 100644 --- a/src/gui/editor.c +++ b/src/gui/editor.c @@ -344,7 +344,7 @@ static gboolean on_delete_editor(GtkWidget *widget, GdkEvent *event, gpointer da project = get_current_project(); - if (g_study_project_get_filename(project) == NULL) + if (g_study_project_get_filename(project) == NULL && g_study_project_count_contents(project) > 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(widget), GTK_DIALOG_DESTROY_WITH_PARENT, -- cgit v0.11.2-87-g4458