#include <QDomDocument>
#include <QHBoxLayout>
#include <QPushButton>
-#include <QSplitter>
#include <QToolBar>
#include <limits>
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,
{
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); });
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);
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;
}
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);