X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/00abc6d28031569de17e4888d8b21e6afbe0872f..b6fc58c3c32b03f504a5f697b62c4834dc3f650a:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 6d47afae1..5e6b6e94a 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -202,7 +203,7 @@ DolphinMainWindow::~DolphinMainWindow() { } -QVector DolphinMainWindow::viewContainers(bool includeInactive) const +QVector DolphinMainWindow::activeViewContainers() const { QVector viewContainers; @@ -845,7 +846,8 @@ void DolphinMainWindow::showFilterBar() void DolphinMainWindow::toggleLocationInToolbar() { // collect needed variables - const bool locationInToolbar = actionCollection()->action(QStringLiteral("location_in_toolbar"))->isChecked(); + QAction *locationInToolbarAction = actionCollection()->action(QStringLiteral("location_in_toolbar")); + const bool locationInToolbar = locationInToolbarAction->isChecked(); auto viewContainers = this->viewContainers(); auto urlNavigatorWidgetAction = static_cast (actionCollection()->action(QStringLiteral("url_navigator"))); @@ -856,6 +858,21 @@ void DolphinMainWindow::toggleLocationInToolbar() const int selectionStart = lineEdit->selectionStart(); const int selectionLength = lineEdit->selectionLength(); + // prevent the switching if it would leave the user without a visible UrlNavigator + if (locationInToolbar && !toolBar()->actions().contains(urlNavigatorWidgetAction)) { + QAction *configureToolbars = actionCollection()->action(KStandardAction::name(KStandardAction::ConfigureToolbars)); + KMessageWidget *messageWidget = m_activeViewContainer->showMessage( + xi18nc("@info 2 is the visible text on a button just below the message", + "The location could not be moved onto the toolbar because there is currently " + "no \"%1\" item on the toolbar. Select %2 and add the " + "\"%1\" item. Then this will work.", urlNavigatorWidgetAction->iconText(), + configureToolbars->iconText()), DolphinViewContainer::Information); + messageWidget->addAction(configureToolbars); + messageWidget->addAction(locationInToolbarAction); + locationInToolbarAction->setChecked(false); + return; + } + // do the switching GeneralSettings::setLocationInToolbar(locationInToolbar); if (locationInToolbar) { @@ -870,7 +887,7 @@ void DolphinMainWindow::toggleLocationInToolbar() } } - urlNavigatorWidgetAction->setUrlNavigatorVisible(!locationInToolbar); + urlNavigatorWidgetAction->setUrlNavigatorVisible(locationInToolbar); m_activeViewContainer->urlNavigator()->setUrlEditable(isEditable); if (hasFocus) { // the rest of this method is unneeded perfectionism m_activeViewContainer->urlNavigator()->editor()->lineEdit()->setText(lineEdit->text()); @@ -1756,8 +1773,6 @@ void DolphinMainWindow::setupActions() "Depending on the settings this Widget is blank/invisible.", "Url Navigator (auto-hide)")); actionCollection()->addAction(QStringLiteral("url_navigator"), urlNavigatorWidgetAction); - connect(locationInToolbar, &KToggleAction::triggered, - urlNavigatorWidgetAction, &DolphinUrlNavigatorWidgetAction::setUrlNavigatorVisible); // for context menu QAction* showTarget = actionCollection()->addAction(QStringLiteral("show_target"));