Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/text/qsyntaxhighlighter.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    6666    void _q_reformatBlocks(int from, int charsRemoved, int charsAdded);
    6767    void reformatBlock(QTextBlock block);
     68   
     69    inline void rehighlight(QTextCursor &cursor, QTextCursor::MoveOperation operation) {
     70        QObject::disconnect(doc, SIGNAL(contentsChange(int,int,int)),
     71                            q_func(), SLOT(_q_reformatBlocks(int,int,int)));
     72        cursor.beginEditBlock();
     73        int from = cursor.position();
     74        cursor.movePosition(operation);
     75        _q_reformatBlocks(from, 0, cursor.position() - from);
     76        cursor.endEditBlock();
     77        QObject::connect(doc, SIGNAL(contentsChange(int,int,int)),
     78                         q_func(), SLOT(_q_reformatBlocks(int,int,int)));
     79    }
    6880
    6981    inline void _q_delayedRehighlight() {
     
    159171
    160172    int endPosition;
    161     QTextBlock lastBlock = doc->findBlock(from + charsAdded);
     173    QTextBlock lastBlock = doc->findBlock(from + charsAdded + (charsRemoved > 0 ? 1 : 0));
    162174    if (lastBlock.isValid())
    163175        endPosition = lastBlock.position() + lastBlock.length();
     
    208220    \since 4.1
    209221
    210     \ingroup text
     222    \ingroup richtext-processing
    211223
    212224    The QSyntaxHighlighter class is a base class for implementing
     
    356368    \since 4.2
    357369
    358     Redoes the highlighting of the whole document.
     370    Reapplies the highlighting to the whole document.
     371
     372    \sa rehighlightBlock()
    359373*/
    360374void QSyntaxHighlighter::rehighlight()
     
    364378        return;
    365379
    366     disconnect(d->doc, SIGNAL(contentsChange(int,int,int)),
    367                this, SLOT(_q_reformatBlocks(int,int,int)));
    368380    QTextCursor cursor(d->doc);
    369     cursor.beginEditBlock();
    370     cursor.movePosition(QTextCursor::End);
    371     d->_q_reformatBlocks(0, 0, cursor.position());
    372     cursor.endEditBlock();
    373     connect(d->doc, SIGNAL(contentsChange(int,int,int)),
    374             this, SLOT(_q_reformatBlocks(int,int,int)));
     381    d->rehighlight(cursor, QTextCursor::End);
     382}
     383
     384/*!
     385    \since 4.6
     386
     387    Reapplies the highlighting to the given QTextBlock \a block.
     388   
     389    \sa rehighlight()
     390*/
     391void QSyntaxHighlighter::rehighlightBlock(const QTextBlock &block)
     392{
     393    Q_D(QSyntaxHighlighter);
     394    if (!d->doc)
     395        return;
     396
     397    QTextCursor cursor(block);
     398    d->rehighlight(cursor, QTextCursor::EndOfBlock);
    375399}
    376400
Note: See TracChangeset for help on using the changeset viewer.