From 84d1648fe407156e152640529ae32b168f7a3cad Mon Sep 17 00:00:00 2001 From: Le Tan Date: Tue, 12 Sep 2017 21:16:47 +0800 Subject: [PATCH] bug-fix: move cursor to the end after creating new note focusWidget() is NULL in Linux. --- src/vfilelist.cpp | 15 +++++++++------ src/vmdtab.h | 7 +++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/vfilelist.cpp b/src/vfilelist.cpp index a0d70acd..78ef715e 100644 --- a/src/vfilelist.cpp +++ b/src/vfilelist.cpp @@ -11,6 +11,7 @@ #include "vfile.h" #include "vconfigmanager.h" #include "vmdedit.h" +#include "vmdtab.h" extern VConfigManager *g_config; extern VNote *g_vnote; @@ -318,12 +319,14 @@ void VFileList::newFile() // Move cursor down if content has been inserted. if (contentInserted) { - QWidget *wid = QApplication::focusWidget(); - VMdEdit *edit = dynamic_cast(wid); - if (edit && edit->getFile() == file) { - QTextCursor cursor = edit->textCursor(); - cursor.movePosition(QTextCursor::End); - edit->setTextCursor(cursor); + const VMdTab *tab = dynamic_cast(editArea->currentEditTab()); + if (tab) { + VMdEdit *edit = dynamic_cast(tab->getEditor()); + if (edit && edit->getFile() == file) { + QTextCursor cursor = edit->textCursor(); + cursor.movePosition(QTextCursor::End); + edit->setTextCursor(cursor); + } } } } diff --git a/src/vmdtab.h b/src/vmdtab.h index c133bf14..ab7a5fd6 100644 --- a/src/vmdtab.h +++ b/src/vmdtab.h @@ -53,6 +53,8 @@ public: VWebView *getWebViewer() const; + VEdit *getEditor() const; + MarkdownConverterType getMarkdownConverterType() const; void requestUpdateVimStatus() Q_DECL_OVERRIDE; @@ -150,4 +152,9 @@ inline VEdit *VMdTab::getEditor() return m_editor; } +inline VEdit *VMdTab::getEditor() const +{ + return m_editor; +} + #endif // VMDTAB_H