When Dolphin is started with a directory as argument unnecessary reload operations of KDirListers are done. The patch improves this by just letting the DolphinView internally do a loading as soon as it gets visible (and without reloading). Also in case if only one directory is passed as argument the current tab gets reused instead of creating new tabs and removing the current tab.
Thanks a lot to David Faure for pointing out this unefficient handling.
+ if (dirs.count() == 1) {
+ m_activeViewContainer->setUrl(dirs.first());
+ return;
+ }
+
const int oldOpenTabsCount = m_viewTab.count();
const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings();
const int oldOpenTabsCount = m_viewTab.count();
const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings();
viewTab.primaryView = new DolphinViewContainer(url, viewTab.splitter);
viewTab.primaryView->setActive(false);
connectViewSignals(viewTab.primaryView);
viewTab.primaryView = new DolphinViewContainer(url, viewTab.splitter);
viewTab.primaryView->setActive(false);
connectViewSignals(viewTab.primaryView);
- viewTab.primaryView->view()->reload();
m_viewTab.append(viewTab);
m_viewTab.append(viewTab);
m_activeViewContainer = m_viewTab[m_tabIndex].primaryView;
connectViewSignals(m_activeViewContainer);
DolphinView* view = m_activeViewContainer->view();
m_activeViewContainer = m_viewTab[m_tabIndex].primaryView;
connectViewSignals(m_activeViewContainer);
DolphinView* view = m_activeViewContainer->view();
m_activeViewContainer->show();
m_actionHandler->setCurrentView(view);
m_activeViewContainer->show();
m_actionHandler->setCurrentView(view);
splitter->addWidget(m_viewTab[tabIndex].secondaryView);
splitter->setSizes(QList<int>() << newWidth << newWidth);
connectViewSignals(m_viewTab[tabIndex].secondaryView);
splitter->addWidget(m_viewTab[tabIndex].secondaryView);
splitter->setSizes(QList<int>() << newWidth << newWidth);
connectViewSignals(m_viewTab[tabIndex].secondaryView);
- m_viewTab[tabIndex].secondaryView->view()->reload();
m_viewTab[tabIndex].secondaryView->setActive(false);
m_viewTab[tabIndex].secondaryView->show();
}
m_viewTab[tabIndex].secondaryView->setActive(false);
m_viewTab[tabIndex].secondaryView->show();
}
return QWidget::eventFilter(watched, event);
}
return QWidget::eventFilter(watched, event);
}
+void DolphinView::showEvent(QShowEvent* event)
+{
+ QWidget::showEvent(event);
+ if (!event->spontaneous()) {
+ loadDirectory(url());
+ }
+}
+
void DolphinView::activate()
{
setActive(true);
void DolphinView::activate()
{
setActive(true);
/** @see QWidget::mouseReleaseEvent */
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual bool eventFilter(QObject* watched, QEvent* event);
/** @see QWidget::mouseReleaseEvent */
virtual void mouseReleaseEvent(QMouseEvent* event);
virtual bool eventFilter(QObject* watched, QEvent* event);
+ virtual void showEvent(QShowEvent* event);