Instead of hiding the action when the user lacks permission to create
the folder, it is now shown in a disabled state. The tooltip is also
updated to reflect the disabled state.
}
showMessage(i18nc("@info", "Authorization required to enter this folder."), KMessageWidget::Error, {m_authorizeToEnterFolderAction});
return;
}
showMessage(i18nc("@info", "Authorization required to enter this folder."), KMessageWidget::Error, {m_authorizeToEnterFolderAction});
return;
- } else if (kioErrorCode == KIO::ERR_DOES_NOT_EXIST && m_view->url().isLocalFile() && isFolderCreatable(m_view->url())) {
+ } else if (kioErrorCode == KIO::ERR_DOES_NOT_EXIST && m_view->url().isLocalFile()) {
if (!m_createFolderAction) {
m_createFolderAction = new QAction(this);
m_createFolderAction->setText(i18nc("@action", "Create missing folder"));
m_createFolderAction->setIcon(QIcon::fromTheme(QStringLiteral("folder-new")));
if (!m_createFolderAction) {
m_createFolderAction = new QAction(this);
m_createFolderAction->setText(i18nc("@action", "Create missing folder"));
m_createFolderAction->setIcon(QIcon::fromTheme(QStringLiteral("folder-new")));
- m_createFolderAction->setToolTip(i18nc("@info:tooltip", "Create the folder at this path and open it"));
connect(m_createFolderAction, &QAction::triggered, this, [this](bool) {
KIO::MkpathJob *job = KIO::mkpath(m_view->url());
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Mkpath, {}, m_view->url(), job);
connect(m_createFolderAction, &QAction::triggered, this, [this](bool) {
KIO::MkpathJob *job = KIO::mkpath(m_view->url());
KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Mkpath, {}, m_view->url(), job);
+ if (isTopMostParentFolderWritable(m_view->url())) {
+ m_createFolderAction->setEnabled(true);
+ m_createFolderAction->setToolTip(i18nc("@info:tooltip", "Create the folder at this path and open it"));
+ } else {
+ m_createFolderAction->setEnabled(false);
+ m_createFolderAction->setToolTip(i18nc("@info:tooltip", "You do not have permission to create the folder"));
+ }
showMessage(message, KMessageWidget::Error, {m_createFolderAction});
return;
}
showMessage(message, KMessageWidget::Error, {m_createFolderAction});
return;
}
* Check if a folder can be created at url.
* This method supports only local URLs.
*/
* Check if a folder can be created at url.
* This method supports only local URLs.
*/
- bool isFolderCreatable(QUrl url);
+ bool isTopMostParentFolderWritable(QUrl url);
protected:
bool eventFilter(QObject *object, QEvent *event) override;
protected:
bool eventFilter(QObject *object, QEvent *event) override;