forked from qt-creator/qt-creator
DockWidget: Avoid using sender()
The toggleView() was used as a signal handler for m_toggleViewAction and as a public method. In the latter case checking the sender doesn't make any sense. Add a lambda as a direct signal handler for m_toggleViewAction and perform a custom modification of the open arg before calling toggleView(). Simplify setToggleViewActionChecked() implementation. Change-Id: If3799110b3f1dcf6fe0c653ebcfd23f9716cb2f3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Henning Gründl <henning.gruendl@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -204,7 +204,11 @@ namespace ADS
|
|||||||
d->m_tabWidget = componentsFactory()->createDockWidgetTab(this);
|
d->m_tabWidget = componentsFactory()->createDockWidgetTab(this);
|
||||||
d->m_toggleViewAction = new QAction(uniqueId, this);
|
d->m_toggleViewAction = new QAction(uniqueId, this);
|
||||||
d->m_toggleViewAction->setCheckable(true);
|
d->m_toggleViewAction->setCheckable(true);
|
||||||
connect(d->m_toggleViewAction, &QAction::triggered, this, &DockWidget::toggleView);
|
connect(d->m_toggleViewAction, &QAction::triggered, this, [this](bool open) {
|
||||||
|
// If the toggle view action mode is ActionModeShow (== m_toggleViewAction isn't
|
||||||
|
// checkable, see setToggleViewActionMode()), then open is always true
|
||||||
|
toggleView(open || !d->m_toggleViewAction->isCheckable());
|
||||||
|
});
|
||||||
setToolbarFloatingStyle(false);
|
setToolbarFloatingStyle(false);
|
||||||
|
|
||||||
if (DockManager::testConfigFlag(DockManager::FocusHighlighting))
|
if (DockManager::testConfigFlag(DockManager::FocusHighlighting))
|
||||||
@@ -219,10 +223,7 @@ namespace ADS
|
|||||||
|
|
||||||
void DockWidget::setToggleViewActionChecked(bool checked)
|
void DockWidget::setToggleViewActionChecked(bool checked)
|
||||||
{
|
{
|
||||||
QAction *action = d->m_toggleViewAction;
|
d->m_toggleViewAction->setChecked(checked);
|
||||||
//action->blockSignals(true);
|
|
||||||
action->setChecked(checked);
|
|
||||||
//action->blockSignals(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockWidget::setWidget(QWidget *widget, eInsertMode insertMode)
|
void DockWidget::setWidget(QWidget *widget, eInsertMode insertMode)
|
||||||
@@ -344,12 +345,6 @@ namespace ADS
|
|||||||
|
|
||||||
void DockWidget::toggleView(bool open)
|
void DockWidget::toggleView(bool open)
|
||||||
{
|
{
|
||||||
// If the toggle view action mode is ActionModeShow, then Open is always
|
|
||||||
// true if the sender is the toggle view action
|
|
||||||
QAction *action = qobject_cast<QAction *>(sender());
|
|
||||||
if (action == d->m_toggleViewAction && !d->m_toggleViewAction->isCheckable())
|
|
||||||
open = true;
|
|
||||||
|
|
||||||
// If the dock widget state is different, then we really need to toggle
|
// If the dock widget state is different, then we really need to toggle
|
||||||
// the state. If we are in the right state, then we simply make this
|
// the state. If we are in the right state, then we simply make this
|
||||||
// dock widget the current dock widget
|
// dock widget the current dock widget
|
||||||
|
|||||||
Reference in New Issue
Block a user