mirror of
https://github.com/fltk/fltk.git
synced 2026-06-02 07:26:57 +08:00
Fluid: Fix crash when saving an empty project.
This commit is contained in:
+6
-4
@@ -587,10 +587,12 @@ void Application::save_project_file(void *v) {
|
|||||||
fnfc.options(Fl_Native_File_Chooser::NEW_FOLDER|Fl_Native_File_Chooser::SAVEAS_CONFIRM);
|
fnfc.options(Fl_Native_File_Chooser::NEW_FOLDER|Fl_Native_File_Chooser::SAVEAS_CONFIRM);
|
||||||
#endif
|
#endif
|
||||||
fnfc.filter("FLUID Files\t*.f[ld]");
|
fnfc.filter("FLUID Files\t*.f[ld]");
|
||||||
if (!proj.projectfile_path().empty())
|
if (proj.proj_filename) {
|
||||||
fnfc.directory(proj.projectfile_path().c_str());
|
if (!proj.projectfile_path().empty())
|
||||||
if (!proj.projectfile_name().empty())
|
fnfc.directory(proj.projectfile_path().c_str());
|
||||||
fnfc.preset_file(proj.projectfile_name().c_str());
|
if (!proj.projectfile_name().empty())
|
||||||
|
fnfc.preset_file(proj.projectfile_name().c_str());
|
||||||
|
}
|
||||||
fnfc.filter("Fluid Project\t*.fl\nAny\t*");
|
fnfc.filter("Fluid Project\t*.fl\nAny\t*");
|
||||||
if (fnfc.show() != 0) return;
|
if (fnfc.show() != 0) return;
|
||||||
c = fnfc.filename();
|
c = fnfc.filename();
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ void Project::update_settings_dialog() {
|
|||||||
\return the path ending in '/'
|
\return the path ending in '/'
|
||||||
*/
|
*/
|
||||||
std::string Project::projectfile_path() const {
|
std::string Project::projectfile_path() const {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return end_with_slash(fl_filename_absolute_str(fl_filename_path_str(proj_filename), Fluid.launch_path()));
|
return end_with_slash(fl_filename_absolute_str(fl_filename_path_str(proj_filename), Fluid.launch_path()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,6 +82,7 @@ std::string Project::projectfile_path() const {
|
|||||||
\return the file name without path
|
\return the file name without path
|
||||||
*/
|
*/
|
||||||
std::string Project::projectfile_name() const {
|
std::string Project::projectfile_name() const {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_name(proj_filename);
|
return fl_filename_name(proj_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,8 +105,10 @@ std::string Project::codefile_path() const {
|
|||||||
std::string Project::codefile_name() const {
|
std::string Project::codefile_name() const {
|
||||||
std::string name = fl_filename_name_str(code_file_name);
|
std::string name = fl_filename_name_str(code_file_name);
|
||||||
if (name.empty()) {
|
if (name.empty()) {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_setext_str(fl_filename_name(proj_filename), ".cxx");
|
return fl_filename_setext_str(fl_filename_name(proj_filename), ".cxx");
|
||||||
} else if (name[0] == '.') {
|
} else if (name[0] == '.') {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_setext_str(fl_filename_name(proj_filename), code_file_name);
|
return fl_filename_setext_str(fl_filename_name(proj_filename), code_file_name);
|
||||||
} else {
|
} else {
|
||||||
return name;
|
return name;
|
||||||
@@ -130,8 +134,10 @@ std::string Project::headerfile_path() const {
|
|||||||
std::string Project::headerfile_name() const {
|
std::string Project::headerfile_name() const {
|
||||||
std::string name = fl_filename_name_str(header_file_name);
|
std::string name = fl_filename_name_str(header_file_name);
|
||||||
if (name.empty()) {
|
if (name.empty()) {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_setext_str(fl_filename_name_str(proj_filename), ".h");
|
return fl_filename_setext_str(fl_filename_name_str(proj_filename), ".h");
|
||||||
} else if (name[0] == '.') {
|
} else if (name[0] == '.') {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_setext_str(fl_filename_name_str(proj_filename), header_file_name);
|
return fl_filename_setext_str(fl_filename_name_str(proj_filename), header_file_name);
|
||||||
} else {
|
} else {
|
||||||
return name;
|
return name;
|
||||||
@@ -158,6 +164,7 @@ std::string Project::stringsfile_path() const {
|
|||||||
\return the file name without path
|
\return the file name without path
|
||||||
*/
|
*/
|
||||||
std::string Project::stringsfile_name() const {
|
std::string Project::stringsfile_name() const {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
switch (i18n.type) {
|
switch (i18n.type) {
|
||||||
default: return fl_filename_setext_str(fl_filename_name(proj_filename), ".txt");
|
default: return fl_filename_setext_str(fl_filename_name(proj_filename), ".txt");
|
||||||
case fld::I18n_Type::GNU: return fl_filename_setext_str(fl_filename_name(proj_filename), ".po");
|
case fld::I18n_Type::GNU: return fl_filename_setext_str(fl_filename_name(proj_filename), ".po");
|
||||||
@@ -170,6 +177,7 @@ std::string Project::stringsfile_name() const {
|
|||||||
\return the file name without path or extension
|
\return the file name without path or extension
|
||||||
*/
|
*/
|
||||||
std::string Project::basename() const {
|
std::string Project::basename() const {
|
||||||
|
if (!proj_filename) return std::string{};
|
||||||
return fl_filename_setext_str(fl_filename_name(proj_filename), "");
|
return fl_filename_setext_str(fl_filename_name(proj_filename), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user