forked from qt-creator/qt-creator
LanguageClient: Add copy button to annotation tooltip
Change-Id: Ibe01543efa39e47de2b9d2d8e7302932bfcd413c Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -34,6 +34,9 @@
|
|||||||
#include <texteditor/textstyles.h>
|
#include <texteditor/textstyles.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QClipboard>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
|
||||||
using namespace LanguageServerProtocol;
|
using namespace LanguageServerProtocol;
|
||||||
@@ -122,8 +125,19 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri)
|
|||||||
const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri);
|
const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri);
|
||||||
const int docRevision = doc->document()->revision();
|
const int docRevision = doc->document()->revision();
|
||||||
if (versionedDiagnostics.version.value_or(docRevision) == docRevision) {
|
if (versionedDiagnostics.version.value_or(docRevision) == docRevision) {
|
||||||
|
const auto icon = QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon());
|
||||||
|
const QString tooltip = tr("Copy to Clipboard");
|
||||||
for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) {
|
for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) {
|
||||||
doc->addMark(new TextMark(filePath, diagnostic, m_clientId));
|
QAction *action = new QAction();
|
||||||
|
action->setIcon(icon);
|
||||||
|
action->setToolTip(tooltip);
|
||||||
|
QObject::connect(action, &QAction::triggered, [text = diagnostic.message()]() {
|
||||||
|
QApplication::clipboard()->setText(text);
|
||||||
|
});
|
||||||
|
auto mark = new TextMark(filePath, diagnostic, m_clientId);
|
||||||
|
mark->setActions({action});
|
||||||
|
|
||||||
|
doc->addMark(mark);
|
||||||
extraSelections << toDiagnosticsSelections(diagnostic, doc->document());
|
extraSelections << toDiagnosticsSelections(diagnostic, doc->document());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,7 @@ namespace LanguageClient {
|
|||||||
|
|
||||||
class DiagnosticManager
|
class DiagnosticManager
|
||||||
{
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(LanguageClient::DiagnosticManager)
|
||||||
public:
|
public:
|
||||||
explicit DiagnosticManager(const Utils::Id &clientId);
|
explicit DiagnosticManager(const Utils::Id &clientId);
|
||||||
~DiagnosticManager();
|
~DiagnosticManager();
|
||||||
|
Reference in New Issue
Block a user