diff options
-rw-r--r-- | src/gui/text/qtextdocument.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index ddccfe5999..ab18fccee2 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -1547,15 +1547,9 @@ QTextCursor QTextDocument::find(const QRegExp &expr, const QTextCursor &cursor, #endif // QT_REGEXP #if QT_CONFIG(regularexpression) -static bool findInBlock(const QTextBlock &block, const QRegularExpression &expression, int offset, +static bool findInBlock(const QTextBlock &block, const QRegularExpression &expr, int offset, QTextDocument::FindFlags options, QTextCursor *cursor) { - QRegularExpression expr(expression); - if (!(options & QTextDocument::FindCaseSensitively)) - expr.setPatternOptions(expr.patternOptions() | QRegularExpression::CaseInsensitiveOption); - else - expr.setPatternOptions(expr.patternOptions() & ~QRegularExpression::CaseInsensitiveOption); - QString text = block.text(); text.replace(QChar::Nbsp, QLatin1Char(' ')); QRegularExpressionMatch match; @@ -1623,16 +1617,22 @@ QTextCursor QTextDocument::find(const QRegularExpression &expr, int from, FindFl QTextBlock block = d->blocksFind(pos); int blockOffset = pos - block.position(); + QRegularExpression expression(expr); + if (!(options & QTextDocument::FindCaseSensitively)) + expression.setPatternOptions(expr.patternOptions() | QRegularExpression::CaseInsensitiveOption); + else + expression.setPatternOptions(expr.patternOptions() & ~QRegularExpression::CaseInsensitiveOption); + if (!(options & FindBackward)) { while (block.isValid()) { - if (findInBlock(block, expr, blockOffset, options, &cursor)) + if (findInBlock(block, expression, blockOffset, options, &cursor)) return cursor; block = block.next(); blockOffset = 0; } } else { while (block.isValid()) { - if (findInBlock(block, expr, blockOffset, options, &cursor)) + if (findInBlock(block, expression, blockOffset, options, &cursor)) return cursor; block = block.previous(); blockOffset = block.length() - 1; |