X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f542da84a27e11f58405da729e952987d16f151d..fbd7cb02a511ff869d74aa4e758203a1cd340962:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 9fe681462..22d2f09fc 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -207,7 +207,7 @@ void DolphinMainWindow::changeUrl(const KUrl& url) // shown due to DolphinViewContainer::restoreView(). return; } - + DolphinViewContainer* view = activeViewContainer(); if (view != 0) { view->setUrl(url); @@ -297,6 +297,13 @@ void DolphinMainWindow::openNewTab() { openNewTab(m_activeViewContainer->url()); m_tabBar->setCurrentIndex(m_viewTab.count() - 1); + + KUrlNavigator* navigator = m_activeViewContainer->urlNavigator(); + if (navigator->isUrlEditable()) { + // if a new tab is opened and the URL is editable, assure that + // the user can edit the URL without manually setting the focus + navigator->setFocus(); + } } void DolphinMainWindow::openNewTab(const KUrl& url) @@ -313,12 +320,22 @@ void DolphinMainWindow::openNewTab(const KUrl& url) ViewTab viewTab; viewTab.splitter = new QSplitter(this); viewTab.primaryView = new DolphinViewContainer(this, viewTab.splitter, url); + viewTab.primaryView->setActive(false); connectViewSignals(viewTab.primaryView); viewTab.primaryView->view()->reload(); m_viewTab.append(viewTab); actionCollection()->action("close_tab")->setEnabled(true); + + // provide a split view, if the startup settings are set this way + const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings(); + if (generalSettings->splitView()) { + const int tabIndex = m_viewTab.count() - 1; + createSecondaryView(tabIndex); + m_viewTab[tabIndex].secondaryView->setActive(true); + m_viewTab[tabIndex].isPrimaryViewActive = false; + } } void DolphinMainWindow::activateNextTab() @@ -349,7 +366,6 @@ void DolphinMainWindow::openInNewTab() const KFileItemList list = m_activeViewContainer->view()->selectedItems(); if ((list.count() == 1) && list[0].isDir()) { openNewTab(m_activeViewContainer->view()->selectedUrls()[0]); - m_tabBar->setCurrentIndex(m_viewTab.count() - 1); } } @@ -525,19 +541,7 @@ void DolphinMainWindow::invertSelection() void DolphinMainWindow::toggleSplitView() { if (m_viewTab[m_tabIndex].secondaryView == 0) { - // create a secondary view - QSplitter* splitter = m_viewTab[m_tabIndex].splitter; - const int newWidth = (m_viewTab[m_tabIndex].primaryView->width() - splitter->handleWidth()) / 2; - - const DolphinView* view = m_viewTab[m_tabIndex].primaryView->view(); - m_viewTab[m_tabIndex].secondaryView = new DolphinViewContainer(this, 0, view->rootUrl()); - connectViewSignals(m_viewTab[m_tabIndex].secondaryView); - splitter->addWidget(m_viewTab[m_tabIndex].secondaryView); - splitter->setSizes(QList() << newWidth << newWidth); - m_viewTab[m_tabIndex].secondaryView->view()->reload(); - m_viewTab[m_tabIndex].secondaryView->setActive(false); - m_viewTab[m_tabIndex].secondaryView->show(); - + createSecondaryView(m_tabIndex); setActiveViewContainer(m_viewTab[m_tabIndex].secondaryView); } else if (m_activeViewContainer == m_viewTab[m_tabIndex].secondaryView) { // remove secondary view @@ -710,7 +714,12 @@ void DolphinMainWindow::setActiveTab(int index) } // hide current tab content - m_viewTab[m_tabIndex].isPrimaryViewActive = m_viewTab[m_tabIndex].primaryView->isActive(); + ViewTab& hiddenTab = m_viewTab[m_tabIndex]; + hiddenTab.isPrimaryViewActive = hiddenTab.primaryView->isActive(); + hiddenTab.primaryView->setActive(false); + if (hiddenTab.secondaryView != 0) { + hiddenTab.secondaryView->setActive(false); + } QSplitter* splitter = m_viewTab[m_tabIndex].splitter; splitter->hide(); m_centralWidgetLayout->removeWidget(splitter); @@ -1081,7 +1090,7 @@ void DolphinMainWindow::setupActions() openInNewTab->setText(i18nc("@action:inmenu", "Open in New Tab")); openInNewTab->setIcon(KIcon("tab-new")); connect(openInNewTab, SIGNAL(triggered()), this, SLOT(openInNewTab())); - + KAction* openInNewWindow = actionCollection()->addAction("open_in_new_window"); openInNewWindow->setText(i18nc("@action:inmenu", "Open in New Window")); openInNewWindow->setIcon(KIcon("window-new")); @@ -1296,6 +1305,21 @@ bool DolphinMainWindow::isKompareInstalled() const return installed; } +void DolphinMainWindow::createSecondaryView(int tabIndex) +{ + QSplitter* splitter = m_viewTab[tabIndex].splitter; + const int newWidth = (m_viewTab[tabIndex].primaryView->width() - splitter->handleWidth()) / 2; + + const DolphinView* view = m_viewTab[tabIndex].primaryView->view(); + m_viewTab[tabIndex].secondaryView = new DolphinViewContainer(this, 0, view->rootUrl()); + splitter->addWidget(m_viewTab[tabIndex].secondaryView); + splitter->setSizes(QList() << newWidth << newWidth); + connectViewSignals(m_viewTab[tabIndex].secondaryView); + m_viewTab[tabIndex].secondaryView->view()->reload(); + m_viewTab[tabIndex].secondaryView->setActive(false); + m_viewTab[tabIndex].secondaryView->show(); +} + DolphinMainWindow::UndoUiInterface::UndoUiInterface() : KIO::FileUndoManager::UiInterface() {