Fixed Multicolumn view filtering item arrangement. This relates to bug 146.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/2/head
Michele Calgaro 10 years ago
parent 9974902237
commit 9655b0b845

@ -2347,14 +2347,15 @@ void QIconViewItem::checkRect()
When an item is inserted the QIconView allocates a position for it.
Existing items are rearranged if autoArrange() is TRUE. The
default arrangement is \c LeftToRight -- the QIconView fills up
the \e left-most column from top to bottom, then moves one column
\e right and fills that from top to bottom and so on. The
default arrangement is \c LeftToRight -- the QIconView fills
the \e top-most row from left to right, then moves one row \e down
and fills that row from left to right and so on. The
arrangement can be modified with any of the following approaches:
\list
\i Call setArrangement(), e.g. with \c TopToBottom which will fill
the \e top-most row from left to right, then moves one row \e down
and fills that row from left to right and so on.
\i Call setArrangement(), e.g. with \c TopToBottom which will fill up
the \e left-most column from top to bottom, then moves one column
\e right and fills that from top to bottom and so on.
\i Construct each QIconViewItem using a constructor which allows
you to specify which item the new one is to follow.
\i Call setSorting() or sort() to sort the items.
@ -6040,7 +6041,7 @@ QIconViewItem *QIconView::makeRowLayout( QIconViewItem *begin, int &y, bool &cha
}
} else { // -------------------------------- SOUTH ------------------------------
} else { // -------------------------------- TopToBottom ------------------------------
int x = y;
@ -6075,6 +6076,7 @@ QIconViewItem *QIconView::makeRowLayout( QIconViewItem *begin, int &y, bool &cha
// now move the items
item = begin;
QIconViewItem *prevVisibleItem = NULL;
for (;;) {
item->dirty = FALSE;
if ( d->itemTextPos == Bottom ) {
@ -6082,15 +6084,16 @@ QIconViewItem *QIconView::makeRowLayout( QIconViewItem *begin, int &y, bool &cha
changed = item->move( x + ( w - item->width() ) / 2, d->spacing ) || changed;
else
changed = item->move( x + ( w - item->width() ) / 2,
item->prev->y() + item->prev->height() + d->spacing ) || changed;
prevVisibleItem->y() + prevVisibleItem->height() + d->spacing ) || changed;
} else {
if ( item == begin )
changed = item->move( x, d->spacing ) || changed;
else
changed = item->move( x, item->prev->y() + item->prev->height() + d->spacing ) || changed;
changed = item->move( x, prevVisibleItem->y() + prevVisibleItem->height() + d->spacing ) || changed;
}
if ( item == end )
break;
prevVisibleItem = item;
item = item->next;
while (item && (item->isVisible() == FALSE)) {
item = item->next;

Loading…
Cancel
Save