diff --git a/Fltk/solverWindow.cpp b/Fltk/solverWindow.cpp index e1174cb3819aca930b92cf44efa7fc414c1b6d1e..04e260dd72fce60fbbd3c9be90c6779b3594eba7 100644 --- a/Fltk/solverWindow.cpp +++ b/Fltk/solverWindow.cpp @@ -32,7 +32,6 @@ void solver_cb(Fl_Widget *w, void *data) first[i] = 1; init = 1; } - if(first[num]) { first[num] = 0; char file[256], no_ext[256], ext[256], base[256]; @@ -41,6 +40,11 @@ void solver_cb(Fl_Widget *w, void *data) strcat(file, SINFO[num].extension.c_str()); GUI::instance()->solver[num]->input[0]->value(file); } + // show the window before calling Solver() to avoid race condition on + // Windows (if the message window pops up die to an error, the window + // callbacks get messed up) + GUI::instance()->solver[num]->win->show(); + if(SINFO[num].nboptions) { std::string file = FixWindowsPath (GUI::instance()->solver[num]->input[0]->value()); @@ -50,7 +54,6 @@ void solver_cb(Fl_Widget *w, void *data) sprintf(tmp, "%s %s", SINFO[num].option_command.c_str(), tmp2); Solver(num, tmp); } - GUI::instance()->solver[num]->win->show(); } static void solver_file_open_cb(Fl_Widget *w, void *data)