fix: Recent file entry name encoding being broken
This commit is contained in:
parent
8672a2cfe0
commit
a950796306
@ -298,31 +298,7 @@ namespace hex {
|
|||||||
|
|
||||||
[[nodiscard]] std::optional<std::string> getEnvironmentVariable(const std::string &env);
|
[[nodiscard]] std::optional<std::string> getEnvironmentVariable(const std::string &env);
|
||||||
|
|
||||||
[[nodiscard]] inline std::string limitStringLength(const std::string &string, size_t maxLength) {
|
[[nodiscard]] std::string limitStringLength(const std::string &string, size_t maxLength);
|
||||||
// If the string is shorter than the max length, return it as is
|
|
||||||
if (string.size() < maxLength)
|
|
||||||
return string;
|
|
||||||
|
|
||||||
// If the string is longer than the max length, find the last space before the max length
|
|
||||||
auto it = string.begin() + maxLength;
|
|
||||||
while (it != string.begin() && !std::isspace(*it)) --it;
|
|
||||||
|
|
||||||
// If there's no space before the max length, just cut the string
|
|
||||||
if (it == string.begin()) {
|
|
||||||
it = string.begin() + maxLength;
|
|
||||||
|
|
||||||
// Try to find a UTF-8 character boundary
|
|
||||||
while (it != string.begin() && (*it & 0x80) != 0x00) --it;
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we still didn't find a valid boundary, just return the string as is
|
|
||||||
if (it == string.begin())
|
|
||||||
return string;
|
|
||||||
|
|
||||||
// Append
|
|
||||||
return std::string(string.begin(), it) + "…";
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]] std::optional<std::fs::path> getInitialFilePath();
|
[[nodiscard]] std::optional<std::fs::path> getInitialFilePath();
|
||||||
|
|
||||||
|
@ -679,6 +679,32 @@ namespace hex {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] std::string limitStringLength(const std::string &string, size_t maxLength) {
|
||||||
|
// If the string is shorter than the max length, return it as is
|
||||||
|
if (string.size() < maxLength)
|
||||||
|
return string;
|
||||||
|
|
||||||
|
// If the string is longer than the max length, find the last space before the max length
|
||||||
|
auto it = string.begin() + maxLength;
|
||||||
|
while (it != string.begin() && !std::isspace(*it)) --it;
|
||||||
|
|
||||||
|
// If there's no space before the max length, just cut the string
|
||||||
|
if (it == string.begin()) {
|
||||||
|
it = string.begin() + maxLength;
|
||||||
|
|
||||||
|
// Try to find a UTF-8 character boundary
|
||||||
|
while (it != string.begin() && (*it & 0x80) == 0x00) --it;
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we still didn't find a valid boundary, just return the string as is
|
||||||
|
if (it == string.begin())
|
||||||
|
return string;
|
||||||
|
|
||||||
|
// Append
|
||||||
|
return std::string(string.begin(), it) + "…";
|
||||||
|
}
|
||||||
|
|
||||||
static std::optional<std::fs::path> s_fileToOpen;
|
static std::optional<std::fs::path> s_fileToOpen;
|
||||||
extern "C" void openFile(const char *path) {
|
extern "C" void openFile(const char *path) {
|
||||||
log::info("Opening file: {0}", path);
|
log::info("Opening file: {0}", path);
|
||||||
|
@ -183,7 +183,9 @@ namespace hex::plugin::builtin::recent {
|
|||||||
.entryFilePath = path,
|
.entryFilePath = path,
|
||||||
.data = jsonData
|
.data = jsonData
|
||||||
});
|
});
|
||||||
} catch (...) { }
|
} catch (const std::exception &e) {
|
||||||
|
log::error("Failed to parse recent file: {}", e.what());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete all recent provider files that are not in the list
|
// Delete all recent provider files that are not in the list
|
||||||
|
Loading…
x
Reference in New Issue
Block a user