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 <utils/utilsicons.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QTextEdit>
|
||||
|
||||
using namespace LanguageServerProtocol;
|
||||
@@ -122,8 +125,19 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri)
|
||||
const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri);
|
||||
const int docRevision = doc->document()->revision();
|
||||
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) {
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
@@ -37,6 +37,7 @@ namespace LanguageClient {
|
||||
|
||||
class DiagnosticManager
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(LanguageClient::DiagnosticManager)
|
||||
public:
|
||||
explicit DiagnosticManager(const Utils::Id &clientId);
|
||||
~DiagnosticManager();
|
||||
|
Reference in New Issue
Block a user