]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinnavigatorswidgetaction.cpp
GIT_SILENT Update Appstream for new release
[dolphin.git] / src / dolphinnavigatorswidgetaction.cpp
index e42e9c3eedb37997efba06d1364e7d9e74086063..bdd5cd9a7b54fb5beb2d59b4a9f7dc6dced76f15 100644 (file)
@@ -21,7 +21,6 @@
 #include <QDomDocument>
 #include <QHBoxLayout>
 #include <QPushButton>
-#include <QSplitter>
 #include <QToolBar>
 
 #include <limits>
@@ -47,6 +46,7 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) :
 
 void DolphinNavigatorsWidgetAction::adjustSpacing()
 {
+    m_previousWindowWidth = parentWidget()->window()->width();
     auto viewGeometries = m_viewGeometriesHelper.viewGeometries();
     const int widthOfSplitterPrimary = viewGeometries.globalXOfPrimary + viewGeometries.widthOfPrimary - viewGeometries.globalXOfNavigatorsWidget;
     const QList<int> splitterSizes = {widthOfSplitterPrimary,
@@ -233,6 +233,8 @@ QPushButton *DolphinNavigatorsWidgetAction::newEmptyTrashButton(const DolphinUrl
 {
     auto emptyTrashButton = new QPushButton(QIcon::fromTheme(QStringLiteral("user-trash")),
                                         i18nc("@action:button", "Empty Trash"), parent);
+    emptyTrashButton->setToolTip(i18n("Empties Trash to create free space"));
+
     emptyTrashButton->setFlat(true);
     connect(emptyTrashButton, &QPushButton::clicked,
             this, [parent]() { Trash::empty(parent); });
@@ -260,9 +262,9 @@ QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const Dolphin
     auto networkFolderButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-add")),
                                         i18nc("@action:button", "Add Network Folder"), parent);
     networkFolderButton->setFlat(true);
+    KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
     connect(networkFolderButton, &QPushButton::clicked,
-            this, [networkFolderButton]() {
-                KService::Ptr service = KService::serviceByDesktopName(QStringLiteral("org.kde.knetattach"));
+            this, [networkFolderButton, service]() {
                 auto *job = new KIO::ApplicationLauncherJob(service, networkFolderButton);
                 auto *delegate = new KNotificationJobUiDelegate;
                 delegate->setAutoErrorHandlingEnabled(true);
@@ -270,8 +272,8 @@ QPushButton *DolphinNavigatorsWidgetAction::newNetworkFolderButton(const Dolphin
                 job->start();
             });
     networkFolderButton->hide();
-    connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator]() {
-        networkFolderButton->setVisible(urlNavigator->locationUrl().scheme() == QLatin1String("remote"));
+    connect(urlNavigator, &KUrlNavigator::urlChanged, this, [networkFolderButton, urlNavigator, service]() {
+        networkFolderButton->setVisible(service && urlNavigator->locationUrl().scheme() == QLatin1String("remote"));
     });
     return networkFolderButton;
 }
@@ -308,7 +310,17 @@ DolphinNavigatorsWidgetAction::ViewGeometriesHelper::ViewGeometriesHelper
 bool DolphinNavigatorsWidgetAction::ViewGeometriesHelper::eventFilter(QObject *watched, QEvent *event)
 {
     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 QObject::eventFilter(watched, event);