mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Merge branch 'release/21.08'
This commit is contained in:
commit
d472cb2a25
|
@ -237,20 +237,6 @@ QVector<DolphinViewContainer*> DolphinMainWindow::viewContainers() const
|
||||||
return viewContainers;
|
return viewContainers;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinMainWindow::setViewsWithInvalidPathsToHome()
|
|
||||||
{
|
|
||||||
const QVector<DolphinViewContainer*> theViewContainers = viewContainers();
|
|
||||||
for (DolphinViewContainer *viewContainer : theViewContainers) {
|
|
||||||
|
|
||||||
// Only consider local dirs, not remote locations and abstract protocols
|
|
||||||
if (viewContainer->url().isLocalFile()) {
|
|
||||||
if (!QFileInfo::exists(viewContainer->url().toLocalFile())) {
|
|
||||||
viewContainer->setUrl(QUrl::fromLocalFile(QDir::homePath()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DolphinMainWindow::openDirectories(const QList<QUrl>& dirs, bool splitView)
|
void DolphinMainWindow::openDirectories(const QList<QUrl>& dirs, bool splitView)
|
||||||
{
|
{
|
||||||
m_tabWidget->openDirectories(dirs, splitView);
|
m_tabWidget->openDirectories(dirs, splitView);
|
||||||
|
|
|
@ -105,12 +105,6 @@ public:
|
||||||
*/
|
*/
|
||||||
void setViewsToHomeIfMountPathOpen(const QString& mountPath);
|
void setViewsToHomeIfMountPathOpen(const QString& mountPath);
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets any of the window's view containers which are currently displaying
|
|
||||||
* invalid locations to the home path
|
|
||||||
*/
|
|
||||||
void setViewsWithInvalidPathsToHome();
|
|
||||||
|
|
||||||
bool isFoldersPanelEnabled() const;
|
bool isFoldersPanelEnabled() const;
|
||||||
bool isInformationPanelEnabled() const;
|
bool isInformationPanelEnabled() const;
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) :
|
||||||
|
|
||||||
void DolphinNavigatorsWidgetAction::adjustSpacing()
|
void DolphinNavigatorsWidgetAction::adjustSpacing()
|
||||||
{
|
{
|
||||||
|
m_previousWindowWidth = parentWidget()->window()->width();
|
||||||
auto viewGeometries = m_viewGeometriesHelper.viewGeometries();
|
auto viewGeometries = m_viewGeometriesHelper.viewGeometries();
|
||||||
const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget;
|
const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget;
|
||||||
const QList<int> splitterSizes = {widthOfSplitterPrimary,
|
const QList<int> splitterSizes = {widthOfSplitterPrimary,
|
||||||
|
@ -310,7 +311,17 @@ DolphinNavigatorsWidgetAction::ViewGeometriesHelper::ViewGeometriesHelper
|
||||||
bool DolphinNavigatorsWidgetAction::ViewGeometriesHelper::eventFilter(QObject *watched, QEvent *event)
|
bool DolphinNavigatorsWidgetAction::ViewGeometriesHelper::eventFilter(QObject *watched, QEvent *event)
|
||||||
{
|
{
|
||||||
if (event->type() == QEvent::Resize) {
|
if (event->type() == QEvent::Resize) {
|
||||||
m_navigatorsWidgetAction->adjustSpacing();
|
if (m_navigatorsWidgetAction->parentWidget()->window()->width() != m_navigatorsWidgetAction->m_previousWindowWidth) {
|
||||||
|
// The window is being resized which means not all widgets have gotten their new sizes yet.
|
||||||
|
// Let's wait a bit so the sizes of the navigatorsWidget and the viewContainers have all
|
||||||
|
// had a chance to be updated.
|
||||||
|
m_navigatorsWidgetAction->m_adjustSpacingTimer->start();
|
||||||
|
} else {
|
||||||
|
m_navigatorsWidgetAction->adjustSpacing();
|
||||||
|
// We could always use the m_adjustSpacingTimer instead of calling adjustSpacing() directly
|
||||||
|
// here but then the navigatorsWidget doesn't fluently align with the viewContainers when
|
||||||
|
// the DolphinTabPage::m_expandViewAnimation is animating.
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return QObject::eventFilter(watched, event);
|
return QObject::eventFilter(watched, event);
|
||||||
|
|
|
@ -216,6 +216,12 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewGeometriesHelper m_viewGeometriesHelper;
|
ViewGeometriesHelper m_viewGeometriesHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to check if the window has been resized.
|
||||||
|
* @see ViewGeometriesHelper::eventFilter() for why this is needed.
|
||||||
|
*/
|
||||||
|
int m_previousWindowWidth = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DOLPHINNAVIGATORSWIDGETACTION_H
|
#endif // DOLPHINNAVIGATORSWIDGETACTION_H
|
||||||
|
|
10
src/main.cpp
10
src/main.cpp
|
@ -210,12 +210,12 @@ int main(int argc, char **argv)
|
||||||
// If the user passed any URLs to Dolphin, open those in the
|
// If the user passed any URLs to Dolphin, open those in the
|
||||||
// window after session-restoring it
|
// window after session-restoring it
|
||||||
if (startedWithURLs) {
|
if (startedWithURLs) {
|
||||||
mainWindow->openDirectories(urls, splitView);
|
if (openFiles) {
|
||||||
|
mainWindow->openFiles(urls, splitView);
|
||||||
|
} else {
|
||||||
|
mainWindow->openDirectories(urls, splitView);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now handle invalid locations in the set of active views to
|
|
||||||
// avoid issues like https://bugs.kde.org/show_bug.cgi?id=427619
|
|
||||||
mainWindow->setViewsWithInvalidPathsToHome();
|
|
||||||
} else {
|
} else {
|
||||||
qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!";
|
qCWarning(DolphinDebug) << "Unknown class " << className << " in session saved data!";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue