From fb15ed871b983aeb295c00dd7092c1345be9389d Mon Sep 17 00:00:00 2001 From: Le Tan Date: Fri, 16 Apr 2021 20:26:57 +0800 Subject: [PATCH] fix crash issues --- src/widgets/dialogs/importfolderdialog.cpp | 9 ++++++++ src/widgets/dialogs/managenotebooksdialog.cpp | 22 +++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/widgets/dialogs/importfolderdialog.cpp b/src/widgets/dialogs/importfolderdialog.cpp index f9c9ff09..d9c1535d 100644 --- a/src/widgets/dialogs/importfolderdialog.cpp +++ b/src/widgets/dialogs/importfolderdialog.cpp @@ -84,6 +84,15 @@ bool ImportFolderDialog::importFolder() { const auto folder = m_filterWidget->getFolderPath(); auto nb = m_parentNode->getNotebook(); + if (PathUtils::pathContains(folder, m_parentNode->fetchAbsolutePath())) + { + // Avoid recursive import. + auto msg = tr("Failed to add folder (%1) as node under (%2).").arg(folder, m_parentNode->fetchAbsolutePath()); + qCritical() << msg; + setInformationText(msg, ScrollDialog::InformationLevel::Error); + return false; + } + m_newNode = nullptr; try { m_newNode = nb->copyAsNode(m_parentNode, Node::Flag::Container, folder); diff --git a/src/widgets/dialogs/managenotebooksdialog.cpp b/src/widgets/dialogs/managenotebooksdialog.cpp index 2a8b3d2b..0e8b6ecf 100644 --- a/src/widgets/dialogs/managenotebooksdialog.cpp +++ b/src/widgets/dialogs/managenotebooksdialog.cpp @@ -163,8 +163,12 @@ void ManageNotebooksDialog::loadNotebooks(const Notebook *p_notebook) } } - if (!hasCurrentItem && !notebooks.isEmpty()) { - m_notebookList->setCurrentRow(0); + if (!hasCurrentItem) { + if (notebooks.isEmpty()) { + selectNotebook(nullptr); + } else { + m_notebookList->setCurrentRow(0); + } } } @@ -173,6 +177,10 @@ void ManageNotebooksDialog::selectNotebook(Notebook *p_notebook) m_notebookInfoWidget->setNotebook(p_notebook); setChangesUnsaved(false); + // Update buttons. + m_closeNotebookBtn->setEnabled(p_notebook); + m_deleteNotebookBtn->setEnabled(p_notebook); + WidgetUtils::resizeToHideScrollBarLater(m_infoScrollArea, false, true); } @@ -217,7 +225,10 @@ bool ManageNotebooksDialog::saveChangesToNotebook() void ManageNotebooksDialog::closeNotebook(const Notebook *p_notebook) { - Q_ASSERT(p_notebook); + if (!p_notebook) { + return; + } + int ret = MessageBoxHelper::questionOkCancel(MessageBoxHelper::Question, tr("Close notebook (%1)?") .arg(p_notebook->getName()), @@ -244,7 +255,10 @@ void ManageNotebooksDialog::closeNotebook(const Notebook *p_notebook) void ManageNotebooksDialog::removeNotebook(const Notebook *p_notebook) { - Q_ASSERT(p_notebook); + if (!p_notebook) { + return; + } + int ret = MessageBoxHelper::questionOkCancel(MessageBoxHelper::Warning, tr("Delete notebook (%1) from disk?").arg(p_notebook->getName()), tr("CALM DOWN! CALM DOWN! CALM DOWN! It will delete all files belonging to this notebook from disk. "