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/painting/qregion_mac.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**
     
    156156    return rgnHandle;
    157157}
     158
     159/*!
     160    \internal
     161     Create's a RegionHandle, it's the caller's responsibility to release.
     162     Returns 0 if the QRegion overflows.
     163*/
     164RgnHandle QRegion::toQDRgnForUpdate_sys() const
     165{
     166    RgnHandle rgnHandle = qt_mac_get_rgn();
     167    if(d->qt_rgn && d->qt_rgn->numRects) {
     168        RgnHandle tmp_rgn = qt_mac_get_rgn();
     169        int n = d->qt_rgn->numRects;
     170        const QRect *qt_r = (n == 1) ? &d->qt_rgn->extents : d->qt_rgn->rects.constData();
     171        while (n--) {
     172
     173            // detect overflow. Tested for use with HIViewSetNeedsDisplayInRegion
     174            // in QWidgetPrivate::update_sys().
     175            enum { HIViewSetNeedsDisplayInRegionOverflow = 10000 }; // empirically determined conservative value
     176            if (qt_r->right() > HIViewSetNeedsDisplayInRegionOverflow || qt_r->bottom() > HIViewSetNeedsDisplayInRegionOverflow) {
     177                qt_mac_dispose_rgn(tmp_rgn);
     178                qt_mac_dispose_rgn(rgnHandle);
     179                return 0;
     180            }
     181
     182            SetRectRgn(tmp_rgn,
     183                       qMax(SHRT_MIN, qt_r->x()),
     184                       qMax(SHRT_MIN, qt_r->y()),
     185                       qMin(SHRT_MAX, qt_r->right() + 1),
     186                       qMin(SHRT_MAX, qt_r->bottom() + 1));
     187            UnionRgn(rgnHandle, tmp_rgn, rgnHandle);
     188            ++qt_r;
     189        }
     190        qt_mac_dispose_rgn(tmp_rgn);
     191    }
     192    return rgnHandle;
     193}
     194
    158195#endif
    159196
Note: See TracChangeset for help on using the changeset viewer.