From d58c0a9ac8123fd81c335b322defbbb567de840d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 8 Nov 2018 16:04:20 +0100 Subject: Work around crash when dragging text from tool tip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disallow text selection for the code model tool tips because dragging the selection somewhere crashes. Task-number: QTCREATORBUG-21430 Change-Id: I3aed4e16bf429162258d2dfafaa45fff25ba700a Reviewed-by: André Hartmann Reviewed-by: Nikolai Kosjar --- src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp index d7af5ab8ec..d92b5d67ac 100644 --- a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp +++ b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp @@ -98,6 +98,7 @@ public: bool enableClickableFixits; bool limitWidth; bool hideTooltipAfterLinkActivation; + bool allowTextSelection; }; static QWidget *create(const QVector &diagnostics, @@ -122,7 +123,12 @@ private: auto *label = new QLabel; label->setTextFormat(Qt::RichText); label->setText(text); - label->setTextInteractionFlags(Qt::TextBrowserInteraction); + if (m_displayHints.allowTextSelection) { + label->setTextInteractionFlags(Qt::TextBrowserInteraction); + } else { + label->setTextInteractionFlags(Qt::LinksAccessibleByMouse + | Qt::LinksAccessibleByKeyboard); + } if (m_displayHints.limitWidth) { const int limit = widthLimit(); @@ -457,6 +463,7 @@ QWidget *ClangDiagnosticWidget::create( hints.enableClickableFixits = true; hints.limitWidth = true; hints.hideTooltipAfterLinkActivation = true; + hints.allowTextSelection = false; } else { // Info Bar hints.showCategoryAndEnableOption = false; hints.showFileNameInMainDiagnostic = true; @@ -464,6 +471,7 @@ QWidget *ClangDiagnosticWidget::create( hints.enableClickableFixits = false; hints.limitWidth = false; hints.hideTooltipAfterLinkActivation = false; + hints.allowTextSelection = true; } return WidgetFromDiagnostics::create(diagnostics, hints); -- cgit v1.2.1