Skip to content

Commit

Permalink
Prevent already-open project from being re-opened from Project menu
Browse files Browse the repository at this point in the history
  • Loading branch information
xiota committed Oct 24, 2021
1 parent 99ab589 commit 8d2e8ad
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
13 changes: 10 additions & 3 deletions src/project.c
Expand Up @@ -292,13 +292,15 @@ static void run_open_dialog(GtkDialog *dialog)
while (gtk_dialog_run(dialog) == GTK_RESPONSE_ACCEPT)
{
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
gchar *utf8_filename = utils_get_utf8_from_locale(filename);

if (app->project && !project_close(FALSE)) {}
/* Don't re-open projects that are already open. */
if (app->project && (g_strcmp0(app->project->file_name, utf8_filename) == 0)) {}
/* Don't open new project if old project cannot be closed */
else if (app->project && !project_close(FALSE)) {}
/* try to load the config */
else if (! project_load_file_with_session(filename))
{
gchar *utf8_filename = utils_get_utf8_from_locale(filename);

SHOW_ERR1(_("Project file \"%s\" could not be loaded."), utf8_filename);
gtk_widget_grab_focus(GTK_WIDGET(dialog));
g_free(utf8_filename);
Expand All @@ -319,8 +321,13 @@ void project_open(void)
if (interface_prefs.use_native_windows_dialogs)
{
gchar *file = win32_show_project_open_dialog(main_widgets.window, _("Open Project"), dir, FALSE, TRUE);
gchar *utf8_filename = utils_get_utf8_from_locale(file);

if (file != NULL)
{
/* Don't re-open projects that are already open. */
if (app->project && (g_strcmp0(app->project->file_name, utf8_filename) == 0)) {}
/* Don't open new project if old project cannot be closed */
if (app->project && !project_close(FALSE)) {}
/* try to load the config */
else if (! project_load_file_with_session(file))
Expand Down
7 changes: 4 additions & 3 deletions src/socket.c
Expand Up @@ -631,9 +631,10 @@ static void handle_input_filename(const gchar *buf)
{
if (g_str_has_suffix(locale_filename, ".geany"))
{
/* Don't open project when it is already opened */
if (!app->project || !(g_strcmp0(app->project->file_name, locale_filename) == 0
|| g_strcmp0(app->project->file_name, utf8_filename) == 0))
/* Don't re-open projects that are already open.
* The filename has to be checked here to prevent
* warnings for files that won't even be opened. */
if (!app->project || !(g_strcmp0(app->project->file_name, utf8_filename) == 0))
{
if (project_ask_close())
main_load_project_from_command_line(locale_filename, TRUE);
Expand Down

0 comments on commit 8d2e8ad

Please sign in to comment.