From 4a4f380a11a88121cc0e0f9a3046b87555d4b370 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 23 Oct 2021 21:35:00 -0500 Subject: [PATCH] [nostalgia/studio] Fix file dialog to close properly --- src/nostalgia/studio/lib/filedialog_gtk.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/nostalgia/studio/lib/filedialog_gtk.cpp b/src/nostalgia/studio/lib/filedialog_gtk.cpp index 49961403..3c4e01c7 100644 --- a/src/nostalgia/studio/lib/filedialog_gtk.cpp +++ b/src/nostalgia/studio/lib/filedialog_gtk.cpp @@ -12,18 +12,16 @@ #include #include -#include #include -#include namespace nostalgia::studio { ox::Result chooseDirectory() noexcept { ox::Result out; - const auto action = GTK_FILE_CHOOSER_ACTION_OPEN; - gtk_init(0, nullptr); - auto dialog = gtk_file_chooser_dialog_new("Open File", nullptr, action, - ("_Cancel"), GTK_RESPONSE_CANCEL, + const auto action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + gtk_init(nullptr, nullptr); + auto dialog = gtk_file_chooser_dialog_new("Open Project Directory", nullptr, action, + ("_Cancel"), GTK_RESPONSE_CANCEL, ("_Open"), GTK_RESPONSE_ACCEPT, nullptr); const auto res = gtk_dialog_run(GTK_DIALOG(dialog)); @@ -36,6 +34,10 @@ ox::Result chooseDirectory() noexcept { out = OxError(1); } gtk_widget_destroy(dialog); + // for some reason we need to 4 iterations through the main loop to destroy the dialog + for (int i = 0; i < 4; ++i) { + gtk_main_iteration_do(false); + } return out; }