fix: crash when close editor that have issues
This commit is contained in:
parent
411c740d24
commit
aadc8fd0f2
|
@ -194,14 +194,6 @@ Editor::Editor(QWidget *parent, const QString& filename,
|
|||
|
||||
Editor::~Editor() {
|
||||
//qDebug()<<"editor "<<mFilename<<" deleted";
|
||||
if (mParentPageControl) {
|
||||
pMainWindow->fileSystemWatcher()->removePath(mFilename);
|
||||
pMainWindow->caretList().removeEditor(this);
|
||||
pMainWindow->updateCaretActions();
|
||||
int index = mParentPageControl->indexOf(this);
|
||||
mParentPageControl->removeTab(index);
|
||||
this->setParent(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void Editor::loadFile(QString filename) {
|
||||
|
@ -4359,7 +4351,6 @@ void Editor::checkSyntaxInBack()
|
|||
return;
|
||||
if (highlighter()->language()!=QSynedit::HighlighterLanguage::Cpp)
|
||||
return;
|
||||
if(pSettings->editor().syntaxCheck())
|
||||
pMainWindow->checkSyntaxInBack(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -113,6 +113,18 @@ void EditorList::showLayout(LayoutShowType layout)
|
|||
}
|
||||
}
|
||||
|
||||
void EditorList::doRemoveEditor(Editor *e)
|
||||
{
|
||||
QTabWidget* parentPage=e->pageControl();
|
||||
int index = parentPage->indexOf(e);
|
||||
parentPage->removeTab(index);
|
||||
pMainWindow->fileSystemWatcher()->removePath(e->filename());
|
||||
pMainWindow->caretList().removeEditor(e);
|
||||
pMainWindow->updateCaretActions();
|
||||
e->setParent(nullptr);
|
||||
delete e;
|
||||
}
|
||||
|
||||
void EditorList::onEditorRenamed(const QString &oldFilename, const QString &newFilename, bool firstSave)
|
||||
{
|
||||
emit editorRenamed(oldFilename, newFilename, firstSave);
|
||||
|
@ -178,7 +190,7 @@ bool EditorList::closeEditor(Editor* editor, bool transferFocus, bool force) {
|
|||
if (pMainWindow->visitHistoryManager()->addFile(editor->filename())) {
|
||||
pMainWindow->rebuildOpenedFileHisotryMenu();
|
||||
}
|
||||
delete editor;
|
||||
doRemoveEditor(editor);
|
||||
}
|
||||
updateLayout();
|
||||
if (!force && transferFocus) {
|
||||
|
@ -370,6 +382,7 @@ bool EditorList::closeAll(bool force) {
|
|||
void EditorList::forceCloseEditor(Editor *editor)
|
||||
{
|
||||
beginUpdate();
|
||||
doRemoveEditor(editor);
|
||||
delete editor;
|
||||
// Force layout update when creating, destroying or moving editors
|
||||
updateLayout();
|
||||
|
@ -385,6 +398,8 @@ Editor* EditorList::getOpenedEditorByFilename(QString filename)
|
|||
QString fullname = fileInfo.absoluteFilePath();
|
||||
for (int i=0;i<mLeftPageWidget->count();i++) {
|
||||
Editor* e = static_cast<Editor*>(mLeftPageWidget->widget(i));
|
||||
if (!e)
|
||||
continue;
|
||||
if (e->filename().compare(filename, PATH_SENSITIVITY)==0 ||
|
||||
e->filename().compare(fullname, PATH_SENSITIVITY)==0) {
|
||||
return e;
|
||||
|
@ -392,6 +407,8 @@ Editor* EditorList::getOpenedEditorByFilename(QString filename)
|
|||
}
|
||||
for (int i=0;i<mRightPageWidget->count();i++) {
|
||||
Editor* e = static_cast<Editor*>(mRightPageWidget->widget(i));
|
||||
if (!e)
|
||||
continue;
|
||||
if (e->filename().compare(filename)==0 || e->filename().compare(fullname)==0) {
|
||||
return e;
|
||||
}
|
||||
|
|
|
@ -89,6 +89,7 @@ private:
|
|||
QTabWidget* getNewEditorPageControl() const;
|
||||
QTabWidget* getFocusedPageControl() const;
|
||||
void showLayout(LayoutShowType layout);
|
||||
void doRemoveEditor(Editor* e);
|
||||
private slots:
|
||||
void onEditorRenamed(const QString& oldFilename, const QString& newFilename, bool firstSave);
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue