diff options
| author | Andre Hartmann <aha_1980@gmx.de> | 2025-12-13 07:35:42 +0100 |
|---|---|---|
| committer | André Hartmann <aha_1980@gmx.de> | 2025-12-17 08:18:17 +0000 |
| commit | 487a955bc8650f3d397b1ba7560e9bbfa5a04ce3 (patch) | |
| tree | 85584f55f74f357d0a6bef13b1d1afccc9049bca | |
| parent | 8824c6f6e28f08dd36a8b80a40a0821fd19d2b3a (diff) | |
... to unified diff editor. The same is not needed for the
side-by-side editor, as this editor does not show headers
nor plus or minus signs at the line start.
Fixes: QTCREATORBUG-23694
Change-Id: I5df2fe04a36c78cbf7f11e61686a0c9b6b5eece9
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
| -rw-r--r-- | src/plugins/diffeditor/unifieddiffeditorwidget.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index 8d536de65aa..f9eae6a8a1c 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -15,8 +15,10 @@ #include <texteditor/texteditorsettings.h> #include <utils/async.h> +#include <utils/icon.h> #include <utils/mathutils.h> #include <utils/qtcassert.h> +#include <utils/stringutils.h> #include <QMenu> #include <QScrollBar> @@ -141,6 +143,20 @@ void UnifiedDiffEditorWidget::contextMenuEvent(QContextMenuEvent *e) const int startBlockNumber = start.blockNumber(); const int endBlockNumber = end.blockNumber(); + if (tc.hasSelection()) { + menu->addSeparator(); + QAction *action = menu->addAction(Tr::tr("Copy Cleaned Text"), this, [tc] { + const QRegularExpression endingsRe(R"([\r\x{2028}\x{2029}])"); + const QRegularExpression headerRe(R"(^(?:@@ |\+\+\+ |--- ).*\n)", + QRegularExpression::MultilineOption); + const QRegularExpression patchRe(R"(^[\+\- ])", QRegularExpression::MultilineOption); + const QString text = tc.selectedText() + .replace(endingsRe, "\n").remove(headerRe).remove(patchRe); + Utils::setClipboardAndSelection(text); + }); + action->setIcon(Icon::fromTheme("edit-copy")); + } + QTextCursor cursor = cursorForPosition(e->pos()); const int blockNumber = cursor.blockNumber(); |
