|
|
@ -214,6 +214,7 @@ public:
|
|
|
|
QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem,
|
|
|
|
QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem,
|
|
|
|
*startDragItem, *pressedItem, *selectAnchor, *renamingItem;
|
|
|
|
*startDragItem, *pressedItem, *selectAnchor, *renamingItem;
|
|
|
|
QRect *rubber;
|
|
|
|
QRect *rubber;
|
|
|
|
|
|
|
|
QPixmap *backBuffer;
|
|
|
|
QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer,
|
|
|
|
QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer,
|
|
|
|
*fullRedrawTimer;
|
|
|
|
*fullRedrawTimer;
|
|
|
|
int rastX, rastY, spacing;
|
|
|
|
int rastX, rastY, spacing;
|
|
|
@ -2800,6 +2801,7 @@ QIconView::QIconView( QWidget *parent, const char *name, WFlags f )
|
|
|
|
d->currentItem = 0;
|
|
|
|
d->currentItem = 0;
|
|
|
|
d->highlightedItem = 0;
|
|
|
|
d->highlightedItem = 0;
|
|
|
|
d->rubber = 0;
|
|
|
|
d->rubber = 0;
|
|
|
|
|
|
|
|
d->backBuffer = 0;
|
|
|
|
d->scrollTimer = 0;
|
|
|
|
d->scrollTimer = 0;
|
|
|
|
d->startDragItem = 0;
|
|
|
|
d->startDragItem = 0;
|
|
|
|
d->tmpCurrentItem = 0;
|
|
|
|
d->tmpCurrentItem = 0;
|
|
|
@ -2953,6 +2955,8 @@ QIconView::~QIconView()
|
|
|
|
delete item;
|
|
|
|
delete item;
|
|
|
|
item = tmp;
|
|
|
|
item = tmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
delete d->backBuffer;
|
|
|
|
|
|
|
|
d->backBuffer = 0;
|
|
|
|
delete d->fm;
|
|
|
|
delete d->fm;
|
|
|
|
d->fm = 0;
|
|
|
|
d->fm = 0;
|
|
|
|
#ifndef QT_NO_TOOLTIP
|
|
|
|
#ifndef QT_NO_TOOLTIP
|
|
|
@ -4972,6 +4976,47 @@ void QIconView::contentsDropEvent( QDropEvent *e )
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
|
|
|
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 children).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\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 hysteresis). 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
|
|
|
|
\reimp
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -5756,7 +5801,7 @@ bool QIconView::eventFilter( QObject * o, QEvent * e )
|
|
|
|
if ( !d->rubber )
|
|
|
|
if ( !d->rubber )
|
|
|
|
drawDragShapes( d->oldDragPos );
|
|
|
|
drawDragShapes( d->oldDragPos );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
viewportPaintEvent( (QPaintEvent*)e );
|
|
|
|
bufferedPaintEvent( (QPaintEvent*)e );
|
|
|
|
if ( d->dragging ) {
|
|
|
|
if ( d->dragging ) {
|
|
|
|
if ( !d->rubber )
|
|
|
|
if ( !d->rubber )
|
|
|
|
drawDragShapes( d->oldDragPos );
|
|
|
|
drawDragShapes( d->oldDragPos );
|
|
|
|