-rw-r--r-- | qt/qt-2.3.7.patch/qte237-all.patch | 7 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-iconviewspeed.patch | 7 |
2 files changed, 0 insertions, 14 deletions
diff --git a/qt/qt-2.3.7.patch/qte237-all.patch b/qt/qt-2.3.7.patch/qte237-all.patch index e3351a3..6f94211 100644 --- a/qt/qt-2.3.7.patch/qte237-all.patch +++ b/qt/qt-2.3.7.patch/qte237-all.patch @@ -79,519 +79,512 @@ diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared qt-2.3.7/configs/lin SYSCONF_LFLAGS = SYSCONF_LIBS = diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug --- qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static qt-2.3.7/configs/linux-generic_rtti-g++-static --- qt-2.3.7-old/configs/linux-generic_rtti-g++-static 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-static 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug qt-2.3.7/configs/linux-generic_rtti-g++-static-debug --- qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared qt-2.3.7/configs/linux-x86rtti-g++-shared --- qt-2.3.7-old/configs/linux-x86rtti-g++-shared 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-shared 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = -lm diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug qt-2.3.7/configs/linux-x86rtti-g++-shared-debug --- qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = -lm diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static qt-2.3.7/configs/linux-x86rtti-g++-static --- qt-2.3.7-old/configs/linux-x86rtti-g++-static 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-static 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = -lm diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug qt-2.3.7/configs/linux-x86rtti-g++-static-debug --- qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200 @@ -36,7 +36,7 @@ SYSCONF_LIBS_YACC = # Linking applications -SYSCONF_LINK = gcc +SYSCONF_LINK = g++ SYSCONF_LFLAGS = SYSCONF_LIBS = -lm diff -ur qt-2.3.7-old/include/qapplication.h qt-2.3.7/include/qapplication.h --- qt-2.3.7-old/include/qapplication.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qapplication.h 2004-07-23 15:25:42.000000000 +0200 @@ -61,6 +61,10 @@ class QSemaphore; #endif +#if !defined( QT_WEAK_SYMBOL ) +#define QT_WEAK_SYMBOL +#endif + // REMOVE IN 3.0 (just here for moc source compatibility) #define QNonBaseApplication QApplication @@ -85,7 +89,10 @@ #ifndef QT_NO_STYLE static QStyle &style(); - static void setStyle( QStyle* ); + static void setStyle( QStyle* ) QT_WEAK_SYMBOL; +private: + static void setStyle_NonWeak( QStyle* ); +public: #endif #if 1 /* OBSOLETE */ enum ColorMode { NormalColors, CustomColors }; @@ -106,11 +113,19 @@ #ifndef QT_NO_PALETTE static QPalette palette( const QWidget* = 0 ); static void setPalette( const QPalette &, bool informWidgets=FALSE, + const char* className = 0 ) QT_WEAK_SYMBOL; +private: + static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE, const char* className = 0 ); +public: #endif static QFont font( const QWidget* = 0 ); static void setFont( const QFont &, bool informWidgets=FALSE, + const char* className = 0 ) QT_WEAK_SYMBOL; +private: + static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE, const char* className = 0 ); +public: static QFontMetrics fontMetrics(); QWidget *mainWidget() const; @@ -207,7 +222,10 @@ void qwsSetCustomColors( QRgb *colortable, int start, int numColors ); #ifndef QT_NO_QWS_MANAGER static QWSDecoration &qwsDecoration(); - static void qwsSetDecoration( QWSDecoration *); + static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL; +private: + static void qwsSetDecoration_NonWeak( QWSDecoration *); +public: #endif #endif diff -ur qt-2.3.7-old/include/qcstring.h qt-2.3.7/include/qcstring.h --- qt-2.3.7-old/include/qcstring.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qcstring.h 2004-07-23 15:42:01.000000000 +0200 @@ -119,7 +119,7 @@ // We want to keep source compatibility for 2.x // ### TODO for 4.0: completely remove these and the cstr* functions -#if !defined(QT_GENUINE_STR) +#if 0 #undef strlen #define strlen qstrlen diff -ur qt-2.3.7-old/include/qfontdatabase.h qt-2.3.7/include/qfontdatabase.h --- qt-2.3.7-old/include/qfontdatabase.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qfontdatabase.h 2004-07-23 15:25:42.000000000 +0200 @@ -59,6 +59,10 @@ class QDiskFont; #endif +#if !defined( QT_WEAK_SYMBOL ) +#define QT_WEAK_SYMBOL +#endif + class QFontDatabasePrivate; class Q_EXPORT QFontDatabase @@ -67,9 +71,16 @@ QFontDatabase(); QStringList families( bool onlyForLocale = TRUE ) const; + + QValueList<int> pointSizes( const QString &family, const QString &style = QString::null, - const QString &charSet = QString::null ); + const QString &charSet = QString::null ) QT_WEAK_SYMBOL; +private: + QValueList<int> pointSizes_NonWeak( const QString &family, + const QString &style, + const QString &charSet ); +public: QStringList styles( const QString &family, const QString &charSet = QString::null ) const; QStringList charSets( const QString &familyName, diff -ur qt-2.3.7-old/include/qglobal.h qt-2.3.7/include/qglobal.h --- qt-2.3.7-old/include/qglobal.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qglobal.h 2004-07-23 15:42:01.000000000 +0200 @@ -207,8 +207,16 @@ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96 #define Q_FP_CCAST_BROKEN #endif +/* ARM gcc pads structs to 32 bits, even when they contain a single + char, or short. We tell gcc to pack QChars to 16 bits, to avoid + QString bloat. However, gcc 3.4 doesn't allow us to create references to + members of a packed struct. (Pointers are OK, because then you + supposedly know what you are doing.) */ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) #define Q_PACKED __attribute__ ((packed)) +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 +# define Q_NO_PACKED_REFERENCE +# endif #endif #elif defined(__xlC__) #define _CC_XLC_ diff -ur qt-2.3.7-old/include/qiconview.h qt-2.3.7/include/qiconview.h --- qt-2.3.7-old/include/qiconview.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qiconview.h 2004-07-23 15:45:34.000000000 +0200 @@ -444,6 +444,7 @@ virtual void contentsDropEvent( QDropEvent *e ); #endif + void bufferedPaintEvent( QPaintEvent* ); virtual void resizeEvent( QResizeEvent* e ); virtual void keyPressEvent( QKeyEvent *e ); virtual void focusInEvent( QFocusEvent *e ); diff -ur qt-2.3.7-old/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h --- qt-2.3.7-old/include/qsortedlist.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qsortedlist.h 2004-07-23 15:42:01.000000000 +0200 @@ -48,7 +48,7 @@ public: QSortedList() {} QSortedList( const QSortedList<type> &l ) : QList<type>(l) {} - ~QSortedList() { clear(); } + ~QSortedList() { this->clear(); } QSortedList<type> &operator=(const QSortedList<type> &l) { return (QSortedList<type>&)QList<type>::operator=(l); } diff -ur qt-2.3.7-old/include/qstring.h qt-2.3.7/include/qstring.h --- qt-2.3.7-old/include/qstring.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/include/qstring.h 2004-07-23 15:42:01.000000000 +0200 @@ -163,8 +163,16 @@ bool isLetterOrNumber() const; bool isDigit() const; + +#ifdef Q_NO_PACKED_REFERENCE + uchar& cell() { return *(&cl); } + uchar& row() { return *(&rw); } +#else uchar& cell() { return cl; } - uchar& row() { return rw; } + uchar& row() { return rw; } +#endif + + uchar cell() const { return cl; } uchar row() const { return rw; } diff -ur qt-2.3.7-old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp --- qt-2.3.7-old/src/iconview/qiconview.cpp 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/iconview/qiconview.cpp 2004-07-23 15:45:34.000000000 +0200 -@@ -1,5 +1,5 @@ - /**************************************************************************** --** $Id$ -+** $Id$ - ** - ** Implementation of QIconView widget class - ** @@ -220,6 +220,7 @@ QIconView::SelectionMode selectionMode; QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; QRect *rubber; + QPixmap *backBuffer; QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, *fullRedrawTimer; int rastX, rastY, spacing; @@ -2263,6 +2264,7 @@ d->currentItem = 0; d->highlightedItem = 0; d->rubber = 0; + d->backBuffer = 0; d->scrollTimer = 0; d->startDragItem = 0; d->tmpCurrentItem = 0; @@ -2411,6 +2413,8 @@ delete item; item = tmp; } + delete d->backBuffer; + d->backBuffer = 0; delete d->fm; d->fm = 0; #ifndef QT_NO_TOOLTIP @@ -2877,6 +2881,48 @@ } /*! + This function grabs all paintevents that otherwise would have been + processed by the QScrollView::viewportPaintEvent(). Here we use a + doublebuffer to reduce 'on-paint' flickering on QIconView + (and of course its childs). + + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() +*/ + +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) +{ + QWidget* vp = viewport(); + QRect r = pe->rect() & vp->rect(); + int ex = r.x() + contentsX(); + int ey = r.y() + contentsY(); + int ew = r.width(); + int eh = r.height(); + + if ( !d->backBuffer ) + d->backBuffer = new QPixmap(vp->size()); + if ( d->backBuffer->size() != vp->size() ) { + //Resize function (with hysteesis). Uses a good compromise between memory + //consumption and speed (number) of resizes. + float newWidth = (float)vp->width(); + float newHeight = (float)vp->height(); + if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) + { + newWidth *= 1.1892; + newHeight *= 1.1892; + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } + + QPainter p; + p.begin(d->backBuffer, vp); + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); + p.end(); + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); +} + +/*! + \reimp */ @@ -4855,7 +4901,7 @@ if ( !d->rubber ) drawDragShapes( d->oldDragPos ); } - viewportPaintEvent( (QPaintEvent*)e ); + bufferedPaintEvent ((QPaintEvent*)e ); if ( d->dragging ) { if ( !d->rubber ) drawDragShapes( d->oldDragPos ); @@ -5286,11 +5332,19 @@ return; if ( item->d->container1 && d->firstContainer ) { - item->d->container1->items.removeRef( item ); + //Special-case checking of the last item, since this may be + //called a few times for the same item. + if (item->d->container1->items.last() == item) + item->d->container1->items.removeLast(); + else + item->d->container1->items.removeRef( item ); } item->d->container1 = 0; if ( item->d->container2 && d->firstContainer ) { - item->d->container2->items.removeRef( item ); + if (item->d->container2->items.last() == item) + item->d->container2->items.removeLast(); + else + item->d->container2->items.removeRef( item ); } item->d->container2 = 0; diff -ur qt-2.3.7-old/src/iconview/qiconview.h qt-2.3.7/src/iconview/qiconview.h --- qt-2.3.7-old/src/iconview/qiconview.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/iconview/qiconview.h 2004-07-23 15:45:34.000000000 +0200 @@ -444,6 +444,7 @@ virtual void contentsDropEvent( QDropEvent *e ); #endif + void bufferedPaintEvent( QPaintEvent* ); virtual void resizeEvent( QResizeEvent* e ); virtual void keyPressEvent( QKeyEvent *e ); virtual void focusInEvent( QFocusEvent *e ); diff -ur qt-2.3.7-old/src/kernel/qapplication.cpp qt-2.3.7/src/kernel/qapplication.cpp --- qt-2.3.7-old/src/kernel/qapplication.cpp 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/kernel/qapplication.cpp 2004-07-23 15:25:42.000000000 +0200 @@ -35,6 +35,8 @@ ** **********************************************************************/ +#define QT_WEAK_SYMBOL __attribute__(( weak )) + #include "qobjectlist.h" #include "qobjectdict.h" #include "qapplication.h" @@ -933,11 +935,16 @@ #ifndef QT_NO_STYLE void QApplication::setStyle( QStyle *style ) { + setStyle_NonWeak ( style ); +} + +void QApplication::setStyle_NonWeak( QStyle *style ) +{ QStyle* old = app_style; - app_style = style; if ( startingUp() ) { delete old; + app_style = style; return; } @@ -958,6 +965,8 @@ old->unPolish( qApp ); } + app_style = style; + // take care of possible palette requirements of certain gui // styles. Do it before polishing the application since the style // might call QApplication::setStyle() itself @@ -1184,13 +1193,30 @@ \sa QWidget::setPalette(), palette(), QStyle::polish() */ -void QApplication::setPalette( const QPalette &palette, bool informWidgets, +void QApplication::setPalette ( const QPalette &palette, bool informWidgets, + const char* className ) +{ + setPalette_NonWeak ( palette, informWidgets, className ); +} + +void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets, const char* className ) { QPalette pal = palette; #ifndef QT_NO_STYLE - if ( !startingUp() ) + if ( !startingUp() ) { qApp->style().polish( pal ); // NB: non-const reference + if ( className ) { + // if we just polished a class specific palette (this normally + // only called by qt_fix_tooltips - see below), we better re- + // polish the global palette. Some styles like liquid can get + // confused, because they can not detect if the polished palette + // is the global one or only a class specific one. + // (liquid uses this palette to calculate blending pixmaps) + QPalette p = qApp-> palette ( ); + qApp->style().polish ( p ); + } + } #endif bool all = FALSE; if ( !className ) { @@ -1275,6 +1301,12 @@ void QApplication::setFont( const QFont &font, bool informWidgets, const char* className ) { + setFont_NonWeak ( font, informWidgets, className ); +} + +void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets, + const char* className ) +{ bool all = FALSE; if ( !className ) { if ( !app_font ) { diff -ur qt-2.3.7-old/src/kernel/qapplication.h qt-2.3.7/src/kernel/qapplication.h --- qt-2.3.7-old/src/kernel/qapplication.h 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/kernel/qapplication.h 2004-07-23 15:25:42.000000000 +0200 @@ -61,6 +61,10 @@ class QSemaphore; #endif +#if !defined( QT_WEAK_SYMBOL ) +#define QT_WEAK_SYMBOL +#endif + // REMOVE IN 3.0 (just here for moc source compatibility) #define QNonBaseApplication QApplication @@ -85,7 +89,10 @@ #ifndef QT_NO_STYLE static QStyle &style(); - static void setStyle( QStyle* ); + static void setStyle( QStyle* ) QT_WEAK_SYMBOL; +private: + static void setStyle_NonWeak( QStyle* ); +public: #endif #if 1 /* OBSOLETE */ enum ColorMode { NormalColors, CustomColors }; @@ -106,11 +113,19 @@ #ifndef QT_NO_PALETTE static QPalette palette( const QWidget* = 0 ); static void setPalette( const QPalette &, bool informWidgets=FALSE, + const char* className = 0 ) QT_WEAK_SYMBOL; +private: + static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE, const char* className = 0 ); +public: #endif static QFont font( const QWidget* = 0 ); static void setFont( const QFont &, bool informWidgets=FALSE, + const char* className = 0 ) QT_WEAK_SYMBOL; +private: + static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE, const char* className = 0 ); +public: static QFontMetrics fontMetrics(); QWidget *mainWidget() const; @@ -207,7 +222,10 @@ void qwsSetCustomColors( QRgb *colortable, int start, int numColors ); #ifndef QT_NO_QWS_MANAGER static QWSDecoration &qwsDecoration(); - static void qwsSetDecoration( QWSDecoration *); + static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL; +private: + static void qwsSetDecoration_NonWeak( QWSDecoration *); +public: diff --git a/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch index 63e45ec..81064e1 100644 --- a/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch +++ b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch @@ -1,149 +1,142 @@ Speed up patches backported from http://robotics.dei.unipd.it/~koral/KDE/kflicker.html and http://lists.kde.org/?l=kde-optimize&m=105382164111363&w=2 (complete thread) diff -u qt-2.3.7_old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp --- qt-2.3.7_old/src/iconview/qiconview.cpp 2004-06-13 22:29:56.000000000 +0200 +++ qt-2.3.7/src/iconview/qiconview.cpp 2004-06-13 22:33:32.000000000 +0200 -@@ -1,5 +1,5 @@ - /**************************************************************************** --** $Id$ -+** $Id$ - ** - ** Implementation of QIconView widget class - ** @@ -220,6 +220,7 @@ QIconView::SelectionMode selectionMode; QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; QRect *rubber; + QPixmap *backBuffer; QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, *fullRedrawTimer; int rastX, rastY, spacing; @@ -2263,6 +2264,7 @@ d->currentItem = 0; d->highlightedItem = 0; d->rubber = 0; + d->backBuffer = 0; d->scrollTimer = 0; d->startDragItem = 0; d->tmpCurrentItem = 0; @@ -2411,6 +2413,8 @@ delete item; item = tmp; } + delete d->backBuffer; + d->backBuffer = 0; delete d->fm; d->fm = 0; #ifndef QT_NO_TOOLTIP @@ -2877,6 +2881,48 @@ } /*! + This function grabs all paintevents that otherwise would have been + processed by the QScrollView::viewportPaintEvent(). Here we use a + doublebuffer to reduce 'on-paint' flickering on QIconView + (and of course its childs). + + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() +*/ + +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) +{ + QWidget* vp = viewport(); + QRect r = pe->rect() & vp->rect(); + int ex = r.x() + contentsX(); + int ey = r.y() + contentsY(); + int ew = r.width(); + int eh = r.height(); + + if ( !d->backBuffer ) + d->backBuffer = new QPixmap(vp->size()); + if ( d->backBuffer->size() != vp->size() ) { + //Resize function (with hysteesis). Uses a good compromise between memory + //consumption and speed (number) of resizes. + float newWidth = (float)vp->width(); + float newHeight = (float)vp->height(); + if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) + { + newWidth *= 1.1892; + newHeight *= 1.1892; + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) + d->backBuffer->resize( (int)newWidth, (int)newHeight ); + } + + QPainter p; + p.begin(d->backBuffer, vp); + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); + p.end(); + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); +} + +/*! + \reimp */ @@ -4855,7 +4901,7 @@ if ( !d->rubber ) drawDragShapes( d->oldDragPos ); } - viewportPaintEvent( (QPaintEvent*)e ); + bufferedPaintEvent ((QPaintEvent*)e ); if ( d->dragging ) { if ( !d->rubber ) drawDragShapes( d->oldDragPos ); @@ -5286,11 +5332,19 @@ return; if ( item->d->container1 && d->firstContainer ) { - item->d->container1->items.removeRef( item ); + //Special-case checking of the last item, since this may be + //called a few times for the same item. + if (item->d->container1->items.last() == item) + item->d->container1->items.removeLast(); + else + item->d->container1->items.removeRef( item ); } item->d->container1 = 0; if ( item->d->container2 && d->firstContainer ) { - item->d->container2->items.removeRef( item ); + if (item->d->container2->items.last() == item) + item->d->container2->items.removeLast(); + else + item->d->container2->items.removeRef( item ); } item->d->container2 = 0; diff -u qt-2.3.7_old/src/iconview/qiconview.h qt-2.3.7/src/iconview/qiconview.h --- qt-2.3.7_old/src/iconview/qiconview.h 2004-06-13 22:29:56.000000000 +0200 +++ qt-2.3.7/src/iconview/qiconview.h 2004-06-13 22:33:32.000000000 +0200 @@ -444,6 +444,7 @@ virtual void contentsDropEvent( QDropEvent *e ); #endif + void bufferedPaintEvent( QPaintEvent* ); virtual void resizeEvent( QResizeEvent* e ); virtual void keyPressEvent( QKeyEvent *e ); virtual void focusInEvent( QFocusEvent *e ); --- qt-2.3.7-old/src/widgets/qscrollview.cpp 2004-07-23 15:22:56.000000000 +0200 +++ qt-2.3.7/src/widgets/qscrollview.cpp 2004-07-23 19:23:10.000000000 +0200 @@ -1266,6 +1277,9 @@ case QEvent::LayoutHint: d->autoResizeHint(this); break; + case QEvent::WindowActivate: + case QEvent::WindowDeactivate: + return TRUE; default: break; } |