From 096839daf0b23231bd4bae369d583ce0b047ac6f Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Thu, 13 Aug 2026 22:25:31 +0300 Subject: [PATCH] Optimize and strips the full Unicode Bidi_Control set IB-9048 Signed-off-by: Raul Metsma --- client/dialogs/FileDialog.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/client/dialogs/FileDialog.cpp b/client/dialogs/FileDialog.cpp index f47151c36..ec52c57d8 100644 --- a/client/dialogs/FileDialog.cpp +++ b/client/dialogs/FileDialog.cpp @@ -48,8 +48,6 @@ class CPtr #include #endif -#include - QString FileDialog::createNewFileName(const QString &file, bool signature, QWidget *parent) { const QString extension = signature ? QStringLiteral(".asice") : @@ -293,17 +291,15 @@ QString FileDialog::getSaveFileName(QWidget *parent, const QString &caption, con QString FileDialog::normalized(const QString &data) { - static constexpr std::array list {{ - {0xE2, 0x80, 0x8E}, // \u200E LEFT-TO-RIGHT MARK - {0xE2, 0x80, 0x8F}, // \u200F RIGHT-TO-LEFT MARK - {0xE2, 0x80, 0xAA}, // \u202A LEFT-TO-RIGHT EMBEDDING - {0xE2, 0x80, 0xAB}, // \u202B RIGHT-TO-LEFT EMBEDDING - {0xE2, 0x80, 0xAE}, // \u202E RIGHT-TO-LEFT OVERRIDE - }}; - QString result = data.normalized(QString::NormalizationForm_C); - for (const unsigned char *replace: list) - result = result.remove((const char*)replace); - return result; + static const QRegularExpression control(QStringLiteral( + "[" + "\\x{061C}" // ARABIC LETTER MARK + "\\x{200E}" // LEFT-TO-RIGHT MARK + "\\x{200F}" // RIGHT-TO-LEFT MARK + "\\x{202A}-\\x{202E}" // LEFT-TO-RIGHT EMBEDDING, RIGHT-TO-LEFT EMBEDDING, POP DIRECTIONAL FORMATTING, LEFT-TO-RIGHT OVERRIDE, RIGHT-TO-LEFT OVERRIDE + "\\x{2066}-\\x{2069}" // LEFT-TO-RIGHT ISOLATE, RIGHT-TO-LEFT ISOLATE, FIRST STRONG ISOLATE, POP DIRECTIONAL ISOLATE + "]")); + return data.normalized(QString::NormalizationForm_C).remove(control); } QString FileDialog::result( const QString &str )