bug-fix: do not change mode when clicking an item in VFileList to open an already opened note

This commit is contained in:
Le Tan 2017-10-09 19:38:35 +08:00
parent 11537972f3
commit cff6a1e49a
4 changed files with 20 additions and 10 deletions

View File

@ -119,9 +119,7 @@ void VEditArea::removeSplitWindow(VEditWindow *win)
win->deleteLater();
}
// A given file can be opened in multiple split windows. A given file could be
// opened at most in one tab inside a window.
void VEditArea::openFile(VFile *p_file, OpenFileMode p_mode)
void VEditArea::openFile(VFile *p_file, OpenFileMode p_mode, bool p_forceMode)
{
if (!p_file) {
return;
@ -169,7 +167,7 @@ void VEditArea::openFile(VFile *p_file, OpenFileMode p_mode)
out:
setCurrentTab(winIdx, tabIdx, setFocus);
if (existFile) {
if (existFile && p_forceMode) {
if (p_mode == OpenFileMode::Read) {
readFile();
} else if (p_mode == OpenFileMode::Edit) {

View File

@ -79,7 +79,13 @@ protected:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
public slots:
void openFile(VFile *p_file, OpenFileMode p_mode);
// Open @p_file in mode @p_mode.
// If @p_file has already been opened, change its mode to @p_mode only if
// @p_forceMode is true.
// A given file can be opened in multiple split windows. A given file could be
// opened at most in one tab inside a window.
void openFile(VFile *p_file, OpenFileMode p_mode, bool p_forceMode = false);
void editFile();
void saveFile();
void readFile();

View File

@ -103,7 +103,7 @@ void VFileList::initActions()
this, [this]() {
QListWidgetItem *item = fileList->currentItem();
if (item) {
emit fileClicked(getVFile(item), OpenFileMode::Read);
emit fileClicked(getVFile(item), OpenFileMode::Read, true);
}
});
@ -114,7 +114,7 @@ void VFileList::initActions()
this, [this]() {
QListWidgetItem *item = fileList->currentItem();
if (item) {
emit fileClicked(getVFile(item), OpenFileMode::Edit);
emit fileClicked(getVFile(item), OpenFileMode::Edit, true);
}
});
@ -368,7 +368,7 @@ void VFileList::newFile()
fileList->update();
// Open it in edit mode
emit fileCreated(file, OpenFileMode::Edit);
emit fileCreated(file, OpenFileMode::Edit, true);
// Move cursor down if content has been inserted.
if (contentInserted) {

View File

@ -60,8 +60,14 @@ public slots:
void newFile();
signals:
void fileClicked(VNoteFile *p_file, OpenFileMode mode = OpenFileMode::Read);
void fileCreated(VNoteFile *p_file, OpenFileMode mode = OpenFileMode::Read);
void fileClicked(VNoteFile *p_file,
OpenFileMode p_mode = OpenFileMode::Read,
bool p_forceMode = false);
void fileCreated(VNoteFile *p_file,
OpenFileMode p_mode = OpenFileMode::Read,
bool p_forceMode = false);
void fileUpdated(const VNoteFile *p_file);
private slots: