author | ar <ar> | 2004-07-23 20:11:03 (UTC) |
---|---|---|
committer | ar <ar> | 2004-07-23 20:11:03 (UTC) |
commit | a807ba26df5f4fe7c50f6e0e1420d4b0d7c3add8 (patch) (unidiff) | |
tree | 36b7b7ab471b5dc43cb6b92f725d99541baff108 | |
parent | f9499e14b777050f0bdb3821ca8421dd4c7231fd (diff) | |
download | opie-a807ba26df5f4fe7c50f6e0e1420d4b0d7c3add8.zip opie-a807ba26df5f4fe7c50f6e0e1420d4b0d7c3add8.tar.gz opie-a807ba26df5f4fe7c50f6e0e1420d4b0d7c3add8.tar.bz2 |
- make patch patcheable :)
-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 | |||
@@ -239,199 +239,192 @@ diff -ur qt-2.3.7-old/include/qfontdatabase.h qt-2.3.7/include/qfontdatabase.h | |||
239 | @@ -59,6 +59,10 @@ | 239 | @@ -59,6 +59,10 @@ |
240 | class QDiskFont; | 240 | class QDiskFont; |
241 | #endif | 241 | #endif |
242 | 242 | ||
243 | +#if !defined( QT_WEAK_SYMBOL ) | 243 | +#if !defined( QT_WEAK_SYMBOL ) |
244 | +#define QT_WEAK_SYMBOL | 244 | +#define QT_WEAK_SYMBOL |
245 | +#endif | 245 | +#endif |
246 | + | 246 | + |
247 | class QFontDatabasePrivate; | 247 | class QFontDatabasePrivate; |
248 | 248 | ||
249 | class Q_EXPORT QFontDatabase | 249 | class Q_EXPORT QFontDatabase |
250 | @@ -67,9 +71,16 @@ | 250 | @@ -67,9 +71,16 @@ |
251 | QFontDatabase(); | 251 | QFontDatabase(); |
252 | 252 | ||
253 | QStringList families( bool onlyForLocale = TRUE ) const; | 253 | QStringList families( bool onlyForLocale = TRUE ) const; |
254 | + | 254 | + |
255 | + | 255 | + |
256 | QValueList<int> pointSizes( const QString &family, | 256 | QValueList<int> pointSizes( const QString &family, |
257 | const QString &style = QString::null, | 257 | const QString &style = QString::null, |
258 | - const QString &charSet = QString::null ); | 258 | - const QString &charSet = QString::null ); |
259 | + const QString &charSet = QString::null ) QT_WEAK_SYMBOL; | 259 | + const QString &charSet = QString::null ) QT_WEAK_SYMBOL; |
260 | +private: | 260 | +private: |
261 | + QValueList<int> pointSizes_NonWeak( const QString &family, | 261 | + QValueList<int> pointSizes_NonWeak( const QString &family, |
262 | + const QString &style, | 262 | + const QString &style, |
263 | + const QString &charSet ); | 263 | + const QString &charSet ); |
264 | +public: | 264 | +public: |
265 | QStringList styles( const QString &family, | 265 | QStringList styles( const QString &family, |
266 | const QString &charSet = QString::null ) const; | 266 | const QString &charSet = QString::null ) const; |
267 | QStringList charSets( const QString &familyName, | 267 | QStringList charSets( const QString &familyName, |
268 | diff -ur qt-2.3.7-old/include/qglobal.h qt-2.3.7/include/qglobal.h | 268 | diff -ur qt-2.3.7-old/include/qglobal.h qt-2.3.7/include/qglobal.h |
269 | --- qt-2.3.7-old/include/qglobal.h2004-07-23 15:22:56.000000000 +0200 | 269 | --- qt-2.3.7-old/include/qglobal.h2004-07-23 15:22:56.000000000 +0200 |
270 | +++ qt-2.3.7/include/qglobal.h2004-07-23 15:42:01.000000000 +0200 | 270 | +++ qt-2.3.7/include/qglobal.h2004-07-23 15:42:01.000000000 +0200 |
271 | @@ -207,8 +207,16 @@ | 271 | @@ -207,8 +207,16 @@ |
272 | #if __GNUC__ == 2 && __GNUC_MINOR__ == 96 | 272 | #if __GNUC__ == 2 && __GNUC_MINOR__ == 96 |
273 | #define Q_FP_CCAST_BROKEN | 273 | #define Q_FP_CCAST_BROKEN |
274 | #endif | 274 | #endif |
275 | +/* ARM gcc pads structs to 32 bits, even when they contain a single | 275 | +/* ARM gcc pads structs to 32 bits, even when they contain a single |
276 | + char, or short. We tell gcc to pack QChars to 16 bits, to avoid | 276 | + char, or short. We tell gcc to pack QChars to 16 bits, to avoid |
277 | + QString bloat. However, gcc 3.4 doesn't allow us to create references to | 277 | + QString bloat. However, gcc 3.4 doesn't allow us to create references to |
278 | + members of a packed struct. (Pointers are OK, because then you | 278 | + members of a packed struct. (Pointers are OK, because then you |
279 | + supposedly know what you are doing.) */ | 279 | + supposedly know what you are doing.) */ |
280 | #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) | 280 | #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) |
281 | #define Q_PACKED __attribute__ ((packed)) | 281 | #define Q_PACKED __attribute__ ((packed)) |
282 | +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 | 282 | +# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 |
283 | +# define Q_NO_PACKED_REFERENCE | 283 | +# define Q_NO_PACKED_REFERENCE |
284 | +# endif | 284 | +# endif |
285 | #endif | 285 | #endif |
286 | #elif defined(__xlC__) | 286 | #elif defined(__xlC__) |
287 | #define _CC_XLC_ | 287 | #define _CC_XLC_ |
288 | diff -ur qt-2.3.7-old/include/qiconview.h qt-2.3.7/include/qiconview.h | 288 | diff -ur qt-2.3.7-old/include/qiconview.h qt-2.3.7/include/qiconview.h |
289 | --- qt-2.3.7-old/include/qiconview.h2004-07-23 15:22:56.000000000 +0200 | 289 | --- qt-2.3.7-old/include/qiconview.h2004-07-23 15:22:56.000000000 +0200 |
290 | +++ qt-2.3.7/include/qiconview.h2004-07-23 15:45:34.000000000 +0200 | 290 | +++ qt-2.3.7/include/qiconview.h2004-07-23 15:45:34.000000000 +0200 |
291 | @@ -444,6 +444,7 @@ | 291 | @@ -444,6 +444,7 @@ |
292 | virtual void contentsDropEvent( QDropEvent *e ); | 292 | virtual void contentsDropEvent( QDropEvent *e ); |
293 | #endif | 293 | #endif |
294 | 294 | ||
295 | + void bufferedPaintEvent( QPaintEvent* ); | 295 | + void bufferedPaintEvent( QPaintEvent* ); |
296 | virtual void resizeEvent( QResizeEvent* e ); | 296 | virtual void resizeEvent( QResizeEvent* e ); |
297 | virtual void keyPressEvent( QKeyEvent *e ); | 297 | virtual void keyPressEvent( QKeyEvent *e ); |
298 | virtual void focusInEvent( QFocusEvent *e ); | 298 | virtual void focusInEvent( QFocusEvent *e ); |
299 | diff -ur qt-2.3.7-old/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h | 299 | diff -ur qt-2.3.7-old/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h |
300 | --- qt-2.3.7-old/include/qsortedlist.h2004-07-23 15:22:56.000000000 +0200 | 300 | --- qt-2.3.7-old/include/qsortedlist.h2004-07-23 15:22:56.000000000 +0200 |
301 | +++ qt-2.3.7/include/qsortedlist.h2004-07-23 15:42:01.000000000 +0200 | 301 | +++ qt-2.3.7/include/qsortedlist.h2004-07-23 15:42:01.000000000 +0200 |
302 | @@ -48,7 +48,7 @@ | 302 | @@ -48,7 +48,7 @@ |
303 | public: | 303 | public: |
304 | QSortedList() {} | 304 | QSortedList() {} |
305 | QSortedList( const QSortedList<type> &l ) : QList<type>(l) {} | 305 | QSortedList( const QSortedList<type> &l ) : QList<type>(l) {} |
306 | - ~QSortedList() { clear(); } | 306 | - ~QSortedList() { clear(); } |
307 | + ~QSortedList() { this->clear(); } | 307 | + ~QSortedList() { this->clear(); } |
308 | QSortedList<type> &operator=(const QSortedList<type> &l) | 308 | QSortedList<type> &operator=(const QSortedList<type> &l) |
309 | { return (QSortedList<type>&)QList<type>::operator=(l); } | 309 | { return (QSortedList<type>&)QList<type>::operator=(l); } |
310 | 310 | ||
311 | diff -ur qt-2.3.7-old/include/qstring.h qt-2.3.7/include/qstring.h | 311 | diff -ur qt-2.3.7-old/include/qstring.h qt-2.3.7/include/qstring.h |
312 | --- qt-2.3.7-old/include/qstring.h2004-07-23 15:22:56.000000000 +0200 | 312 | --- qt-2.3.7-old/include/qstring.h2004-07-23 15:22:56.000000000 +0200 |
313 | +++ qt-2.3.7/include/qstring.h2004-07-23 15:42:01.000000000 +0200 | 313 | +++ qt-2.3.7/include/qstring.h2004-07-23 15:42:01.000000000 +0200 |
314 | @@ -163,8 +163,16 @@ | 314 | @@ -163,8 +163,16 @@ |
315 | bool isLetterOrNumber() const; | 315 | bool isLetterOrNumber() const; |
316 | bool isDigit() const; | 316 | bool isDigit() const; |
317 | 317 | ||
318 | + | 318 | + |
319 | +#ifdef Q_NO_PACKED_REFERENCE | 319 | +#ifdef Q_NO_PACKED_REFERENCE |
320 | + uchar& cell() { return *(&cl); } | 320 | + uchar& cell() { return *(&cl); } |
321 | + uchar& row() { return *(&rw); } | 321 | + uchar& row() { return *(&rw); } |
322 | +#else | 322 | +#else |
323 | uchar& cell() { return cl; } | 323 | uchar& cell() { return cl; } |
324 | - uchar& row() { return rw; } | 324 | - uchar& row() { return rw; } |
325 | + uchar& row() { return rw; } | 325 | + uchar& row() { return rw; } |
326 | +#endif | 326 | +#endif |
327 | + | 327 | + |
328 | + | 328 | + |
329 | uchar cell() const { return cl; } | 329 | uchar cell() const { return cl; } |
330 | uchar row() const { return rw; } | 330 | uchar row() const { return rw; } |
331 | 331 | ||
332 | diff -ur qt-2.3.7-old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp | 332 | diff -ur qt-2.3.7-old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp |
333 | --- qt-2.3.7-old/src/iconview/qiconview.cpp2004-07-23 15:22:56.000000000 +0200 | 333 | --- qt-2.3.7-old/src/iconview/qiconview.cpp2004-07-23 15:22:56.000000000 +0200 |
334 | +++ qt-2.3.7/src/iconview/qiconview.cpp2004-07-23 15:45:34.000000000 +0200 | 334 | +++ qt-2.3.7/src/iconview/qiconview.cpp2004-07-23 15:45:34.000000000 +0200 |
335 | @@ -1,5 +1,5 @@ | ||
336 | /**************************************************************************** | ||
337 | -** $Id$ | ||
338 | +** $Id$ | ||
339 | ** | ||
340 | ** Implementation of QIconView widget class | ||
341 | ** | ||
342 | @@ -220,6 +220,7 @@ | 335 | @@ -220,6 +220,7 @@ |
343 | QIconView::SelectionMode selectionMode; | 336 | QIconView::SelectionMode selectionMode; |
344 | QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; | 337 | QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; |
345 | QRect *rubber; | 338 | QRect *rubber; |
346 | + QPixmap *backBuffer; | 339 | + QPixmap *backBuffer; |
347 | QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, | 340 | QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, |
348 | *fullRedrawTimer; | 341 | *fullRedrawTimer; |
349 | int rastX, rastY, spacing; | 342 | int rastX, rastY, spacing; |
350 | @@ -2263,6 +2264,7 @@ | 343 | @@ -2263,6 +2264,7 @@ |
351 | d->currentItem = 0; | 344 | d->currentItem = 0; |
352 | d->highlightedItem = 0; | 345 | d->highlightedItem = 0; |
353 | d->rubber = 0; | 346 | d->rubber = 0; |
354 | + d->backBuffer = 0; | 347 | + d->backBuffer = 0; |
355 | d->scrollTimer = 0; | 348 | d->scrollTimer = 0; |
356 | d->startDragItem = 0; | 349 | d->startDragItem = 0; |
357 | d->tmpCurrentItem = 0; | 350 | d->tmpCurrentItem = 0; |
358 | @@ -2411,6 +2413,8 @@ | 351 | @@ -2411,6 +2413,8 @@ |
359 | delete item; | 352 | delete item; |
360 | item = tmp; | 353 | item = tmp; |
361 | } | 354 | } |
362 | + delete d->backBuffer; | 355 | + delete d->backBuffer; |
363 | + d->backBuffer = 0; | 356 | + d->backBuffer = 0; |
364 | delete d->fm; | 357 | delete d->fm; |
365 | d->fm = 0; | 358 | d->fm = 0; |
366 | #ifndef QT_NO_TOOLTIP | 359 | #ifndef QT_NO_TOOLTIP |
367 | @@ -2877,6 +2881,48 @@ | 360 | @@ -2877,6 +2881,48 @@ |
368 | } | 361 | } |
369 | 362 | ||
370 | /*! | 363 | /*! |
371 | + This function grabs all paintevents that otherwise would have been | 364 | + This function grabs all paintevents that otherwise would have been |
372 | + processed by the QScrollView::viewportPaintEvent(). Here we use a | 365 | + processed by the QScrollView::viewportPaintEvent(). Here we use a |
373 | + doublebuffer to reduce 'on-paint' flickering on QIconView | 366 | + doublebuffer to reduce 'on-paint' flickering on QIconView |
374 | + (and of course its childs). | 367 | + (and of course its childs). |
375 | + | 368 | + |
376 | + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() | 369 | + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() |
377 | +*/ | 370 | +*/ |
378 | + | 371 | + |
379 | +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) | 372 | +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) |
380 | +{ | 373 | +{ |
381 | + QWidget* vp = viewport(); | 374 | + QWidget* vp = viewport(); |
382 | + QRect r = pe->rect() & vp->rect(); | 375 | + QRect r = pe->rect() & vp->rect(); |
383 | + int ex = r.x() + contentsX(); | 376 | + int ex = r.x() + contentsX(); |
384 | + int ey = r.y() + contentsY(); | 377 | + int ey = r.y() + contentsY(); |
385 | + int ew = r.width(); | 378 | + int ew = r.width(); |
386 | + int eh = r.height(); | 379 | + int eh = r.height(); |
387 | + | 380 | + |
388 | + if ( !d->backBuffer ) | 381 | + if ( !d->backBuffer ) |
389 | +d->backBuffer = new QPixmap(vp->size()); | 382 | +d->backBuffer = new QPixmap(vp->size()); |
390 | + if ( d->backBuffer->size() != vp->size() ) { | 383 | + if ( d->backBuffer->size() != vp->size() ) { |
391 | +//Resize function (with hysteesis). Uses a good compromise between memory | 384 | +//Resize function (with hysteesis). Uses a good compromise between memory |
392 | +//consumption and speed (number) of resizes. | 385 | +//consumption and speed (number) of resizes. |
393 | + float newWidth = (float)vp->width(); | 386 | + float newWidth = (float)vp->width(); |
394 | +float newHeight = (float)vp->height(); | 387 | +float newHeight = (float)vp->height(); |
395 | +if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) | 388 | +if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) |
396 | +{ | 389 | +{ |
397 | + newWidth *= 1.1892; | 390 | + newWidth *= 1.1892; |
398 | + newHeight *= 1.1892; | 391 | + newHeight *= 1.1892; |
399 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); | 392 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); |
400 | +} else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) | 393 | +} else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) |
401 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); | 394 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); |
402 | + } | 395 | + } |
403 | + | 396 | + |
404 | + QPainter p; | 397 | + QPainter p; |
405 | + p.begin(d->backBuffer, vp); | 398 | + p.begin(d->backBuffer, vp); |
406 | + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); | 399 | + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); |
407 | + p.end(); | 400 | + p.end(); |
408 | + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); | 401 | + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); |
409 | +} | 402 | +} |
410 | + | 403 | + |
411 | +/*! | 404 | +/*! |
412 | + | 405 | + |
413 | \reimp | 406 | \reimp |
414 | */ | 407 | */ |
415 | 408 | ||
416 | @@ -4855,7 +4901,7 @@ | 409 | @@ -4855,7 +4901,7 @@ |
417 | if ( !d->rubber ) | 410 | if ( !d->rubber ) |
418 | drawDragShapes( d->oldDragPos ); | 411 | drawDragShapes( d->oldDragPos ); |
419 | } | 412 | } |
420 | - viewportPaintEvent( (QPaintEvent*)e ); | 413 | - viewportPaintEvent( (QPaintEvent*)e ); |
421 | + bufferedPaintEvent ((QPaintEvent*)e ); | 414 | + bufferedPaintEvent ((QPaintEvent*)e ); |
422 | if ( d->dragging ) { | 415 | if ( d->dragging ) { |
423 | if ( !d->rubber ) | 416 | if ( !d->rubber ) |
424 | drawDragShapes( d->oldDragPos ); | 417 | drawDragShapes( d->oldDragPos ); |
425 | @@ -5286,11 +5332,19 @@ | 418 | @@ -5286,11 +5332,19 @@ |
426 | return; | 419 | return; |
427 | 420 | ||
428 | if ( item->d->container1 && d->firstContainer ) { | 421 | if ( item->d->container1 && d->firstContainer ) { |
429 | -item->d->container1->items.removeRef( item ); | 422 | -item->d->container1->items.removeRef( item ); |
430 | + //Special-case checking of the last item, since this may be | 423 | + //Special-case checking of the last item, since this may be |
431 | + //called a few times for the same item. | 424 | + //called a few times for the same item. |
432 | + if (item->d->container1->items.last() == item) | 425 | + if (item->d->container1->items.last() == item) |
433 | + item->d->container1->items.removeLast(); | 426 | + item->d->container1->items.removeLast(); |
434 | + else | 427 | + else |
435 | + item->d->container1->items.removeRef( item ); | 428 | + item->d->container1->items.removeRef( item ); |
436 | } | 429 | } |
437 | item->d->container1 = 0; | 430 | item->d->container1 = 0; |
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,117 +1,110 @@ | |||
1 | Speed up patches backported from | 1 | Speed up patches backported from |
2 | 2 | ||
3 | http://robotics.dei.unipd.it/~koral/KDE/kflicker.html | 3 | http://robotics.dei.unipd.it/~koral/KDE/kflicker.html |
4 | 4 | ||
5 | and | 5 | and |
6 | 6 | ||
7 | http://lists.kde.org/?l=kde-optimize&m=105382164111363&w=2 (complete thread) | 7 | http://lists.kde.org/?l=kde-optimize&m=105382164111363&w=2 (complete thread) |
8 | 8 | ||
9 | 9 | ||
10 | 10 | ||
11 | 11 | ||
12 | diff -u qt-2.3.7_old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp | 12 | diff -u qt-2.3.7_old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp |
13 | --- qt-2.3.7_old/src/iconview/qiconview.cpp2004-06-13 22:29:56.000000000 +0200 | 13 | --- qt-2.3.7_old/src/iconview/qiconview.cpp2004-06-13 22:29:56.000000000 +0200 |
14 | +++ qt-2.3.7/src/iconview/qiconview.cpp2004-06-13 22:33:32.000000000 +0200 | 14 | +++ qt-2.3.7/src/iconview/qiconview.cpp2004-06-13 22:33:32.000000000 +0200 |
15 | @@ -1,5 +1,5 @@ | ||
16 | /**************************************************************************** | ||
17 | -** $Id$ | ||
18 | +** $Id$ | ||
19 | ** | ||
20 | ** Implementation of QIconView widget class | ||
21 | ** | ||
22 | @@ -220,6 +220,7 @@ | 15 | @@ -220,6 +220,7 @@ |
23 | QIconView::SelectionMode selectionMode; | 16 | QIconView::SelectionMode selectionMode; |
24 | QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; | 17 | QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor; |
25 | QRect *rubber; | 18 | QRect *rubber; |
26 | + QPixmap *backBuffer; | 19 | + QPixmap *backBuffer; |
27 | QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, | 20 | QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer, |
28 | *fullRedrawTimer; | 21 | *fullRedrawTimer; |
29 | int rastX, rastY, spacing; | 22 | int rastX, rastY, spacing; |
30 | @@ -2263,6 +2264,7 @@ | 23 | @@ -2263,6 +2264,7 @@ |
31 | d->currentItem = 0; | 24 | d->currentItem = 0; |
32 | d->highlightedItem = 0; | 25 | d->highlightedItem = 0; |
33 | d->rubber = 0; | 26 | d->rubber = 0; |
34 | + d->backBuffer = 0; | 27 | + d->backBuffer = 0; |
35 | d->scrollTimer = 0; | 28 | d->scrollTimer = 0; |
36 | d->startDragItem = 0; | 29 | d->startDragItem = 0; |
37 | d->tmpCurrentItem = 0; | 30 | d->tmpCurrentItem = 0; |
38 | @@ -2411,6 +2413,8 @@ | 31 | @@ -2411,6 +2413,8 @@ |
39 | delete item; | 32 | delete item; |
40 | item = tmp; | 33 | item = tmp; |
41 | } | 34 | } |
42 | + delete d->backBuffer; | 35 | + delete d->backBuffer; |
43 | + d->backBuffer = 0; | 36 | + d->backBuffer = 0; |
44 | delete d->fm; | 37 | delete d->fm; |
45 | d->fm = 0; | 38 | d->fm = 0; |
46 | #ifndef QT_NO_TOOLTIP | 39 | #ifndef QT_NO_TOOLTIP |
47 | @@ -2877,6 +2881,48 @@ | 40 | @@ -2877,6 +2881,48 @@ |
48 | } | 41 | } |
49 | 42 | ||
50 | /*! | 43 | /*! |
51 | + This function grabs all paintevents that otherwise would have been | 44 | + This function grabs all paintevents that otherwise would have been |
52 | + processed by the QScrollView::viewportPaintEvent(). Here we use a | 45 | + processed by the QScrollView::viewportPaintEvent(). Here we use a |
53 | + doublebuffer to reduce 'on-paint' flickering on QIconView | 46 | + doublebuffer to reduce 'on-paint' flickering on QIconView |
54 | + (and of course its childs). | 47 | + (and of course its childs). |
55 | + | 48 | + |
56 | + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() | 49 | + \sa QScrollView::viewportPaintEvent(), QIconView::drawContents() |
57 | +*/ | 50 | +*/ |
58 | + | 51 | + |
59 | +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) | 52 | +void QIconView::bufferedPaintEvent( QPaintEvent* pe ) |
60 | +{ | 53 | +{ |
61 | + QWidget* vp = viewport(); | 54 | + QWidget* vp = viewport(); |
62 | + QRect r = pe->rect() & vp->rect(); | 55 | + QRect r = pe->rect() & vp->rect(); |
63 | + int ex = r.x() + contentsX(); | 56 | + int ex = r.x() + contentsX(); |
64 | + int ey = r.y() + contentsY(); | 57 | + int ey = r.y() + contentsY(); |
65 | + int ew = r.width(); | 58 | + int ew = r.width(); |
66 | + int eh = r.height(); | 59 | + int eh = r.height(); |
67 | + | 60 | + |
68 | + if ( !d->backBuffer ) | 61 | + if ( !d->backBuffer ) |
69 | +d->backBuffer = new QPixmap(vp->size()); | 62 | +d->backBuffer = new QPixmap(vp->size()); |
70 | + if ( d->backBuffer->size() != vp->size() ) { | 63 | + if ( d->backBuffer->size() != vp->size() ) { |
71 | +//Resize function (with hysteesis). Uses a good compromise between memory | 64 | +//Resize function (with hysteesis). Uses a good compromise between memory |
72 | +//consumption and speed (number) of resizes. | 65 | +//consumption and speed (number) of resizes. |
73 | + float newWidth = (float)vp->width(); | 66 | + float newWidth = (float)vp->width(); |
74 | +float newHeight = (float)vp->height(); | 67 | +float newHeight = (float)vp->height(); |
75 | +if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) | 68 | +if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() ) |
76 | +{ | 69 | +{ |
77 | + newWidth *= 1.1892; | 70 | + newWidth *= 1.1892; |
78 | + newHeight *= 1.1892; | 71 | + newHeight *= 1.1892; |
79 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); | 72 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); |
80 | +} else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) | 73 | +} else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() ) |
81 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); | 74 | + d->backBuffer->resize( (int)newWidth, (int)newHeight ); |
82 | + } | 75 | + } |
83 | + | 76 | + |
84 | + QPainter p; | 77 | + QPainter p; |
85 | + p.begin(d->backBuffer, vp); | 78 | + p.begin(d->backBuffer, vp); |
86 | + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); | 79 | + drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh); |
87 | + p.end(); | 80 | + p.end(); |
88 | + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); | 81 | + bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh); |
89 | +} | 82 | +} |
90 | + | 83 | + |
91 | +/*! | 84 | +/*! |
92 | + | 85 | + |
93 | \reimp | 86 | \reimp |
94 | */ | 87 | */ |
95 | 88 | ||
96 | @@ -4855,7 +4901,7 @@ | 89 | @@ -4855,7 +4901,7 @@ |
97 | if ( !d->rubber ) | 90 | if ( !d->rubber ) |
98 | drawDragShapes( d->oldDragPos ); | 91 | drawDragShapes( d->oldDragPos ); |
99 | } | 92 | } |
100 | - viewportPaintEvent( (QPaintEvent*)e ); | 93 | - viewportPaintEvent( (QPaintEvent*)e ); |
101 | + bufferedPaintEvent ((QPaintEvent*)e ); | 94 | + bufferedPaintEvent ((QPaintEvent*)e ); |
102 | if ( d->dragging ) { | 95 | if ( d->dragging ) { |
103 | if ( !d->rubber ) | 96 | if ( !d->rubber ) |
104 | drawDragShapes( d->oldDragPos ); | 97 | drawDragShapes( d->oldDragPos ); |
105 | @@ -5286,11 +5332,19 @@ | 98 | @@ -5286,11 +5332,19 @@ |
106 | return; | 99 | return; |
107 | 100 | ||
108 | if ( item->d->container1 && d->firstContainer ) { | 101 | if ( item->d->container1 && d->firstContainer ) { |
109 | -item->d->container1->items.removeRef( item ); | 102 | -item->d->container1->items.removeRef( item ); |
110 | + //Special-case checking of the last item, since this may be | 103 | + //Special-case checking of the last item, since this may be |
111 | + //called a few times for the same item. | 104 | + //called a few times for the same item. |
112 | + if (item->d->container1->items.last() == item) | 105 | + if (item->d->container1->items.last() == item) |
113 | + item->d->container1->items.removeLast(); | 106 | + item->d->container1->items.removeLast(); |
114 | + else | 107 | + else |
115 | + item->d->container1->items.removeRef( item ); | 108 | + item->d->container1->items.removeRef( item ); |
116 | } | 109 | } |
117 | item->d->container1 = 0; | 110 | item->d->container1 = 0; |