forked from qt-creator/qt-creator
use new selection type for find scopes, draw shadow in overlay (not underlay)
This commit is contained in:
@@ -2092,10 +2092,12 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
|
|||||||
QAbstractTextDocumentLayout::PaintContext context = getPaintContext();
|
QAbstractTextDocumentLayout::PaintContext context = getPaintContext();
|
||||||
|
|
||||||
if (!d->m_findScope.isNull()) {
|
if (!d->m_findScope.isNull()) {
|
||||||
QAbstractTextDocumentLayout::Selection selection;
|
|
||||||
selection.format.setBackground(d->m_searchScopeFormat.background());
|
TextEditorOverlay *overlay = new TextEditorOverlay(this);
|
||||||
selection.cursor = d->m_findScope;
|
overlay->addOverlaySelection(d->m_findScope, d->m_searchScopeFormat.background().color().darker(120),
|
||||||
context.selections.prepend(selection);
|
d->m_searchScopeFormat.background().color());
|
||||||
|
overlay->paint(&painter, e->rect());
|
||||||
|
delete overlay;
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockSelectionData *blockSelection = 0;
|
BlockSelectionData *blockSelection = 0;
|
||||||
@@ -2146,6 +2148,7 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
|
|||||||
|
|
||||||
} // end first pass
|
} // end first pass
|
||||||
|
|
||||||
|
|
||||||
d->m_searchResultOverlay->fill(&painter,
|
d->m_searchResultOverlay->fill(&painter,
|
||||||
d->m_searchResultFormat.background().color(),
|
d->m_searchResultFormat.background().color(),
|
||||||
e->rect());
|
e->rect());
|
||||||
@@ -2978,13 +2981,25 @@ void BaseTextEditor::slotUpdateBlockNotify(const QTextBlock &block)
|
|||||||
/* an overlay might draw outside the block bounderies, force
|
/* an overlay might draw outside the block bounderies, force
|
||||||
complete viewport update */
|
complete viewport update */
|
||||||
viewport()->update();
|
viewport()->update();
|
||||||
} else if (block.previous().isValid() && block.userState() != block.previous().userState()) {
|
} else {
|
||||||
|
if (block.previous().isValid() && block.userState() != block.previous().userState()) {
|
||||||
/* The syntax highlighting state changes. This opens up for
|
/* The syntax highlighting state changes. This opens up for
|
||||||
the possibility that the paragraph has braces that support
|
the possibility that the paragraph has braces that support
|
||||||
code folding. In this case, do the save thing and also
|
code folding. In this case, do the save thing and also
|
||||||
update the previous block, which might contain a collapse
|
update the previous block, which might contain a collapse
|
||||||
box which now is invalid.*/
|
box which now is invalid.*/
|
||||||
emit requestBlockUpdate(block.previous());
|
emit requestBlockUpdate(block.previous());
|
||||||
|
}
|
||||||
|
if (!d->m_findScope.isNull()) {
|
||||||
|
if (block.position() < d->m_findScope.selectionEnd()
|
||||||
|
&& block.position()+block.length() >= d->m_findScope.selectionStart() ) {
|
||||||
|
QTextBlock b = block.document()->findBlock(d->m_findScope.selectionStart());
|
||||||
|
do {
|
||||||
|
emit requestBlockUpdate(b);
|
||||||
|
b = b.next();
|
||||||
|
} while (b.isValid() && b.position() < d->m_findScope.selectionEnd());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
blockRecursion = false;
|
blockRecursion = false;
|
||||||
}
|
}
|
||||||
|
@@ -308,6 +308,18 @@ void TextEditorOverlay::paintSelection(QPainter *painter,
|
|||||||
}
|
}
|
||||||
|
|
||||||
painter->setRenderHint(QPainter::Antialiasing);
|
painter->setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
if (selection.m_dropShadow) {
|
||||||
|
painter->save();
|
||||||
|
painter->translate(m_dropShadowWidth, m_dropShadowWidth);
|
||||||
|
|
||||||
|
QPainterPath clip = path;
|
||||||
|
clip.translate(-m_dropShadowWidth, -m_dropShadowWidth);
|
||||||
|
painter->setClipPath(clip.intersected(path));
|
||||||
|
painter->fillPath(path, QColor(0, 0, 0, 100));
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
|
||||||
pen.setJoinStyle(Qt::RoundJoin);
|
pen.setJoinStyle(Qt::RoundJoin);
|
||||||
painter->setPen(pen);
|
painter->setPen(pen);
|
||||||
painter->drawPath(path);
|
painter->drawPath(path);
|
||||||
@@ -328,11 +340,6 @@ void TextEditorOverlay::fillSelection(QPainter *painter,
|
|||||||
painter->save();
|
painter->save();
|
||||||
painter->translate(-.5, -.5);
|
painter->translate(-.5, -.5);
|
||||||
painter->setRenderHint(QPainter::Antialiasing);
|
painter->setRenderHint(QPainter::Antialiasing);
|
||||||
if (selection.m_dropShadow) {
|
|
||||||
painter->translate(m_dropShadowWidth, m_dropShadowWidth);
|
|
||||||
painter->fillPath(path, QColor(0, 0, 0, 100));
|
|
||||||
painter->translate(-m_dropShadowWidth, -m_dropShadowWidth);
|
|
||||||
}
|
|
||||||
painter->fillPath(path, color);
|
painter->fillPath(path, color);
|
||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user