浏览代码

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 <[email protected]>
Le Tan 9 年之前
父节点
当前提交
b55ebe8f91
共有 3 个文件被更改,包括 8 次插入8 次删除
  1. 5 5
      vfilelist.cpp
  2. 2 2
      vfilelist.h
  3. 1 1
      vmainwindow.cpp

+ 5 - 5
vfilelist.cpp

@@ -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);
 }

+ 2 - 2
vfilelist.h

@@ -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);

+ 1 - 1
vmainwindow.cpp

@@ -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);