Content of the ProfilePanel and Theme list now sorted alphabetically on Linux too (see issue 853)
This commit is contained in:
@@ -1065,6 +1065,7 @@ void Preferences::parseDir (Glib::ustring dirname, std::vector<Glib::ustring>& i
|
|||||||
if (!safe_file_test (fname, Glib::FILE_TEST_IS_DIR) && sname.size() >= ext.size() && sname.substr (sname.size()-ext.size(), ext.size()).casefold() == ext)
|
if (!safe_file_test (fname, Glib::FILE_TEST_IS_DIR) && sname.size() >= ext.size() && sname.substr (sname.size()-ext.size(), ext.size()).casefold() == ext)
|
||||||
items.push_back (sname.substr(0,sname.size()-ext.size()));
|
items.push_back (sname.substr(0,sname.size()-ext.size()));
|
||||||
}
|
}
|
||||||
|
std::sort(items.begin(), items.end());
|
||||||
delete dir;
|
delete dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -113,6 +113,10 @@ void ProfileStore::_parseProfiles () {
|
|||||||
currDir = "${G}";
|
currDir = "${G}";
|
||||||
parseDir (p2, virtualPath, currDir, 0, 0, displayLevel0);
|
parseDir (p2, virtualPath, currDir, 0, 0, displayLevel0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sort profiles
|
||||||
|
std::sort(entries.begin(), entries.end(), SortProfiles() );
|
||||||
|
|
||||||
// entries and partProfiles are empty, but the entry and profiles already exist (they have survived to clearFileList and clearProfileList)
|
// entries and partProfiles are empty, but the entry and profiles already exist (they have survived to clearFileList and clearProfileList)
|
||||||
if (!internalDefaultEntry)
|
if (!internalDefaultEntry)
|
||||||
internalDefaultEntry = new ProfileStoreEntry(Glib::ustring("(") + M("PROFILEPANEL_PINTERNAL") + Glib::ustring(")"), PSET_FILE, 0, 0);
|
internalDefaultEntry = new ProfileStoreEntry(Glib::ustring("(") + M("PROFILEPANEL_PINTERNAL") + Glib::ustring(")"), PSET_FILE, 0, 0);
|
||||||
@@ -195,7 +199,7 @@ bool ProfileStore::parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath
|
|||||||
|
|
||||||
// map the partial profile
|
// map the partial profile
|
||||||
partProfiles[filePSE] = pProf;
|
partProfiles[filePSE] = pProf;
|
||||||
//partProfiles.insert( std::pair<ProfileStoreEntry*, rtengine::procparams::AutoPartialProfile*> (folderPSE, pProf) );
|
//partProfiles.insert( std::pair<ProfileStoreEntry*, rtengine::procparams::AutoPartialProfile*> (filePSE, pProf) );
|
||||||
}
|
}
|
||||||
else if( options.rtSettings.verbose ) {
|
else if( options.rtSettings.verbose ) {
|
||||||
printf ("failed!\n");
|
printf ("failed!\n");
|
||||||
|
@@ -125,6 +125,12 @@ class ProfileStore {
|
|||||||
} StoreState;
|
} StoreState;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
struct SortProfiles {
|
||||||
|
bool operator ()(const ProfileStoreEntry* const a1, const ProfileStoreEntry* const a2) {
|
||||||
|
return a1->parentFolderId == a2->parentFolderId ? a1->label < a2->label : a1->parentFolderId < a2->parentFolderId;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
MyMutex *parseMutex;
|
MyMutex *parseMutex;
|
||||||
StoreState storeState;
|
StoreState storeState;
|
||||||
rtengine::procparams::AutoPartialProfile *internalDefaultProfile;
|
rtengine::procparams::AutoPartialProfile *internalDefaultProfile;
|
||||||
|
Reference in New Issue
Block a user