Do not show accelerators in dock window titles

The dock widget's togglViewActions text is tied to the widget title,
but the view headers should not display a potential "&" accelerator.

So stash the &'d string away when setting up the title and retrieve
it when re-creating the view menu.

Task-number: QTCREATORBUG-19378
Change-Id: I6bf49ca526d12ddd57dfa33a94327a83baeaa6b4
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2017-11-29 11:23:46 +01:00
parent 9488b7e604
commit edcce9c1f3

View File

@@ -251,13 +251,17 @@ DockWidget::DockWidget(QWidget *inner, FancyMainWindow *parent, bool immutable)
setWidget(inner); setWidget(inner);
setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable); setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable);
setObjectName(inner->objectName() + QLatin1String("DockWidget")); setObjectName(inner->objectName() + QLatin1String("DockWidget"));
setWindowTitle(inner->windowTitle());
setMouseTracking(true); setMouseTracking(true);
QString title = inner->windowTitle();
toggleViewAction()->setProperty("original_title", title);
title = Utils::stripAccelerator(title);
setWindowTitle(title);
QStyleOptionDockWidget opt; QStyleOptionDockWidget opt;
initStyleOption(&opt); initStyleOption(&opt);
m_titleBar = new TitleBarWidget(this, opt); m_titleBar = new TitleBarWidget(this, opt);
m_titleBar->m_titleLabel->setText(inner->windowTitle()); m_titleBar->m_titleLabel->setText(title);
setTitleBarWidget(m_titleBar); setTitleBarWidget(m_titleBar);
if (immutable) if (immutable)
@@ -527,7 +531,9 @@ void FancyMainWindow::addDockActionsToMenu(QMenu *menu)
QDockWidget *dockWidget = dockwidgets.at(i); QDockWidget *dockWidget = dockwidgets.at(i);
if (dockWidget->property("managed_dockwidget").isNull() if (dockWidget->property("managed_dockwidget").isNull()
&& dockWidget->parentWidget() == this) { && dockWidget->parentWidget() == this) {
actions.append(dockwidgets.at(i)->toggleViewAction()); QAction *action = dockWidget->toggleViewAction();
action->setText(action->property("original_title").toString());
actions.append(action);
} }
} }
Utils::sort(actions, [](const QAction *action1, const QAction *action2) { Utils::sort(actions, [](const QAction *action1, const QAction *action2) {