diff options
author | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-08-01 14:35:43 +0200 |
---|---|---|
committer | MikoĊaj Boc <Mikolaj.Boc@qt.io> | 2022-08-19 07:07:49 +0000 |
commit | 86bb62f2e7a0a0d1f4a3824f75826c0114526bf6 (patch) | |
tree | e12e87b8b25e2e2d30f157172242fef83ad49183 /src/widgets/dialogs/qfiledialog.cpp | |
parent | 0131dbd2f95449c09758208d8b190c9238a5c46a (diff) |
Use popup() instead of exec() for file dialog's context menu
There are seemingly no differences in how the menu operates and this
fixes WASM without asyncify hanging on menu open attempts.
Fixes: QTBUG-104963
Change-Id: If4364f08acb75947e03ecced85d77af9af0498ba
Pick-to: 6.4
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 58e01c0baf..be08271f9a 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -3486,23 +3486,26 @@ void QFileDialogPrivate::_q_showContextMenu(const QPoint &position) QModelIndex index = view->indexAt(position); index = mapToSource(index.sibling(index.row(), 0)); - QMenu menu(view); + QMenu *menu = new QMenu(view); + menu->setAttribute(Qt::WA_DeleteOnClose); + if (index.isValid()) { // file context menu const bool ro = model && model->isReadOnly(); QFile::Permissions p(index.parent().data(QFileSystemModel::FilePermissions).toInt()); renameAction->setEnabled(!ro && p & QFile::WriteUser); - menu.addAction(renameAction); + menu->addAction(renameAction); deleteAction->setEnabled(!ro && p & QFile::WriteUser); - menu.addAction(deleteAction); - menu.addSeparator(); + menu->addAction(deleteAction); + menu->addSeparator(); } - menu.addAction(showHiddenAction); + menu->addAction(showHiddenAction); if (qFileDialogUi->newFolderButton->isVisible()) { newFolderAction->setEnabled(qFileDialogUi->newFolderButton->isEnabled()); - menu.addAction(newFolderAction); + menu->addAction(newFolderAction); } - menu.exec(view->viewport()->mapToGlobal(position)); + menu->popup(view->viewport()->mapToGlobal(position)); + #endif // QT_CONFIG(menu) } |