summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabien Freling <fabien.freling@nokia.com>2010-03-26 11:34:54 (GMT)
committerSamuli Piippo <samuli.piippo@digia.com>2011-06-09 10:05:31 (GMT)
commit5dab51e015d54a895d480eff11f6313099e44e4b (patch)
tree164dd9412e0caf474d544d0dbd677eae4c50e60f
parente724cc03c9506e7c610df7d8ff462f994a7b114d (diff)
downloadQt-5dab51e015d54a895d480eff11f6313099e44e4b.zip
Qt-5dab51e015d54a895d480eff11f6313099e44e4b.tar.gz
Qt-5dab51e015d54a895d480eff11f6313099e44e4b.tar.bz2
Fix the bug where the ampersand symbol would be discarded.
We are now checking that the QAction is not related to the About or Quit button on Mac OS X Task-number: QTBUG-7540 Reviewed-by: Morten Sorvig (cherry picked from commit c19cb39ddbfd93802bfe61ecaa4f737a1bd1c1bb)
-rw-r--r--src/gui/styles/qmacstyle_mac.mm4
-rw-r--r--src/gui/widgets/qmenu_mac.mm6
2 files changed, 7 insertions, 3 deletions
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index c39f239..507ae4b 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -432,13 +432,13 @@ static inline bool isTreeView(const QWidget *widget)
QString qt_mac_removeMnemonics(const QString &original)
{
- // copied from qt_format_text (to be bug-for-bug compatible).
QString returnText(original.size(), 0);
int finalDest = 0;
int currPos = 0;
int l = original.length();
while (l) {
- if (original.at(currPos) == QLatin1Char('&')) {
+ if (original.at(currPos) == QLatin1Char('&')
+ && (l == 1 || original.at(currPos + 1) != QLatin1Char('&'))) {
++currPos;
--l;
if (l == 0)
diff --git a/src/gui/widgets/qmenu_mac.mm b/src/gui/widgets/qmenu_mac.mm
index 772e409..8c13fd2 100644
--- a/src/gui/widgets/qmenu_mac.mm
+++ b/src/gui/widgets/qmenu_mac.mm
@@ -1420,7 +1420,11 @@ QMenuPrivate::QMacMenuPrivate::syncAction(QMacMenuAction *action)
} else {
[item setTitle: qt_mac_QStringToNSString(finalString)];
}
- [item setTitle:qt_mac_QStringToNSString(qt_mac_removeMnemonics(text))];
+
+ if (action->action->menuRole() == QAction::AboutRole || action->action->menuRole() == QAction::QuitRole)
+ [item setTitle:qt_mac_QStringToNSString(text)];
+ else
+ [item setTitle:qt_mac_QStringToNSString(qt_mac_removeMnemonics(text))];
// Cocoa Enabled
[item setEnabled: action->action->isEnabled()];