forked from qt-creator/qt-creator
TextEditor: move setIfdefedOutBlocks to TextDocument
The location of the blocks to marked ifdefed out are not tied to a specific editor instance, but just depend on the document content. Change-Id: I837730dc00e1d6060dd46bbb2cfccbfa5f72e6ce Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -6795,56 +6795,6 @@ QString TextEditorWidget::extraSelectionTooltip(int pos) const
|
||||
return QString();
|
||||
}
|
||||
|
||||
// the blocks list must be sorted
|
||||
void TextEditorWidget::setIfdefedOutBlocks(const QList<BlockRange> &blocks)
|
||||
{
|
||||
QTextDocument *doc = document();
|
||||
auto documentLayout = qobject_cast<TextDocumentLayout*>(doc->documentLayout());
|
||||
QTC_ASSERT(documentLayout, return);
|
||||
|
||||
bool needUpdate = false;
|
||||
|
||||
QTextBlock block = doc->firstBlock();
|
||||
|
||||
int rangeNumber = 0;
|
||||
int braceDepthDelta = 0;
|
||||
while (block.isValid()) {
|
||||
bool cleared = false;
|
||||
bool set = false;
|
||||
if (rangeNumber < blocks.size()) {
|
||||
const BlockRange &range = blocks.at(rangeNumber);
|
||||
if (block.position() >= range.first()
|
||||
&& ((block.position() + block.length() - 1) <= range.last() || !range.last()))
|
||||
set = TextDocumentLayout::setIfdefedOut(block);
|
||||
else
|
||||
cleared = TextDocumentLayout::clearIfdefedOut(block);
|
||||
if (block.contains(range.last()))
|
||||
++rangeNumber;
|
||||
} else {
|
||||
cleared = TextDocumentLayout::clearIfdefedOut(block);
|
||||
}
|
||||
|
||||
if (cleared || set) {
|
||||
needUpdate = true;
|
||||
int delta = TextDocumentLayout::braceDepthDelta(block);
|
||||
if (cleared)
|
||||
braceDepthDelta += delta;
|
||||
else if (set)
|
||||
braceDepthDelta -= delta;
|
||||
}
|
||||
|
||||
if (braceDepthDelta) {
|
||||
TextDocumentLayout::changeBraceDepth(block,braceDepthDelta);
|
||||
TextDocumentLayout::changeFoldingIndent(block, braceDepthDelta); // ### C++ only, refactor!
|
||||
}
|
||||
|
||||
block = block.next();
|
||||
}
|
||||
|
||||
if (needUpdate)
|
||||
documentLayout->requestUpdate();
|
||||
}
|
||||
|
||||
void TextEditorWidget::autoIndent()
|
||||
{
|
||||
MultiTextCursor cursor = multiTextCursor();
|
||||
|
||||
Reference in New Issue
Block a user