use itemClicked signal instead of currentItemChanged to trigger opening a file

This will handle the corner case: when user open file "f" and close it,
this file is still current item, so if user want to re-open it by
clicking on it, it won't work.

Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
Le Tan 2016-10-07 11:07:43 +08:00
parent 3f8c87a325
commit b55ebe8f91
3 changed files with 8 additions and 8 deletions

View File

@ -12,8 +12,8 @@ VFileList::VFileList(QWidget *parent)
connect(this, &VFileList::customContextMenuRequested,
this, &VFileList::contextMenuRequested);
connect(this, &VFileList::currentItemChanged,
this, &VFileList::currentFileItemChanged);
connect(this, &VFileList::itemClicked,
this, &VFileList::handleItemClicked);
}
void VFileList::initActions()
@ -260,15 +260,15 @@ void VFileList::deleteFileAndUpdateList(QListWidgetItem *item)
removeFileListItem(item);
}
void VFileList::currentFileItemChanged(QListWidgetItem *currentItem)
void VFileList::handleItemClicked(QListWidgetItem *currentItem)
{
if (!currentItem) {
emit currentFileChanged(QJsonObject());
emit fileClicked(QJsonObject());
return;
}
QJsonObject itemJson = currentItem->data(Qt::UserRole).toJsonObject();
Q_ASSERT(!itemJson.isEmpty());
itemJson["path"] = QDir::cleanPath(QDir(rootPath).filePath(relativePath));
qDebug() << "click file:" << itemJson;
emit currentFileChanged(itemJson);
emit fileClicked(itemJson);
}

View File

@ -13,13 +13,13 @@ public:
explicit VFileList(QWidget *parent = 0);
signals:
void currentFileChanged(QJsonObject fileJson);
void fileClicked(QJsonObject fileJson);
private slots:
void newFile();
void deleteFile();
void contextMenuRequested(QPoint pos);
void currentFileItemChanged(QListWidgetItem *currentItem);
void handleItemClicked(QListWidgetItem *currentItem);
public slots:
void setDirectory(QJsonObject dirJson);

View File

@ -67,7 +67,7 @@ void VMainWindow::setupUI()
SLOT(setTreePath(const QString&)));
connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
fileList, &VFileList::setDirectory);
connect(fileList, &VFileList::currentFileChanged,
connect(fileList, &VFileList::fileClicked,
tabs, &VTabWidget::openFile);
setCentralWidget(mainSplitter);