diff --git a/src/Gui/Command.cpp b/src/Gui/Command.cpp
index 1647192f68..830ee3a236 100644
--- a/src/Gui/Command.cpp
+++ b/src/Gui/Command.cpp
@@ -856,8 +856,22 @@ void Command::applyCommandData(const char* context, Action* action)
{
action->setText(QCoreApplication::translate(
context, getMenuText()));
- action->setToolTip(QCoreApplication::translate(
- context, getToolTipText()));
+ // build the tooltip
+ QString tooltip;
+ tooltip.append(QString::fromLatin1("
"));
+ tooltip.append(QCoreApplication::translate(
+ context, getMenuText()));
+ tooltip.append(QString::fromLatin1("
"));
+ QRegularExpression re(QString::fromLatin1("([^&])&([^&])"));
+ tooltip.replace(re, QString::fromLatin1("\\1\\2"));
+ tooltip.replace(QString::fromLatin1("&&"), QString::fromLatin1("&"));
+ tooltip.append(QCoreApplication::translate(
+ context, getToolTipText()));
+ tooltip.append(QString::fromLatin1("
("));
+ tooltip.append(QCoreApplication::translate(
+ context, getWhatsThis()));
+ tooltip.append(QString::fromLatin1(") "));
+ action->setToolTip(tooltip);
action->setWhatsThis(QCoreApplication::translate(
context, getWhatsThis()));
if (sStatusTip)