-void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)
-{
- connect(container, &DolphinViewContainer::showFilterBarChanged,
- this, &DolphinMainWindow::updateFilterBarAction);
- connect(container, &DolphinViewContainer::writeStateChanged,
- this, &DolphinMainWindow::slotWriteStateChanged);
- connect(container, &DolphinViewContainer::searchModeEnabledChanged,
- this, &DolphinMainWindow::updateSearchAction);
-
- const QAction* toggleSearchAction = actionCollection()->action(QStringLiteral("toggle_search"));
- connect(toggleSearchAction, &QAction::triggered, container, &DolphinViewContainer::setSearchModeEnabled);
-
- const DolphinView* view = container->view();
- connect(view, &DolphinView::selectionChanged,
- this, &DolphinMainWindow::slotSelectionChanged);
- connect(view, &DolphinView::requestItemInfo,
- this, &DolphinMainWindow::requestItemInfo);
- connect(view, &DolphinView::tabRequested,
- this, &DolphinMainWindow::openNewTab);
- connect(view, &DolphinView::requestContextMenu,
- this, &DolphinMainWindow::openContextMenu);
- connect(view, &DolphinView::directoryLoadingStarted,
- this, &DolphinMainWindow::enableStopAction);
- connect(view, &DolphinView::directoryLoadingCompleted,
- this, &DolphinMainWindow::disableStopAction);
- connect(view, &DolphinView::directoryLoadingCompleted,
- this, &DolphinMainWindow::slotDirectoryLoadingCompleted);
- connect(view, &DolphinView::goBackRequested,
- this, &DolphinMainWindow::goBack);
- connect(view, &DolphinView::goForwardRequested,
- this, &DolphinMainWindow::goForward);
- connect(view, &DolphinView::urlActivated,
- this, &DolphinMainWindow::handleUrl);
-
- const KUrlNavigator* navigator = container->urlNavigator();
- connect(navigator, &KUrlNavigator::urlChanged,
- this, &DolphinMainWindow::changeUrl);
- connect(navigator, &KUrlNavigator::historyChanged,
- this, &DolphinMainWindow::updateHistory);
- connect(navigator, &KUrlNavigator::editableStateChanged,
- this, &DolphinMainWindow::slotEditableStateChanged);
- connect(navigator, &KUrlNavigator::tabRequested,
- this, &DolphinMainWindow::openNewTabAfterLastTab);
-}
-
-void DolphinMainWindow::updateSplitAction()
-{
- QAction* splitAction = actionCollection()->action(QStringLiteral("split_view"));
- const DolphinTabPage* tabPage = m_tabWidget->currentTabPage();
+void DolphinMainWindow::connectViewSignals(DolphinViewContainer *container)
+{
+ connect(container, &DolphinViewContainer::showFilterBarChanged, this, &DolphinMainWindow::updateFilterBarAction);
+ connect(container, &DolphinViewContainer::writeStateChanged, this, &DolphinMainWindow::slotWriteStateChanged);
+ slotWriteStateChanged(container->view()->isFolderWritable());
+ connect(container, &DolphinViewContainer::searchBarVisibilityChanged, this, &DolphinMainWindow::updateSearchAction);
+ connect(container, &DolphinViewContainer::captionChanged, this, &DolphinMainWindow::updateWindowTitle);
+ connect(container, &DolphinViewContainer::tabRequested, this, &DolphinMainWindow::openNewTab);
+ connect(container, &DolphinViewContainer::activeTabRequested, this, &DolphinMainWindow::openNewTabAndActivate);
+
+ // Make the toggled state of the selection mode actions visually follow the selection mode state of the view.
+ auto toggleSelectionModeAction = actionCollection()->action(QStringLiteral("toggle_selection_mode"));
+ toggleSelectionModeAction->setChecked(m_activeViewContainer->isSelectionModeEnabled());
+ connect(m_activeViewContainer, &DolphinViewContainer::selectionModeChanged, toggleSelectionModeAction, &QAction::setChecked);
+
+ const DolphinView *view = container->view();
+ connect(view, &DolphinView::selectionChanged, this, &DolphinMainWindow::slotSelectionChanged);
+ connect(view, &DolphinView::requestItemInfo, this, &DolphinMainWindow::requestItemInfo);
+ connect(view, &DolphinView::fileItemsChanged, this, &DolphinMainWindow::fileItemsChanged);
+ connect(view, &DolphinView::tabRequested, this, &DolphinMainWindow::openNewTab);
+ connect(view, &DolphinView::activeTabRequested, this, &DolphinMainWindow::openNewTabAndActivate);
+ connect(view, &DolphinView::windowRequested, this, &DolphinMainWindow::openNewWindow);
+ connect(view, &DolphinView::requestContextMenu, this, &DolphinMainWindow::openContextMenu);
+ connect(view, &DolphinView::directoryLoadingStarted, this, &DolphinMainWindow::enableStopAction);
+ connect(view, &DolphinView::directoryLoadingCompleted, this, &DolphinMainWindow::disableStopAction);
+ connect(view, &DolphinView::directoryLoadingCompleted, this, &DolphinMainWindow::slotDirectoryLoadingCompleted);
+ connect(view, &DolphinView::goBackRequested, this, &DolphinMainWindow::goBack);
+ connect(view, &DolphinView::goForwardRequested, this, &DolphinMainWindow::goForward);
+ connect(view, &DolphinView::urlActivated, this, &DolphinMainWindow::handleUrl);
+ connect(view, &DolphinView::goUpRequested, this, &DolphinMainWindow::goUp);
+ connect(view, &DolphinView::doubleClickViewBackground, this, &DolphinMainWindow::slotDoubleClickViewBackground);
+
+ connect(container->urlNavigatorInternalWithHistory(), &KUrlNavigator::urlChanged, this, &DolphinMainWindow::changeUrl);
+ connect(container->urlNavigatorInternalWithHistory(), &KUrlNavigator::historyChanged, this, &DolphinMainWindow::updateHistory);
+
+ auto navigators = static_cast<DolphinNavigatorsWidgetAction *>(actionCollection()->action(QStringLiteral("url_navigators")));
+ const KUrlNavigator *navigator =
+ m_tabWidget->currentTabPage()->primaryViewActive() ? navigators->primaryUrlNavigator() : navigators->secondaryUrlNavigator();
+
+ QAction *editableLocactionAction = actionCollection()->action(QStringLiteral("editable_location"));
+ editableLocactionAction->setChecked(navigator->isUrlEditable());
+ connect(navigator, &KUrlNavigator::editableStateChanged, this, &DolphinMainWindow::slotEditableStateChanged);
+ connect(navigator, &KUrlNavigator::tabRequested, this, &DolphinMainWindow::openNewTab);
+ connect(navigator, &KUrlNavigator::activeTabRequested, this, &DolphinMainWindow::openNewTabAndActivate);
+ connect(navigator, &KUrlNavigator::newWindowRequested, this, &DolphinMainWindow::openNewWindow);
+}
+
+void DolphinMainWindow::updateSplitActions()
+{
+ QAction *popoutSplitAction = actionCollection()->action(QStringLiteral("popout_split_view"));
+
+ auto setActionPopupMode = [this](KActionMenu *action, QToolButton::ToolButtonPopupMode popupMode) {
+ action->setPopupMode(popupMode);
+ if (auto *buttonForAction = qobject_cast<QToolButton *>(toolBar()->widgetForAction(action))) {
+ buttonForAction->setPopupMode(popupMode);
+ }
+ };
+
+ const DolphinTabPage *tabPage = m_tabWidget->currentTabPage();