diff --git a/src/ktoolbar.cpp b/src/ktoolbar.cpp --- a/src/ktoolbar.cpp +++ b/src/ktoolbar.cpp @@ -111,7 +111,7 @@ contextTextRight(nullptr), contextText(nullptr), contextTextUnder(nullptr), - contextLockAction(nullptr), + contextEditModeAction(nullptr), dropIndicatorAction(nullptr), context(nullptr), dragAction(nullptr) @@ -156,6 +156,7 @@ bool unlockedMovable : 1; static bool s_editable; static bool s_locked; + static bool s_editMode; QSet xmlguiClients; @@ -174,7 +175,7 @@ QAction *contextTextRight; QAction *contextText; QAction *contextTextUnder; - KToggleAction *contextLockAction; + KToggleAction *contextEditModeAction; QMap contextIconSizes; class IntSetting @@ -236,6 +237,7 @@ bool KToolBar::Private::s_editable = false; bool KToolBar::Private::s_locked = true; +bool KToolBar::Private::s_editMode = false; void KToolBar::Private::init(bool readConfig, bool _isMainToolBar) { @@ -301,6 +303,7 @@ { if (!context) { context = new QMenu(q); + context->setToolTipsVisible(true); contextButtonTitle = context->addSection(i18nc("@title:menu", "Show Text")); contextShowText = context->addAction(QString(), q, SLOT(slotContextShowText())); @@ -401,10 +404,15 @@ unlockedMovable = false; } - delete contextLockAction; - contextLockAction = new KToggleAction(QIcon::fromTheme(QStringLiteral("system-lock-screen")), i18n("Lock Toolbar Positions"), q); - contextLockAction->setChecked(q->toolBarsLocked()); - connect(contextLockAction, SIGNAL(toggled(bool)), q, SLOT(slotLockToolBars(bool))); + delete contextEditModeAction; + contextEditModeAction = new KToggleAction(QIcon::fromTheme(QStringLiteral("document-edit")), i18n("Editable Toolbar"), q); + contextEditModeAction->setToolTip(i18n("Enables dragging the whole toolbar as well as dragging any action within the toolbar.")); + contextEditModeAction->setChecked(s_editMode); + connect(contextEditModeAction, &QAction::toggled, q, [this](bool toggled) { + s_editMode = toggled; + q->setToolBarsLocked(!toggled); + q->setToolBarsEditable(toggled); + }); // Now add the actions to the menu context->addMenu(contextMode); @@ -607,7 +615,7 @@ context->addAction(configureAction); } - context->addAction(contextLockAction); + context->addAction(contextEditModeAction); if (kmw) { kmw->setupToolbarMenuActions(); @@ -696,7 +704,7 @@ context->removeAction(configureAction); } - context->removeAction(contextLockAction); + context->removeAction(contextEditModeAction); } void KToolBar::Private::slotContextLeft() @@ -836,7 +844,7 @@ KToolBar::~KToolBar() { - delete d->contextLockAction; + delete d->contextEditModeAction; delete d; } @@ -1397,7 +1405,7 @@ bool KToolBar::toolBarsEditable() { - return KToolBar::Private::s_editable; + return KToolBar::Private::s_editable || KToolBar::Private::s_editMode; } void KToolBar::setToolBarsEditable(bool editable) @@ -1422,7 +1430,7 @@ bool KToolBar::toolBarsLocked() { - return KToolBar::Private::s_locked; + return KToolBar::Private::s_locked || !KToolBar::Private::s_editMode; } void KToolBar::emitToolbarStyleChanged()