diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2015-01-09 13:59:35 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2015-01-09 14:02:00 +0900 |
commit | cdabaf42b0dff3d4bc62572bf12e324eb11fec0b (patch) | |
tree | ca9fd6b838f97567b9f1cd5902cf905dc8d24b64 /src | |
parent | 997490223743e3bd40c3cedf5dc799243c6dad9e (diff) | |
download | qt3-cdabaf42b0dff3d4bc62572bf12e324eb11fec0b.tar.gz qt3-cdabaf42b0dff3d4bc62572bf12e324eb11fec0b.zip |
Fixed Multicolumn view filtering item arrangement. This relates to bug 146.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 9655b0b845a568b61437a9354e98eae9623b7d13)
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src')
-rw-r--r-- | src/iconview/qiconview.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/iconview/qiconview.cpp b/src/iconview/qiconview.cpp index d4e027b..101582b 100644 --- a/src/iconview/qiconview.cpp +++ b/src/iconview/qiconview.cpp @@ -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; |