diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-08-08 12:42:06 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-26 04:03:41 +0200 |
commit | 0842d32441a585026336d616b051915865d51d6a (patch) | |
tree | 3b1e13fec574a356e1d6f3f190c0b2bff64a17b9 /src/widgets/dialogs | |
parent | 6b6fefad48abed28df69d0fa830accbb0c8dcb4d (diff) |
QFileSystemModel: fix permission mangling
The old code masked out write flags before returning permissions
from permissions() or data(FilePermissions) in order to force
QFileDialog to disable the rename and delete actions. This was to
fix Task 143519, but introduced QTBUG-20503.
Instead, revert to the pre-143519-bugfix code and do the necessary
check in QFileDialog directly.
Also add a testcase for 143519.
Reported-by: Gilles Pascual
Task-number: QTBUG-20503
Task-number: 143519
Change-Id: I140109341c0ed40722e3aac4327c2a740fb014c2
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 5 | ||||
-rw-r--r-- | src/widgets/dialogs/qfilesystemmodel.cpp | 7 |
2 files changed, 4 insertions, 8 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 883c13e118..d9d318765d 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -2701,10 +2701,11 @@ void QFileDialogPrivate::_q_showContextMenu(const QPoint &position) QMenu menu(view); if (index.isValid()) { // file context menu + const bool ro = model && model->isReadOnly(); QFile::Permissions p(index.parent().data(QFileSystemModel::FilePermissions).toInt()); - renameAction->setEnabled(p & QFile::WriteUser); + renameAction->setEnabled(!ro && p & QFile::WriteUser); menu.addAction(renameAction); - deleteAction->setEnabled(p & QFile::WriteUser); + deleteAction->setEnabled(!ro && p & QFile::WriteUser); menu.addAction(deleteAction); menu.addSeparator(); } diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index fd091879a9..49b59b6f18 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -1364,12 +1364,7 @@ QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &na QFile::Permissions QFileSystemModel::permissions(const QModelIndex &index) const { Q_D(const QFileSystemModel); - QFile::Permissions p = d->node(index)->permissions(); - if (d->readOnly) { - p ^= (QFile::WriteOwner | QFile::WriteUser - | QFile::WriteGroup | QFile::WriteOther); - } - return p; + return d->node(index)->permissions(); } /*! |