Mercurial > octave
changeset 28130:712cd23aaa4f
Delete multiple files in GUI without multiple dialog boxes (bug #57874).
* files-dock-widget.cc (contextmenu_delete): Count number of files selected.
If multiple files are selected, then use a dialog box just once for the first
iteration over the selected files to determine whether to delete them all.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 21 Feb 2020 12:40:53 -0800 |
parents | c1ca9b6903cd |
children | 4cfe24f56336 |
files | libgui/src/files-dock-widget.cc |
diffstat | 1 files changed, 26 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc Fri Feb 21 17:17:29 2020 -0500 +++ b/libgui/src/files-dock-widget.cc Fri Feb 21 12:40:53 2020 -0800 @@ -720,17 +720,38 @@ QItemSelectionModel *m = m_file_tree_view->selectionModel (); QModelIndexList rows = m->selectedRows (); + int file_cnt = rows.size (); + bool multiple_files = (file_cnt > 1); + for (auto it = rows.begin (); it != rows.end (); it++) { QModelIndex index = *it; QFileInfo info = m_file_system_model->fileInfo (index); - if (QMessageBox::question (this, tr ("Delete file/directory"), - tr ("Are you sure you want to delete\n") - + info.filePath (), - QMessageBox::Yes | QMessageBox::No) - == QMessageBox::Yes) + QMessageBox::StandardButton dlg_answer; + if (multiple_files) + if (it == rows.begin ()) + { + dlg_answer = QMessageBox::question (this, + tr ("Delete file/directory"), + tr ("Are you sure you want to delete all %1 selected files?\n").arg (file_cnt), + QMessageBox::Yes | QMessageBox::No); + if (dlg_answer != QMessageBox::Yes) + return; + } + else + dlg_answer = QMessageBox::Yes; + else + { + dlg_answer = QMessageBox::question (this, + tr ("Delete file/directory"), + tr ("Are you sure you want to delete\n") + + info.filePath (), + QMessageBox::Yes | QMessageBox::No); + } + + if (dlg_answer) { if (info.isDir ()) {