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

View File

@ -79,7 +79,13 @@ protected:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
public slots: 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 editFile();
void saveFile(); void saveFile();
void readFile(); void readFile();

View File

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

View File

@ -60,8 +60,14 @@ public slots:
void newFile(); void newFile();
signals: signals:
void fileClicked(VNoteFile *p_file, OpenFileMode mode = OpenFileMode::Read); void fileClicked(VNoteFile *p_file,
void fileCreated(VNoteFile *p_file, OpenFileMode mode = OpenFileMode::Read); 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); void fileUpdated(const VNoteFile *p_file);
private slots: private slots: