summaryrefslogtreecommitdiff
path: root/src/assistant/help/qhelpcontentwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/assistant/help/qhelpcontentwidget.cpp')
-rw-r--r--src/assistant/help/qhelpcontentwidget.cpp45
1 files changed, 19 insertions, 26 deletions
diff --git a/src/assistant/help/qhelpcontentwidget.cpp b/src/assistant/help/qhelpcontentwidget.cpp
index c099d1765..412e14528 100644
--- a/src/assistant/help/qhelpcontentwidget.cpp
+++ b/src/assistant/help/qhelpcontentwidget.cpp
@@ -78,9 +78,6 @@ public:
void stopCollecting();
QHelpContentItem *rootItem();
-signals:
- void finishedSuccessFully();
-
private:
void run() override;
@@ -199,12 +196,10 @@ void QHelpContentProvider::collectContents(const QString &customFilterName)
m_mutex.lock();
m_filterAttributes = m_helpEngine->q->filterAttributes(customFilterName);
m_mutex.unlock();
- if (!isRunning()) {
- start(LowPriority);
- } else {
+
+ if (isRunning())
stopCollecting();
- start(LowPriority);
- }
+ start(LowPriority);
}
void QHelpContentProvider::stopCollecting()
@@ -336,7 +331,6 @@ CHECK_DEPTH:
m_rootItems.enqueue(rootItem);
m_abort = false;
m_mutex.unlock();
- emit finishedSuccessFully();
}
/*!
@@ -368,10 +362,8 @@ QHelpContentModel::QHelpContentModel(QHelpEnginePrivate *helpEngine)
d = new QHelpContentModelPrivate();
d->qhelpContentProvider = new QHelpContentProvider(helpEngine);
- connect(d->qhelpContentProvider, &QHelpContentProvider::finishedSuccessFully,
- this, &QHelpContentModel::insertContents, Qt::QueuedConnection);
- connect(helpEngine->q, &QHelpEngineCore::readersAboutToBeInvalidated,
- this, [this]() { invalidateContents(); });
+ connect(d->qhelpContentProvider, &QThread::finished,
+ this, &QHelpContentModel::insertContents);
}
/*!
@@ -385,19 +377,7 @@ QHelpContentModel::~QHelpContentModel()
void QHelpContentModel::invalidateContents(bool onShutDown)
{
- if (onShutDown) {
- disconnect(d->qhelpContentProvider, &QHelpContentProvider::finishedSuccessFully,
- this, &QHelpContentModel::insertContents);
- } else {
- beginResetModel();
- }
- d->qhelpContentProvider->stopCollecting();
- if (d->rootItem) {
- delete d->rootItem;
- d->rootItem = nullptr;
- }
- if (!onShutDown)
- endResetModel();
+ Q_UNUSED(onShutDown)
}
/*!
@@ -406,12 +386,25 @@ void QHelpContentModel::invalidateContents(bool onShutDown)
*/
void QHelpContentModel::createContents(const QString &customFilterName)
{
+ const bool running = d->qhelpContentProvider->isRunning();
d->qhelpContentProvider->collectContents(customFilterName);
+ if (running)
+ return;
+
+ if (d->rootItem) {
+ beginResetModel();
+ delete d->rootItem;
+ d->rootItem = nullptr;
+ endResetModel();
+ }
emit contentsCreationStarted();
}
void QHelpContentModel::insertContents()
{
+ if (d->qhelpContentProvider->isRunning())
+ return;
+
QHelpContentItem * const newRootItem = d->qhelpContentProvider->rootItem();
if (!newRootItem)
return;