forked from qt-creator/qt-creator
TextEditors: Remove unnecessary duplicated caching
Change-Id: I3800360e3b9bd6874d6852dabcfc7a9a066e52c2 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -773,7 +773,8 @@ void CPPEditorWidget::abortRename()
|
|||||||
{
|
{
|
||||||
if (m_currentRenameSelection <= NoCurrentRenameSelection)
|
if (m_currentRenameSelection <= NoCurrentRenameSelection)
|
||||||
return;
|
return;
|
||||||
m_renameSelections[m_currentRenameSelection].format = m_occurrencesFormat;
|
m_renameSelections[m_currentRenameSelection].format
|
||||||
|
= baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES);
|
||||||
m_currentRenameSelection = NoCurrentRenameSelection;
|
m_currentRenameSelection = NoCurrentRenameSelection;
|
||||||
m_currentRenameSelectionBegin = QTextCursor();
|
m_currentRenameSelectionBegin = QTextCursor();
|
||||||
m_currentRenameSelectionEnd = QTextCursor();
|
m_currentRenameSelectionEnd = QTextCursor();
|
||||||
@@ -882,7 +883,7 @@ void CPPEditorWidget::markSymbolsNow()
|
|||||||
cursor.setPosition(cursor.position() + len, QTextCursor::KeepAnchor);
|
cursor.setPosition(cursor.position() + len, QTextCursor::KeepAnchor);
|
||||||
|
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
sel.format = m_occurrencesFormat;
|
sel.format = baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES);
|
||||||
sel.cursor = cursor;
|
sel.cursor = cursor;
|
||||||
selections.append(sel);
|
selections.append(sel);
|
||||||
|
|
||||||
@@ -911,7 +912,8 @@ void CPPEditorWidget::markSymbols(const QTextCursor &tc, const SemanticInfo &inf
|
|||||||
|
|
||||||
if (!info.doc)
|
if (!info.doc)
|
||||||
return;
|
return;
|
||||||
|
const QTextCharFormat &occurrencesFormat
|
||||||
|
= baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES);
|
||||||
if (const Macro *macro = findCanonicalMacro(textCursor(), info.doc)) {
|
if (const Macro *macro = findCanonicalMacro(textCursor(), info.doc)) {
|
||||||
QList<QTextEdit::ExtraSelection> selections;
|
QList<QTextEdit::ExtraSelection> selections;
|
||||||
|
|
||||||
@@ -923,7 +925,7 @@ void CPPEditorWidget::markSymbols(const QTextCursor &tc, const SemanticInfo &inf
|
|||||||
macro->name().length());
|
macro->name().length());
|
||||||
|
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
sel.format = m_occurrencesFormat;
|
sel.format = occurrencesFormat;
|
||||||
sel.cursor = cursor;
|
sel.cursor = cursor;
|
||||||
selections.append(sel);
|
selections.append(sel);
|
||||||
}
|
}
|
||||||
@@ -941,7 +943,7 @@ void CPPEditorWidget::markSymbols(const QTextCursor &tc, const SemanticInfo &inf
|
|||||||
cursor.setPosition(use.end(), QTextCursor::KeepAnchor);
|
cursor.setPosition(use.end(), QTextCursor::KeepAnchor);
|
||||||
|
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
sel.format = m_occurrencesFormat;
|
sel.format = occurrencesFormat;
|
||||||
sel.cursor = cursor;
|
sel.cursor = cursor;
|
||||||
selections.append(sel);
|
selections.append(sel);
|
||||||
}
|
}
|
||||||
@@ -987,7 +989,8 @@ void CPPEditorWidget::renameSymbolUnderCursor()
|
|||||||
m_renameSelections[i].cursor.selectionStart());
|
m_renameSelections[i].cursor.selectionStart());
|
||||||
m_currentRenameSelectionEnd = QTextCursor(c.document()->docHandle(),
|
m_currentRenameSelectionEnd = QTextCursor(c.document()->docHandle(),
|
||||||
m_renameSelections[i].cursor.selectionEnd());
|
m_renameSelections[i].cursor.selectionEnd());
|
||||||
m_renameSelections[i].format = m_occurrenceRenameFormat;
|
m_renameSelections[i].format
|
||||||
|
= baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES_RENAME);;
|
||||||
setExtraSelections(CodeSemanticsSelection, m_renameSelections);
|
setExtraSelections(CodeSemanticsSelection, m_renameSelections);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1112,9 +1115,9 @@ void CPPEditorWidget::highlightUses(const QList<SemanticInfo::Use> &uses,
|
|||||||
|
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
if (isUnused)
|
if (isUnused)
|
||||||
sel.format = m_occurrencesUnusedFormat;
|
sel.format = baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES_UNUSED);
|
||||||
else
|
else
|
||||||
sel.format = m_occurrencesFormat;
|
sel.format = baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES);
|
||||||
|
|
||||||
const int anchor = document()->findBlockByNumber(use.line - 1).position() + use.column - 1;
|
const int anchor = document()->findBlockByNumber(use.line - 1).position() + use.column - 1;
|
||||||
const int position = anchor + use.length;
|
const int position = anchor + use.length;
|
||||||
@@ -1537,13 +1540,6 @@ void CPPEditorWidget::applyFontSettings()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
const TextEditor::FontSettings &fs = baseTextDocument()->fontSettings();
|
const TextEditor::FontSettings &fs = baseTextDocument()->fontSettings();
|
||||||
m_occurrencesFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES);
|
|
||||||
m_occurrencesUnusedFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_UNUSED);
|
|
||||||
m_occurrencesUnusedFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
|
|
||||||
m_occurrencesUnusedFormat.setUnderlineColor(m_occurrencesUnusedFormat.foreground().color());
|
|
||||||
m_occurrencesUnusedFormat.clearForeground();
|
|
||||||
m_occurrencesUnusedFormat.setToolTip(tr("Unused variable"));
|
|
||||||
m_occurrenceRenameFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_RENAME);
|
|
||||||
|
|
||||||
m_semanticHighlightFormatMap[CppHighlightingSupport::TypeUse] =
|
m_semanticHighlightFormatMap[CppHighlightingSupport::TypeUse] =
|
||||||
fs.toTextCharFormat(TextEditor::C_TYPE);
|
fs.toTextCharFormat(TextEditor::C_TYPE);
|
||||||
@@ -1565,12 +1561,6 @@ void CPPEditorWidget::applyFontSettings()
|
|||||||
fs.toTextCharFormat(TextEditor::C_KEYWORD);
|
fs.toTextCharFormat(TextEditor::C_KEYWORD);
|
||||||
m_semanticHighlightFormatMap[CppHighlightingSupport::StringUse] =
|
m_semanticHighlightFormatMap[CppHighlightingSupport::StringUse] =
|
||||||
fs.toTextCharFormat(TextEditor::C_STRING);
|
fs.toTextCharFormat(TextEditor::C_STRING);
|
||||||
m_keywordFormat = fs.toTextCharFormat(TextEditor::C_KEYWORD);
|
|
||||||
|
|
||||||
// only set the background, we do not want to modify foreground properties
|
|
||||||
// set by the syntax highlighter or the link
|
|
||||||
m_occurrencesFormat.clearForeground();
|
|
||||||
m_occurrenceRenameFormat.clearForeground();
|
|
||||||
|
|
||||||
// Clear all additional formats since they may have changed
|
// Clear all additional formats since they may have changed
|
||||||
QTextBlock b = document()->firstBlock();
|
QTextBlock b = document()->firstBlock();
|
||||||
|
|||||||
@@ -238,11 +238,7 @@ private:
|
|||||||
QTimer *m_updateOutlineIndexTimer;
|
QTimer *m_updateOutlineIndexTimer;
|
||||||
QTimer *m_updateUsesTimer;
|
QTimer *m_updateUsesTimer;
|
||||||
QTimer *m_updateFunctionDeclDefLinkTimer;
|
QTimer *m_updateFunctionDeclDefLinkTimer;
|
||||||
QTextCharFormat m_occurrencesFormat;
|
|
||||||
QTextCharFormat m_occurrencesUnusedFormat;
|
|
||||||
QTextCharFormat m_occurrenceRenameFormat;
|
|
||||||
QHash<int, QTextCharFormat> m_semanticHighlightFormatMap;
|
QHash<int, QTextCharFormat> m_semanticHighlightFormatMap;
|
||||||
QTextCharFormat m_keywordFormat;
|
|
||||||
|
|
||||||
QList<QTextEdit::ExtraSelection> m_renameSelections;
|
QList<QTextEdit::ExtraSelection> m_renameSelections;
|
||||||
int m_currentRenameSelection;
|
int m_currentRenameSelection;
|
||||||
|
|||||||
@@ -860,7 +860,7 @@ void QmlJSTextEditorWidget::updateUsesNow()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
sel.format = m_occurrencesFormat;
|
sel.format = baseTextDocument()->fontSettings().toTextCharFormat(TextEditor::C_OCCURRENCES);
|
||||||
sel.cursor = textCursor();
|
sel.cursor = textCursor();
|
||||||
sel.cursor.setPosition(loc.begin());
|
sel.cursor.setPosition(loc.begin());
|
||||||
sel.cursor.setPosition(loc.end(), QTextCursor::KeepAnchor);
|
sel.cursor.setPosition(loc.end(), QTextCursor::KeepAnchor);
|
||||||
@@ -1000,21 +1000,7 @@ void QmlJSTextEditorWidget::setSelectedElements()
|
|||||||
void QmlJSTextEditorWidget::applyFontSettings()
|
void QmlJSTextEditorWidget::applyFontSettings()
|
||||||
{
|
{
|
||||||
TextEditor::BaseTextEditorWidget::applyFontSettings();
|
TextEditor::BaseTextEditorWidget::applyFontSettings();
|
||||||
|
m_semanticHighlighter->updateFontSettings(baseTextDocument()->fontSettings());
|
||||||
const TextEditor::FontSettings &fs = baseTextDocument()->fontSettings();
|
|
||||||
m_occurrencesFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES);
|
|
||||||
m_occurrencesUnusedFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_UNUSED);
|
|
||||||
m_occurrencesUnusedFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
|
|
||||||
m_occurrencesUnusedFormat.setUnderlineColor(m_occurrencesUnusedFormat.foreground().color());
|
|
||||||
m_occurrencesUnusedFormat.clearForeground();
|
|
||||||
m_occurrencesUnusedFormat.setToolTip(tr("Unused variable"));
|
|
||||||
m_occurrenceRenameFormat = fs.toTextCharFormat(TextEditor::C_OCCURRENCES_RENAME);
|
|
||||||
|
|
||||||
// only set the background, we do not want to modify foreground properties set by the syntax highlighter or the link
|
|
||||||
m_occurrencesFormat.clearForeground();
|
|
||||||
m_occurrenceRenameFormat.clearForeground();
|
|
||||||
|
|
||||||
m_semanticHighlighter->updateFontSettings(fs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -198,9 +198,6 @@ private:
|
|||||||
Internal::QmlOutlineModel *m_outlineModel;
|
Internal::QmlOutlineModel *m_outlineModel;
|
||||||
QModelIndex m_outlineModelIndex;
|
QModelIndex m_outlineModelIndex;
|
||||||
QmlJS::ModelManagerInterface *m_modelManager;
|
QmlJS::ModelManagerInterface *m_modelManager;
|
||||||
QTextCharFormat m_occurrencesFormat;
|
|
||||||
QTextCharFormat m_occurrencesUnusedFormat;
|
|
||||||
QTextCharFormat m_occurrenceRenameFormat;
|
|
||||||
|
|
||||||
Internal::SemanticInfoUpdater *m_semanticInfoUpdater;
|
Internal::SemanticInfoUpdater *m_semanticInfoUpdater;
|
||||||
QmlJSTools::SemanticInfo m_semanticInfo;
|
QmlJSTools::SemanticInfo m_semanticInfo;
|
||||||
|
|||||||
@@ -263,8 +263,6 @@ void BaseTextEditorWidget::ctor(const QSharedPointer<BaseTextDocument> &doc)
|
|||||||
|
|
||||||
// parentheses matcher
|
// parentheses matcher
|
||||||
d->m_formatRange = true;
|
d->m_formatRange = true;
|
||||||
d->m_matchFormat.setForeground(Qt::red);
|
|
||||||
d->m_matchFormat.setBackground(QColor(0xb4, 0xee, 0xb4));
|
|
||||||
d->m_mismatchFormat.setBackground(palette().color(QPalette::Base).value() < 128
|
d->m_mismatchFormat.setBackground(palette().color(QPalette::Base).value() < 128
|
||||||
? Qt::darkMagenta : Qt::magenta);
|
? Qt::darkMagenta : Qt::magenta);
|
||||||
d->m_parenthesesMatchingTimer.setSingleShot(true);
|
d->m_parenthesesMatchingTimer.setSingleShot(true);
|
||||||
@@ -275,8 +273,6 @@ void BaseTextEditorWidget::ctor(const QSharedPointer<BaseTextDocument> &doc)
|
|||||||
|
|
||||||
d->m_animator = 0;
|
d->m_animator = 0;
|
||||||
|
|
||||||
d->m_searchResultFormat.setBackground(QColor(0xffef0b));
|
|
||||||
|
|
||||||
slotUpdateExtraAreaWidth();
|
slotUpdateExtraAreaWidth();
|
||||||
updateHighlights();
|
updateHighlights();
|
||||||
setFrameStyle(QFrame::NoFrame);
|
setFrameStyle(QFrame::NoFrame);
|
||||||
@@ -1924,7 +1920,9 @@ void BaseTextEditorWidget::insertCodeSnippet(const QTextCursor &cursor_arg, cons
|
|||||||
tc.setPosition(position + length, QTextCursor::KeepAnchor);
|
tc.setPosition(position + length, QTextCursor::KeepAnchor);
|
||||||
QTextEdit::ExtraSelection selection;
|
QTextEdit::ExtraSelection selection;
|
||||||
selection.cursor = tc;
|
selection.cursor = tc;
|
||||||
selection.format = (length ? d->m_occurrencesFormat : d->m_occurrenceRenameFormat);
|
selection.format = (length
|
||||||
|
? baseTextDocument()->fontSettings().toTextCharFormat(C_OCCURRENCES)
|
||||||
|
: baseTextDocument()->fontSettings().toTextCharFormat(C_OCCURRENCES_RENAME));
|
||||||
selections.append(selection);
|
selections.append(selection);
|
||||||
manglers << data.ranges.at(i).mangler;
|
manglers << data.ranges.at(i).mangler;
|
||||||
}
|
}
|
||||||
@@ -2617,9 +2615,11 @@ void BaseTextEditorWidgetPrivate::highlightSearchResults(const QTextBlock &block
|
|||||||
if (!q->inFindScope(blockPosition + idx, blockPosition + idx + l))
|
if (!q->inFindScope(blockPosition + idx, blockPosition + idx + l))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
const QTextCharFormat &searchResultFormat
|
||||||
|
= m_document->fontSettings().toTextCharFormat(C_SEARCH_RESULT);
|
||||||
overlay->addOverlaySelection(blockPosition + idx,
|
overlay->addOverlaySelection(blockPosition + idx,
|
||||||
blockPosition + idx + l,
|
blockPosition + idx + l,
|
||||||
m_searchResultFormat.background().color().darker(120),
|
searchResultFormat.background().color().darker(120),
|
||||||
QColor(),
|
QColor(),
|
||||||
(idx == cursor.selectionStart() - blockPosition
|
(idx == cursor.selectionStart() - blockPosition
|
||||||
&& idx + l == cursor.selectionEnd() - blockPosition)?
|
&& idx + l == cursor.selectionEnd() - blockPosition)?
|
||||||
@@ -2793,12 +2793,15 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
QTextDocument *doc = document();
|
QTextDocument *doc = document();
|
||||||
BaseTextDocumentLayout *documentLayout = qobject_cast<BaseTextDocumentLayout*>(doc->documentLayout());
|
BaseTextDocumentLayout *documentLayout = qobject_cast<BaseTextDocumentLayout*>(doc->documentLayout());
|
||||||
QTC_ASSERT(documentLayout, return);
|
QTC_ASSERT(documentLayout, return);
|
||||||
|
const FontSettings &fs = baseTextDocument()->fontSettings();
|
||||||
|
const QTextCharFormat &searchScopeFormat = fs.toTextCharFormat(C_SEARCH_SCOPE);
|
||||||
|
const QTextCharFormat &ifdefedOutFormat = fs.toTextCharFormat(C_DISABLED_CODE);
|
||||||
|
|
||||||
QPointF offset(contentOffset());
|
QPointF offset(contentOffset());
|
||||||
QTextBlock textCursorBlock = textCursor().block();
|
QTextBlock textCursorBlock = textCursor().block();
|
||||||
|
|
||||||
bool hasMainSelection = textCursor().hasSelection();
|
bool hasMainSelection = textCursor().hasSelection();
|
||||||
bool suppressSyntaxInIfdefedOutBlock = (d->m_ifdefedOutFormat.foreground()
|
bool suppressSyntaxInIfdefedOutBlock = (ifdefedOutFormat.foreground()
|
||||||
!= palette().foreground());
|
!= palette().foreground());
|
||||||
|
|
||||||
QRect er = e->rect();
|
QRect er = e->rect();
|
||||||
@@ -2812,7 +2815,7 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
lineX = QFontMetricsF(font()).width(QLatin1Char('x')) * d->m_visibleWrapColumn + offset.x() + 4;
|
lineX = QFontMetricsF(font()).width(QLatin1Char('x')) * d->m_visibleWrapColumn + offset.x() + 4;
|
||||||
|
|
||||||
if (lineX < viewportRect.width()) {
|
if (lineX < viewportRect.width()) {
|
||||||
const QBrush background = d->m_ifdefedOutFormat.background();
|
const QBrush background = ifdefedOutFormat.background();
|
||||||
painter.fillRect(QRectF(lineX, er.top(), viewportRect.width() - lineX, er.height()),
|
painter.fillRect(QRectF(lineX, er.top(), viewportRect.width() - lineX, er.height()),
|
||||||
background);
|
background);
|
||||||
|
|
||||||
@@ -2949,7 +2952,7 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
rr.setRight(viewportRect.width() - offset.x());
|
rr.setRight(viewportRect.width() - offset.x());
|
||||||
if (lineX > 0)
|
if (lineX > 0)
|
||||||
rr.setRight(qMin(lineX, rr.right()));
|
rr.setRight(qMin(lineX, rr.right()));
|
||||||
painter.fillRect(rr, d->m_ifdefedOutFormat.background());
|
painter.fillRect(rr, ifdefedOutFormat.background());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
offsetIDO.ry() += r.height();
|
offsetIDO.ry() += r.height();
|
||||||
@@ -3002,9 +3005,9 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
rr.setLeft(r.left() + x);
|
rr.setLeft(r.left() + x);
|
||||||
if (line.lineNumber() == eline.lineNumber())
|
if (line.lineNumber() == eline.lineNumber())
|
||||||
rr.setRight(r.left() + ex);
|
rr.setRight(r.left() + ex);
|
||||||
painter.fillRect(rr, d->m_searchScopeFormat.background());
|
painter.fillRect(rr, searchScopeFormat.background());
|
||||||
|
|
||||||
QColor lineCol = d->m_searchScopeFormat.foreground().color();
|
QColor lineCol = searchScopeFormat.foreground().color();
|
||||||
QPen pen = painter.pen();
|
QPen pen = painter.pen();
|
||||||
painter.setPen(lineCol);
|
painter.setPen(lineCol);
|
||||||
if (blockFS == d->m_findScopeStart.block())
|
if (blockFS == d->m_findScopeStart.block())
|
||||||
@@ -3035,8 +3038,8 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
TextEditorOverlay *overlay = new TextEditorOverlay(this);
|
TextEditorOverlay *overlay = new TextEditorOverlay(this);
|
||||||
overlay->addOverlaySelection(d->m_findScopeStart.position(),
|
overlay->addOverlaySelection(d->m_findScopeStart.position(),
|
||||||
d->m_findScopeEnd.position(),
|
d->m_findScopeEnd.position(),
|
||||||
d->m_searchScopeFormat.foreground().color(),
|
searchScopeFormat.foreground().color(),
|
||||||
d->m_searchScopeFormat.background().color(),
|
searchScopeFormat.background().color(),
|
||||||
TextEditorOverlay::ExpandBegin);
|
TextEditorOverlay::ExpandBegin);
|
||||||
overlay->setAlpha(false);
|
overlay->setAlpha(false);
|
||||||
overlay->paint(&painter, e->rect());
|
overlay->paint(&painter, e->rect());
|
||||||
@@ -3046,7 +3049,7 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
|
|
||||||
|
|
||||||
d->m_searchResultOverlay->fill(&painter,
|
d->m_searchResultOverlay->fill(&painter,
|
||||||
d->m_searchResultFormat.background().color(),
|
fs.toTextCharFormat(C_SEARCH_RESULT).background().color(),
|
||||||
e->rect());
|
e->rect());
|
||||||
|
|
||||||
|
|
||||||
@@ -3061,7 +3064,7 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
QTextOption option = layout->textOption();
|
QTextOption option = layout->textOption();
|
||||||
if (suppressSyntaxInIfdefedOutBlock && BaseTextDocumentLayout::ifdefedOut(block)) {
|
if (suppressSyntaxInIfdefedOutBlock && BaseTextDocumentLayout::ifdefedOut(block)) {
|
||||||
option.setFlags(option.flags() | QTextOption::SuppressColors);
|
option.setFlags(option.flags() | QTextOption::SuppressColors);
|
||||||
painter.setPen(d->m_ifdefedOutFormat.foreground().color());
|
painter.setPen(ifdefedOutFormat.foreground().color());
|
||||||
} else {
|
} else {
|
||||||
option.setFlags(option.flags() & ~QTextOption::SuppressColors);
|
option.setFlags(option.flags() & ~QTextOption::SuppressColors);
|
||||||
painter.setPen(context.palette.text().color());
|
painter.setPen(context.palette.text().color());
|
||||||
@@ -3127,7 +3130,7 @@ void BaseTextEditorWidget::paintEvent(QPaintEvent *e)
|
|||||||
rr.moveTop(rr.top() + r.top());
|
rr.moveTop(rr.top() + r.top());
|
||||||
rr.setLeft(0);
|
rr.setLeft(0);
|
||||||
rr.setRight(viewportRect.width() - offset.x());
|
rr.setRight(viewportRect.width() - offset.x());
|
||||||
QColor color = d->m_currentLineFormat.background().color();
|
QColor color = fs.toTextCharFormat(C_CURRENT_LINE).background().color();
|
||||||
// set alpha, otherwise we cannot see block highlighting and find scope underneath
|
// set alpha, otherwise we cannot see block highlighting and find scope underneath
|
||||||
color.setAlpha(128);
|
color.setAlpha(128);
|
||||||
painter.fillRect(rr, color);
|
painter.fillRect(rr, color);
|
||||||
@@ -3473,8 +3476,10 @@ void BaseTextEditorWidget::drawCollapsedBlockPopup(QPainter &painter,
|
|||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
painter.translate(.5, .5);
|
painter.translate(.5, .5);
|
||||||
QBrush brush = palette().base();
|
QBrush brush = palette().base();
|
||||||
if (d->m_ifdefedOutFormat.hasProperty(QTextFormat::BackgroundBrush))
|
const QTextCharFormat &ifdefedOutFormat
|
||||||
brush = d->m_ifdefedOutFormat.background();
|
= baseTextDocument()->fontSettings().toTextCharFormat(C_DISABLED_CODE);
|
||||||
|
if (ifdefedOutFormat.hasProperty(QTextFormat::BackgroundBrush))
|
||||||
|
brush = ifdefedOutFormat.background();
|
||||||
painter.setBrush(brush);
|
painter.setBrush(brush);
|
||||||
painter.drawRoundedRect(QRectF(offset.x(),
|
painter.drawRoundedRect(QRectF(offset.x(),
|
||||||
offset.y(),
|
offset.y(),
|
||||||
@@ -3518,8 +3523,10 @@ int BaseTextEditorWidget::extraAreaWidth(int *markWidthPtr) const
|
|||||||
QFont fnt = d->m_extraArea->font();
|
QFont fnt = d->m_extraArea->font();
|
||||||
// this works under the assumption that bold or italic
|
// this works under the assumption that bold or italic
|
||||||
// can only make a font wider
|
// can only make a font wider
|
||||||
fnt.setBold(d->m_currentLineNumberFormat.font().bold());
|
const QTextCharFormat ¤tLineNumberFormat
|
||||||
fnt.setItalic(d->m_currentLineNumberFormat.font().italic());
|
= baseTextDocument()->fontSettings().toTextCharFormat(C_CURRENT_LINE_NUMBER);
|
||||||
|
fnt.setBold(currentLineNumberFormat.font().bold());
|
||||||
|
fnt.setItalic(currentLineNumberFormat.font().italic());
|
||||||
const QFontMetrics linefm(fnt);
|
const QFontMetrics linefm(fnt);
|
||||||
|
|
||||||
space += linefm.width(QLatin1Char('9')) * lineNumberDigits();
|
space += linefm.width(QLatin1Char('9')) * lineNumberDigits();
|
||||||
@@ -3743,10 +3750,12 @@ void BaseTextEditorWidget::extraAreaPaintEvent(QPaintEvent *e)
|
|||||||
if (selected) {
|
if (selected) {
|
||||||
painter.save();
|
painter.save();
|
||||||
QFont f = painter.font();
|
QFont f = painter.font();
|
||||||
f.setBold(d->m_currentLineNumberFormat.font().bold());
|
const QTextCharFormat ¤tLineNumberFormat
|
||||||
f.setItalic(d->m_currentLineNumberFormat.font().italic());
|
= baseTextDocument()->fontSettings().toTextCharFormat(C_CURRENT_LINE_NUMBER);
|
||||||
|
f.setBold(currentLineNumberFormat.font().bold());
|
||||||
|
f.setItalic(currentLineNumberFormat.font().italic());
|
||||||
painter.setFont(f);
|
painter.setFont(f);
|
||||||
painter.setPen(d->m_currentLineNumberFormat.foreground().color());
|
painter.setPen(currentLineNumberFormat.foreground().color());
|
||||||
}
|
}
|
||||||
painter.drawText(QRectF(markWidth, top, extraAreaWidth - markWidth - 4, height), Qt::AlignRight, number);
|
painter.drawText(QRectF(markWidth, top, extraAreaWidth - markWidth - 4, height), Qt::AlignRight, number);
|
||||||
if (selected)
|
if (selected)
|
||||||
@@ -3869,7 +3878,8 @@ void BaseTextEditorWidget::updateCurrentLineHighlight()
|
|||||||
|
|
||||||
if (d->m_highlightCurrentLine) {
|
if (d->m_highlightCurrentLine) {
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
sel.format.setBackground(d->m_currentLineFormat.background());
|
sel.format.setBackground(baseTextDocument()->fontSettings()
|
||||||
|
.toTextCharFormat(C_CURRENT_LINE).background());
|
||||||
sel.format.setProperty(QTextFormat::FullWidthSelection, true);
|
sel.format.setProperty(QTextFormat::FullWidthSelection, true);
|
||||||
sel.cursor = textCursor();
|
sel.cursor = textCursor();
|
||||||
sel.cursor.clearSelection();
|
sel.cursor.clearSelection();
|
||||||
@@ -4683,7 +4693,7 @@ void BaseTextEditorWidget::showLink(const Link &link)
|
|||||||
sel.cursor = textCursor();
|
sel.cursor = textCursor();
|
||||||
sel.cursor.setPosition(link.linkTextStart);
|
sel.cursor.setPosition(link.linkTextStart);
|
||||||
sel.cursor.setPosition(link.linkTextEnd, QTextCursor::KeepAnchor);
|
sel.cursor.setPosition(link.linkTextEnd, QTextCursor::KeepAnchor);
|
||||||
sel.format = d->m_linkFormat;
|
sel.format = baseTextDocument()->fontSettings().toTextCharFormat(C_LINK);
|
||||||
sel.format.setFontUnderline(true);
|
sel.format.setFontUnderline(true);
|
||||||
setExtraSelections(OtherSelection, QList<QTextEdit::ExtraSelection>() << sel);
|
setExtraSelections(OtherSelection, QList<QTextEdit::ExtraSelection>() << sel);
|
||||||
viewport()->setCursor(Qt::PointingHandCursor);
|
viewport()->setCursor(Qt::PointingHandCursor);
|
||||||
@@ -4882,6 +4892,8 @@ void BaseTextEditorWidget::_q_matchParentheses()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QTextCharFormat &matchFormat
|
||||||
|
= baseTextDocument()->fontSettings().toTextCharFormat(C_PARENTHESES);
|
||||||
int animatePosition = -1;
|
int animatePosition = -1;
|
||||||
if (backwardMatch.hasSelection()) {
|
if (backwardMatch.hasSelection()) {
|
||||||
QTextEdit::ExtraSelection sel;
|
QTextEdit::ExtraSelection sel;
|
||||||
@@ -4892,7 +4904,7 @@ void BaseTextEditorWidget::_q_matchParentheses()
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
sel.cursor = backwardMatch;
|
sel.cursor = backwardMatch;
|
||||||
sel.format = d->m_matchFormat;
|
sel.format = matchFormat;
|
||||||
|
|
||||||
sel.cursor.setPosition(backwardMatch.selectionStart());
|
sel.cursor.setPosition(backwardMatch.selectionStart());
|
||||||
sel.cursor.setPosition(sel.cursor.position() + 1, QTextCursor::KeepAnchor);
|
sel.cursor.setPosition(sel.cursor.position() + 1, QTextCursor::KeepAnchor);
|
||||||
@@ -4916,7 +4928,7 @@ void BaseTextEditorWidget::_q_matchParentheses()
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
sel.cursor = forwardMatch;
|
sel.cursor = forwardMatch;
|
||||||
sel.format = d->m_matchFormat;
|
sel.format = matchFormat;
|
||||||
|
|
||||||
sel.cursor.setPosition(forwardMatch.selectionStart());
|
sel.cursor.setPosition(forwardMatch.selectionStart());
|
||||||
sel.cursor.setPosition(sel.cursor.position() + 1, QTextCursor::KeepAnchor);
|
sel.cursor.setPosition(sel.cursor.position() + 1, QTextCursor::KeepAnchor);
|
||||||
@@ -4948,8 +4960,8 @@ void BaseTextEditorWidget::_q_matchParentheses()
|
|||||||
d->m_animator = new BaseTextEditorAnimator(this);
|
d->m_animator = new BaseTextEditorAnimator(this);
|
||||||
d->m_animator->setPosition(animatePosition);
|
d->m_animator->setPosition(animatePosition);
|
||||||
QPalette pal;
|
QPalette pal;
|
||||||
pal.setBrush(QPalette::Text, d->m_matchFormat.foreground());
|
pal.setBrush(QPalette::Text, matchFormat.foreground());
|
||||||
pal.setBrush(QPalette::Base, d->m_matchFormat.background());
|
pal.setBrush(QPalette::Base, matchFormat.background());
|
||||||
d->m_animator->setData(font(), pal, document()->characterAt(d->m_animator->position()));
|
d->m_animator->setData(font(), pal, document()->characterAt(d->m_animator->position()));
|
||||||
connect(d->m_animator, SIGNAL(updateRequest(int,QPointF,QRectF)),
|
connect(d->m_animator, SIGNAL(updateRequest(int,QPointF,QRectF)),
|
||||||
this, SLOT(_q_animateUpdate(int,QPointF,QRectF)));
|
this, SLOT(_q_animateUpdate(int,QPointF,QRectF)));
|
||||||
@@ -5387,13 +5399,6 @@ void BaseTextEditorWidget::applyFontSettings()
|
|||||||
const QTextCharFormat textFormat = fs.toTextCharFormat(C_TEXT);
|
const QTextCharFormat textFormat = fs.toTextCharFormat(C_TEXT);
|
||||||
const QTextCharFormat selectionFormat = fs.toTextCharFormat(C_SELECTION);
|
const QTextCharFormat selectionFormat = fs.toTextCharFormat(C_SELECTION);
|
||||||
const QTextCharFormat lineNumberFormat = fs.toTextCharFormat(C_LINE_NUMBER);
|
const QTextCharFormat lineNumberFormat = fs.toTextCharFormat(C_LINE_NUMBER);
|
||||||
const QTextCharFormat searchResultFormat = fs.toTextCharFormat(C_SEARCH_RESULT);
|
|
||||||
d->m_searchScopeFormat = fs.toTextCharFormat(C_SEARCH_SCOPE);
|
|
||||||
const QTextCharFormat parenthesesFormat = fs.toTextCharFormat(C_PARENTHESES);
|
|
||||||
d->m_currentLineFormat = fs.toTextCharFormat(C_CURRENT_LINE);
|
|
||||||
d->m_currentLineNumberFormat = fs.toTextCharFormat(C_CURRENT_LINE_NUMBER);
|
|
||||||
d->m_linkFormat = fs.toTextCharFormat(C_LINK);
|
|
||||||
d->m_ifdefedOutFormat = fs.toTextCharFormat(C_DISABLED_CODE);
|
|
||||||
QFont font(textFormat.font());
|
QFont font(textFormat.font());
|
||||||
|
|
||||||
const QColor foreground = textFormat.foreground().color();
|
const QColor foreground = textFormat.foreground().color();
|
||||||
@@ -5421,18 +5426,6 @@ void BaseTextEditorWidget::applyFontSettings()
|
|||||||
lineNumberFormat.background().color() : background);
|
lineNumberFormat.background().color() : background);
|
||||||
d->m_extraArea->setPalette(ep);
|
d->m_extraArea->setPalette(ep);
|
||||||
|
|
||||||
// Search results
|
|
||||||
d->m_searchResultFormat.setBackground(searchResultFormat.background());
|
|
||||||
|
|
||||||
// Matching braces
|
|
||||||
d->m_matchFormat = parenthesesFormat;
|
|
||||||
|
|
||||||
// snippests
|
|
||||||
d->m_occurrencesFormat = fs.toTextCharFormat(C_OCCURRENCES);
|
|
||||||
d->m_occurrencesFormat.clearForeground();
|
|
||||||
d->m_occurrenceRenameFormat = fs.toTextCharFormat(C_OCCURRENCES_RENAME);
|
|
||||||
d->m_occurrenceRenameFormat.clearForeground();
|
|
||||||
|
|
||||||
slotUpdateExtraAreaWidth(); // Adjust to new font width
|
slotUpdateExtraAreaWidth(); // Adjust to new font width
|
||||||
updateCurrentLineHighlight(); // Make sure it takes the new color
|
updateCurrentLineHighlight(); // Make sure it takes the new color
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,6 @@ public:
|
|||||||
|
|
||||||
// parentheses matcher
|
// parentheses matcher
|
||||||
bool m_formatRange;
|
bool m_formatRange;
|
||||||
QTextCharFormat m_matchFormat;
|
|
||||||
QTextCharFormat m_mismatchFormat;
|
QTextCharFormat m_mismatchFormat;
|
||||||
QTimer m_parenthesesMatchingTimer;
|
QTimer m_parenthesesMatchingTimer;
|
||||||
// end parentheses matcher
|
// end parentheses matcher
|
||||||
@@ -150,8 +149,6 @@ public:
|
|||||||
TextEditorOverlay *m_searchResultOverlay;
|
TextEditorOverlay *m_searchResultOverlay;
|
||||||
bool snippetCheckCursor(const QTextCursor &cursor);
|
bool snippetCheckCursor(const QTextCursor &cursor);
|
||||||
void snippetTabOrBacktab(bool forward);
|
void snippetTabOrBacktab(bool forward);
|
||||||
QTextCharFormat m_occurrencesFormat;
|
|
||||||
QTextCharFormat m_occurrenceRenameFormat;
|
|
||||||
|
|
||||||
RefactorOverlay *m_refactorOverlay;
|
RefactorOverlay *m_refactorOverlay;
|
||||||
|
|
||||||
@@ -176,18 +173,11 @@ public:
|
|||||||
uint m_maybeFakeTooltipEvent : 1;
|
uint m_maybeFakeTooltipEvent : 1;
|
||||||
int m_visibleWrapColumn;
|
int m_visibleWrapColumn;
|
||||||
|
|
||||||
QTextCharFormat m_linkFormat;
|
|
||||||
BaseTextEditorWidget::Link m_currentLink;
|
BaseTextEditorWidget::Link m_currentLink;
|
||||||
bool m_linkPressed;
|
bool m_linkPressed;
|
||||||
|
|
||||||
QTextCharFormat m_ifdefedOutFormat;
|
|
||||||
|
|
||||||
QRegExp m_searchExpr;
|
QRegExp m_searchExpr;
|
||||||
Core::FindFlags m_findFlags;
|
Core::FindFlags m_findFlags;
|
||||||
QTextCharFormat m_searchResultFormat;
|
|
||||||
QTextCharFormat m_searchScopeFormat;
|
|
||||||
QTextCharFormat m_currentLineFormat;
|
|
||||||
QTextCharFormat m_currentLineNumberFormat;
|
|
||||||
void highlightSearchResults(const QTextBlock &block, TextEditorOverlay *overlay);
|
void highlightSearchResults(const QTextBlock &block, TextEditorOverlay *overlay);
|
||||||
QTimer m_delayedUpdateTimer;
|
QTimer m_delayedUpdateTimer;
|
||||||
|
|
||||||
|
|||||||
@@ -168,7 +168,17 @@ QTextCharFormat FontSettings::toTextCharFormat(TextStyle category) const
|
|||||||
tf.setFontStyleStrategy(m_antialias ? QFont::PreferAntialias : QFont::NoAntialias);
|
tf.setFontStyleStrategy(m_antialias ? QFont::PreferAntialias : QFont::NoAntialias);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f.foreground().isValid())
|
if (category == C_OCCURRENCES_UNUSED) {
|
||||||
|
tf.setUnderlineStyle(QTextCharFormat::WaveUnderline);
|
||||||
|
tf.setUnderlineColor(f.foreground());
|
||||||
|
tf.setToolTip(QCoreApplication::translate("FontSettings_C_OCCURRENCES_UNUSED",
|
||||||
|
"Unused variable"));
|
||||||
|
}
|
||||||
|
if (f.foreground().isValid()
|
||||||
|
&& category != C_OCCURRENCES
|
||||||
|
&& category != C_OCCURRENCES_RENAME
|
||||||
|
&& category != C_OCCURRENCES_UNUSED
|
||||||
|
&& category != C_SEARCH_RESULT)
|
||||||
tf.setForeground(f.foreground());
|
tf.setForeground(f.foreground());
|
||||||
if (f.background().isValid() && (category == C_TEXT || f.background() != m_scheme.formatFor(C_TEXT).background()))
|
if (f.background().isValid() && (category == C_TEXT || f.background() != m_scheme.formatFor(C_TEXT).background()))
|
||||||
tf.setBackground(f.background());
|
tf.setBackground(f.background());
|
||||||
|
|||||||
Reference in New Issue
Block a user