From 6437e1782129d81b39b2bf6fdebf07291a3667c1 Mon Sep 17 00:00:00 2001 From: xtemp09 Date: Fri, 21 Nov 2025 17:46:24 +0700 Subject: [PATCH] [GUI] Handle ampersand in windowTitle --- src/Gui/Action.cpp | 4 +++- src/Gui/MDIView.cpp | 7 +++++++ src/Gui/MDIView.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Gui/Action.cpp b/src/Gui/Action.cpp index 3287070114..5895397792 100644 --- a/src/Gui/Action.cpp +++ b/src/Gui/Action.cpp @@ -937,7 +937,9 @@ void RecentFilesAction::setFiles(const QStringList& files) for (int index = 0; index < numRecentFiles; index++) { QString numberLabel = numberToLabel(index + 1); QFileInfo fi(files[index]); - recentFiles[index]->setText(QStringLiteral("%1 %2").arg(numberLabel).arg(fi.fileName())); + QString fileName {fi.fileName()}; + fileName.replace(QLatin1Char('&'), QStringLiteral("&&")); + recentFiles[index]->setText(QStringLiteral("%1 %2").arg(numberLabel, fileName)); recentFiles[index]->setStatusTip(tr("Open file %1").arg(files[index])); recentFiles[index]->setToolTip(files[index]); // set the full name that we need later for saving recentFiles[index]->setData(QVariant(index)); diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp index db75c9508a..3d5f449d87 100644 --- a/src/Gui/MDIView.cpp +++ b/src/Gui/MDIView.cpp @@ -527,4 +527,11 @@ QString MDIView::buildWindowTitle() const return windowTitle; } +void MDIView::setWindowTitle(const QString& title) +{ + QString newerTitle {title}; + newerTitle.replace(QLatin1Char('&'), QStringLiteral("&&")); + QMainWindow::setWindowTitle(newerTitle); +} + #include "moc_MDIView.cpp" diff --git a/src/Gui/MDIView.h b/src/Gui/MDIView.h index 1b3dfe8dcc..d006c5c808 100644 --- a/src/Gui/MDIView.h +++ b/src/Gui/MDIView.h @@ -78,6 +78,8 @@ public: /// build window title QString buildWindowTitle() const; + /// reimplementation of QWidget::setWindowTitle(const QString &title) + void setWindowTitle(const QString& title); /// Message handler bool onMsg(const char* pMsg, const char** ppReturn) override;