Changeset View
Changeset View
Standalone View
Standalone View
src/document/katedocument.cpp
Show First 20 Lines • Show All 6034 Lines • ▼ Show 20 Line(s) | 6021 | { | |||
---|---|---|---|---|---|
6035 | 6035 | | |||
6036 | // if there are no actions, add a close action by default if widget does not auto-hide | 6036 | // if there are no actions, add a close action by default if widget does not auto-hide | ||
6037 | if (message->actions().count() == 0 && message->autoHide() < 0) { | 6037 | if (message->actions().count() == 0 && message->autoHide() < 0) { | ||
6038 | QAction *closeAction = new QAction(QIcon::fromTheme(QStringLiteral("window-close")), i18n("&Close"), nullptr); | 6038 | QAction *closeAction = new QAction(QIcon::fromTheme(QStringLiteral("window-close")), i18n("&Close"), nullptr); | ||
6039 | closeAction->setToolTip(i18n("Close message")); | 6039 | closeAction->setToolTip(i18n("Close message")); | ||
6040 | message->addAction(closeAction); | 6040 | message->addAction(closeAction); | ||
6041 | } | 6041 | } | ||
6042 | 6042 | | |||
6043 | // make sure the message is registered even if no actions and no views exist | | |||
6044 | m_messageHash[message] = QList<QSharedPointer<QAction>>(); | | |||
6045 | | ||||
6046 | // reparent actions, as we want full control over when they are deleted | 6043 | // reparent actions, as we want full control over when they are deleted | ||
6044 | QList<QSharedPointer<QAction>> managedMessageActions; | ||||
6047 | const auto messageActions = message->actions(); | 6045 | const auto messageActions = message->actions(); | ||
6046 | managedMessageActions.reserve(messageActions.size()); | ||||
6048 | for (QAction *action : messageActions) { | 6047 | for (QAction *action : messageActions) { | ||
6049 | action->setParent(nullptr); | 6048 | action->setParent(nullptr); | ||
6050 | m_messageHash[message].append(QSharedPointer<QAction>(action)); | 6049 | managedMessageActions.append(QSharedPointer<QAction>(action)); | ||
6051 | } | 6050 | } | ||
6051 | m_messageHash.insert(message, managedMessageActions); | ||||
6052 | 6052 | | |||
6053 | // post message to requested view, or to all views | 6053 | // post message to requested view, or to all views | ||
6054 | if (KTextEditor::ViewPrivate *view = qobject_cast<KTextEditor::ViewPrivate *>(message->view())) { | 6054 | if (KTextEditor::ViewPrivate *view = qobject_cast<KTextEditor::ViewPrivate *>(message->view())) { | ||
6055 | view->postMessage(message, m_messageHash[message]); | 6055 | view->postMessage(message, managedMessageActions); | ||
6056 | } else { | 6056 | } else { | ||
6057 | for (auto view : qAsConst(m_views)) { | 6057 | for (auto view : qAsConst(m_views)) { | ||
6058 | view->postMessage(message, m_messageHash[message]); | 6058 | view->postMessage(message, managedMessageActions); | ||
6059 | } | 6059 | } | ||
6060 | } | 6060 | } | ||
6061 | 6061 | | |||
6062 | // also catch if the user manually calls delete message | 6062 | // also catch if the user manually calls delete message | ||
6063 | connect(message, SIGNAL(closed(KTextEditor::Message *)), SLOT(messageDestroyed(KTextEditor::Message *))); | 6063 | connect(message, SIGNAL(closed(KTextEditor::Message *)), SLOT(messageDestroyed(KTextEditor::Message *))); | ||
6064 | 6064 | | |||
6065 | return true; | 6065 | return true; | ||
6066 | } | 6066 | } | ||
Show All 13 Lines |