diff --git a/sublime/idealbuttonbarwidget.h b/sublime/idealbuttonbarwidget.h --- a/sublime/idealbuttonbarwidget.h +++ b/sublime/idealbuttonbarwidget.h @@ -73,14 +73,12 @@ void loadOrderSettings(const KConfigGroup& configGroup); void saveOrderSettings(KConfigGroup& configGroup); -private Q_SLOTS: - void showWidget(bool checked); - void buttonPressed(bool state); - signals: void emptyChanged(); private: + void showWidget(bool checked); + void applyOrderToLayout(); void takeOrderFromLayout(); diff --git a/sublime/idealbuttonbarwidget.cpp b/sublime/idealbuttonbarwidget.cpp --- a/sublime/idealbuttonbarwidget.cpp +++ b/sublime/idealbuttonbarwidget.cpp @@ -175,7 +175,6 @@ Q_ASSERT(action->dockWidget()); connect(action, &QAction::toggled, this, static_cast(&IdealButtonBarWidget::showWidget)); - connect(button, &IdealToolButton::clicked, this, &IdealButtonBarWidget::buttonPressed); connect(button, &IdealToolButton::customContextMenuRequested, action->dockWidget(), &IdealDockWidget::contextMenuRequested); @@ -330,8 +329,7 @@ Q_ASSERT(button); if (checked) { - IdealController::RaiseMode mode = IdealController::RaiseMode(widgetAction->property("raise").toInt()); - if ( mode == IdealController::HideOtherViews ) { + if ( !QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) ) { // Make sure only one widget is visible at any time. // The alternative to use a QActionCollection and setting that to "exclusive" // has a big drawback: QActions in a collection that is exclusive cannot @@ -354,30 +352,3 @@ { return dynamic_cast(_action)->dockWidget(); } - -void IdealButtonBarWidget::buttonPressed(bool state) -{ - auto button = qobject_cast(sender()); - Q_ASSERT(button); - ToolViewAction* action = nullptr; - foreach(QAction* a, actions()) { - auto tva = dynamic_cast(a); - if (tva && tva->button() == button) - action = tva; - } - Q_ASSERT(action); - - const bool forceGrouping = QApplication::keyboardModifiers().testFlag(Qt::ControlModifier); - - if (forceGrouping) { - action->setProperty("raise", IdealController::GroupWithOtherViews); - } - - action->setChecked(state); - - if (forceGrouping) { - // need to reset the raise property so that subsequent - // showWidget()'s will not do grouping unless explicitly asked - action->setProperty("raise", IdealController::HideOtherViews); - } -}