From 3f0649f07c2f555dcc0cd716ae769dcd3565ee98 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 1 Feb 2024 08:39:24 +0100 Subject: [PATCH] Use setAttribute(Qt::WA_DeleteOnClose) on context menus everywhere Helps thinking about menu and parent lifetime. Change-Id: I120a16b4ebbd92187c5e8e78bd7da4ee9f2b115d Reviewed-by: Orgad Shaneh Reviewed-by: Marcus Tillmanns --- src/plugins/debugger/logwindow.cpp | 4 ++-- src/plugins/diffeditor/sidebysidediffeditorwidget.cpp | 5 ++--- src/plugins/diffeditor/unifieddiffeditorwidget.cpp | 5 ++--- src/plugins/vcsbase/submiteditorwidget.cpp | 3 ++- src/plugins/vcsbase/vcsoutputwindow.cpp | 3 ++- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp index 43f785684b6..482f2605e77 100644 --- a/src/plugins/debugger/logwindow.cpp +++ b/src/plugins/debugger/logwindow.cpp @@ -190,7 +190,8 @@ public: void contextMenuEvent(QContextMenuEvent *ev) override { - QPointer menu = createStandardContextMenu(); + QMenu *menu = createStandardContextMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose); menu->addAction(m_clearContentsAction); menu->addAction(m_saveContentsAction); // X11 clipboard is unreliable for long texts menu->addAction(settings().logTimeStamps.action()); @@ -198,7 +199,6 @@ public: menu->addSeparator(); menu->addAction(settings().settingsDialog.action()); menu->exec(ev->globalPos()); - delete menu; } void append(const QString &text) diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index 341edce7334..ecdb87f80b5 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -485,7 +485,8 @@ void SideDiffEditorWidget::keyPressEvent(QKeyEvent *e) void SideDiffEditorWidget::contextMenuEvent(QContextMenuEvent *e) { - QPointer menu = createStandardContextMenu(); + QMenu *menu = createStandardContextMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose); const QTextCursor tc = textCursor(); QTextCursor start = tc; @@ -526,9 +527,7 @@ void SideDiffEditorWidget::contextMenuEvent(QContextMenuEvent *e) m_data.m_chunkInfo.chunkIndexForBlockNumber(blockNumber), selection); - connect(this, &SideDiffEditorWidget::destroyed, menu.data(), &QMenu::deleteLater); menu->exec(e->globalPos()); - delete menu; } void SideDiffEditorWidget::jumpToOriginalFile(const QTextCursor &cursor) diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index d5633d50ec0..31d8e1b190a 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -133,7 +133,8 @@ void UnifiedDiffEditorWidget::keyPressEvent(QKeyEvent *e) void UnifiedDiffEditorWidget::contextMenuEvent(QContextMenuEvent *e) { - QPointer menu = createStandardContextMenu(); + QMenu *menu = createStandardContextMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose); const QTextCursor tc = textCursor(); QTextCursor start = tc; @@ -182,9 +183,7 @@ void UnifiedDiffEditorWidget::contextMenuEvent(QContextMenuEvent *e) addContextMenuActions(menu, m_data.fileIndexForBlockNumber(blockNumber), m_data.m_chunkInfo.chunkIndexForBlockNumber(blockNumber), selection); - connect(this, &UnifiedDiffEditorWidget::destroyed, menu.data(), &QMenu::deleteLater); menu->exec(e->globalPos()); - delete menu; } void UnifiedDiffEditorWidget::addContextMenuActions(QMenu *menu, int fileIndex, int chunkIndex, diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index b97c190bfbb..b8f3d2a151d 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -734,7 +734,8 @@ void SubmitEditorWidget::insertDescriptionEditContextMenuAction(int pos, QAction void SubmitEditorWidget::editorCustomContextMenuRequested(const QPoint &pos) { - QScopedPointer menu(d->description->createStandardContextMenu()); + QMenu *menu = d->description->createStandardContextMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose); // Extend for (const SubmitEditorWidgetPrivate::AdditionalContextMenuAction &a : std::as_const(d->descriptionEditContextMenuActions)) { diff --git a/src/plugins/vcsbase/vcsoutputwindow.cpp b/src/plugins/vcsbase/vcsoutputwindow.cpp index bbd825ebcd0..4181fc1cb0e 100644 --- a/src/plugins/vcsbase/vcsoutputwindow.cpp +++ b/src/plugins/vcsbase/vcsoutputwindow.cpp @@ -142,6 +142,8 @@ void OutputWindowPlainTextEdit::contextMenuEvent(QContextMenuEvent *event) { const QString href = anchorAt(event->pos()); QMenu *menu = href.isEmpty() ? createStandardContextMenu(event->pos()) : new QMenu; + menu->setAttribute(Qt::WA_DeleteOnClose); + // Add 'open file' FilePath repo; const QString token = identifierUnderCursor(event->pos(), &repo); @@ -177,7 +179,6 @@ void OutputWindowPlainTextEdit::contextMenuEvent(QContextMenuEvent *event) EditorManager::openEditor(fileName); } } - delete menu; } void OutputWindowPlainTextEdit::handleLink(const QPoint &pos)