diff --git a/src/document/katedocument.cpp b/src/document/katedocument.cpp --- a/src/document/katedocument.cpp +++ b/src/document/katedocument.cpp @@ -6040,22 +6040,22 @@ message->addAction(closeAction); } - // make sure the message is registered even if no actions and no views exist - m_messageHash[message] = QList>(); - // reparent actions, as we want full control over when they are deleted + QList> managedMessageActions; const auto messageActions = message->actions(); + managedMessageActions.reserve(messageActions.size()); for (QAction *action : messageActions) { action->setParent(nullptr); - m_messageHash[message].append(QSharedPointer(action)); + managedMessageActions.append(QSharedPointer(action)); } + m_messageHash.insert(message, managedMessageActions); // post message to requested view, or to all views if (KTextEditor::ViewPrivate *view = qobject_cast(message->view())) { - view->postMessage(message, m_messageHash[message]); + view->postMessage(message, managedMessageActions); } else { for (auto view : qAsConst(m_views)) { - view->postMessage(message, m_messageHash[message]); + view->postMessage(message, managedMessageActions); } }