diff --git a/src/vdirectorytree.cpp b/src/vdirectorytree.cpp index 58ac3b4e..0f127811 100644 --- a/src/vdirectorytree.cpp +++ b/src/vdirectorytree.cpp @@ -483,6 +483,17 @@ void VDirectoryTree::mousePressEvent(QMouseEvent *event) QTreeWidget::mousePressEvent(event); } +void VDirectoryTree::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Return) { + QTreeWidgetItem *item = currentItem(); + if (item) { + item->setExpanded(!item->isExpanded()); + } + } + QTreeWidget::keyPressEvent(event); +} + bool VDirectoryTree::copyDirectory(VDirectory *p_destDir, const QString &p_destName, VDirectory *p_srcDir, bool p_cut) { diff --git a/src/vdirectorytree.h b/src/vdirectorytree.h index d211ff36..42191b8c 100644 --- a/src/vdirectorytree.h +++ b/src/vdirectorytree.h @@ -38,6 +38,7 @@ private slots: protected: void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; private: void updateDirectoryTreeOne(QTreeWidgetItem *p_parent, int depth); diff --git a/src/vfilelist.cpp b/src/vfilelist.cpp index 0fc61c13..f8f8ffa3 100644 --- a/src/vfilelist.cpp +++ b/src/vfilelist.cpp @@ -20,6 +20,7 @@ void VFileList::setupUI() { fileList = new QListWidget(this); fileList->setContextMenuPolicy(Qt::CustomContextMenu); + fileList->setSelectionMode(QAbstractItemView::ExtendedSelection); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(fileList); @@ -27,7 +28,7 @@ void VFileList::setupUI() connect(fileList, &QListWidget::customContextMenuRequested, this, &VFileList::contextMenuRequested); - connect(fileList, &QListWidget::itemClicked, + connect(fileList, &QListWidget::itemActivated, this, &VFileList::handleItemClicked); setLayout(mainLayout); @@ -221,9 +222,11 @@ QVector VFileList::updateFileListAdded() // Delete the file related to current item void VFileList::deleteFile() { - QListWidgetItem *curItem = fileList->currentItem(); - Q_ASSERT(curItem); - deleteFile(getVFile(curItem)); + QList items = fileList->selectedItems(); + Q_ASSERT(!items.isEmpty()); + for (int i = 0; i < items.size(); ++i) { + deleteFile(getVFile(items.at(i))); + } } // @p_file may or may not be listed in VFileList @@ -274,7 +277,7 @@ void VFileList::contextMenuRequested(QPoint pos) menu.addAction(pasteAct); } - if (item) { + if (item && fileList->selectedItems().size() == 1) { menu.addSeparator(); menu.addAction(fileInfoAct); }