diff options
author | David Schulz <david.schulz@qt.io> | 2016-08-16 14:19:41 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2016-09-06 09:12:36 +0000 |
commit | 50a6c478304adb40020d6ccdacc41e9a77a7ad77 (patch) | |
tree | d35459c60e42e687a2f61ecdb2b104754677489e | |
parent | 0e542a6a2914a73b42ae3d1af3c68a6bfe51e939 (diff) |
Use icons and default tool tips in text mark popup
Change-Id: I4487d642e066479e8e344ed77e539de92fbca651
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
-rw-r--r-- | src/plugins/clangcodemodel/clangtextmark.cpp | 6 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangtextmark.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/taskhub.cpp | 1 | ||||
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 4 | ||||
-rw-r--r-- | src/plugins/texteditor/textmark.cpp | 40 | ||||
-rw-r--r-- | src/plugins/texteditor/textmark.h | 5 |
6 files changed, 47 insertions, 11 deletions
diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 1021bd0fad1..137787daa64 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -31,7 +31,6 @@ #include <utils/icon.h> #include <utils/theme/theme.h> -#include <QLayout> #include <QString> namespace ClangCodeModel { @@ -83,9 +82,10 @@ void ClangTextMark::setIcon(ClangBackEnd::DiagnosticSeverity severity) TextMark::setIcon(errorIcon); } -void ClangTextMark::addToToolTipLayout(QLayout *target) +bool ClangTextMark::addToolTipContent(QLayout *target) { - Internal::addToolTipToLayout(m_diagnostic, target); + Internal::addToolTipToLayout(m_diagnostic, target); + return true; } } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangtextmark.h b/src/plugins/clangcodemodel/clangtextmark.h index 98833b38541..d8d7eb2c019 100644 --- a/src/plugins/clangcodemodel/clangtextmark.h +++ b/src/plugins/clangcodemodel/clangtextmark.h @@ -38,7 +38,7 @@ public: ClangTextMark(const QString &fileName, const ClangBackEnd::DiagnosticContainer &diagnostic); private: - void addToToolTipLayout(QLayout *target); + bool addToolTipContent(QLayout *target); void setIcon(ClangBackEnd::DiagnosticSeverity severity); ClangBackEnd::DiagnosticContainer m_diagnostic; diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 59d68ae729c..b7163be80bb 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -147,6 +147,7 @@ void TaskHub::addTask(Task task) auto mark = new TaskMark(task.taskId, task.file.toString(), task.line, task.type, !task.icon.isNull()); mark->setIcon(task.icon); mark->setPriority(TextEditor::TextMark::LowPriority); + mark->setToolTip(task.description); task.setMark(mark); } emit m_instance->taskAdded(task); diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 5dfa1d49ac0..126f878a2cd 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -91,6 +91,7 @@ #include <QClipboard> #include <QCoreApplication> #include <QDebug> +#include <QGridLayout> #include <QKeyEvent> #include <QMenu> #include <QMessageBox> @@ -111,7 +112,6 @@ #include <QTimeLine> #include <QTimer> #include <QToolBar> -#include <QVBoxLayout> //#define DO_FOO @@ -5122,7 +5122,7 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) if (data->marks().isEmpty()) { ToolTip::hide(); } else { - auto layout = new QVBoxLayout; + auto layout = new QGridLayout; layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(2); foreach (TextMark *mark, data->marks()) diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 86f4b551b49..dea5ca70c01 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -33,7 +33,7 @@ #include <coreplugin/documentmanager.h> #include <utils/qtcassert.h> -#include <QLayout> +#include <QGridLayout> using namespace Core; using namespace Utils; @@ -114,6 +114,11 @@ void TextMark::setIcon(const QIcon &icon) m_icon = icon; } +const QIcon &TextMark::icon() const +{ + return m_icon; +} + Theme::Color TextMark::categoryColor(Id category) { return TextEditorPlugin::baseTextMarkRegistry()->categoryColor(category); @@ -195,10 +200,37 @@ void TextMark::dragToLine(int lineNumber) Q_UNUSED(lineNumber); } -void TextMark::addToToolTipLayout(QLayout *target) +void TextMark::addToToolTipLayout(QGridLayout *target) +{ + auto *contentLayout = new QVBoxLayout; + addToolTipContent(contentLayout); + if (contentLayout->count() > 0) { + const int row = target->rowCount(); + if (!m_icon.isNull()) { + auto iconLabel = new QLabel; + iconLabel->setPixmap(m_icon.pixmap(16, 16)); + target->addWidget(iconLabel, row, 0, Qt::AlignTop | Qt::AlignHCenter); + } + target->addLayout(contentLayout, row, 1); + } +} + +bool TextMark::addToolTipContent(QLayout *target) { - if (!m_toolTip.isEmpty()) - target->addWidget(new QLabel(m_toolTip)); + QString text = m_toolTip; + if (text.isEmpty()) { + text = TextEditorPlugin::baseTextMarkRegistry()->defaultToolTip(m_category); + if (text.isEmpty()) + return false; + } + + auto textLabel = new QLabel; + textLabel->setText(text); + // Differentiate between tool tips that where explicitly set and default tool tips. + textLabel->setEnabled(!m_toolTip.isEmpty()); + target->addWidget(textLabel); + + return true; } TextDocument *TextMark::baseTextDocument() const diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index 7569ddf0997..0aebe697606 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -33,6 +33,7 @@ #include <QIcon> QT_BEGIN_NAMESPACE +class QGridLayout; class QLayout; class QPainter; class QRect; @@ -74,13 +75,15 @@ public: virtual void clicked(); virtual bool isDraggable() const; virtual void dragToLine(int lineNumber); - virtual void addToToolTipLayout(QLayout *target); + void addToToolTipLayout(QGridLayout *target); + virtual bool addToolTipContent(QLayout *target); static Utils::Theme::Color categoryColor(Core::Id category); static bool categoryHasColor(Core::Id category); static void setCategoryColor(Core::Id category, Utils::Theme::Color color); static void setDefaultToolTip(Core::Id category, const QString &toolTip); void setIcon(const QIcon &icon); + const QIcon &icon() const; // call this if the icon has changed. void updateMarker(); Priority priority() const; |