summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2015-01-09 13:59:35 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2015-01-09 13:59:35 +0900
commit9655b0b845a568b61437a9354e98eae9623b7d13 (patch)
treeca9fd6b838f97567b9f1cd5902cf905dc8d24b64
parent997490223743e3bd40c3cedf5dc799243c6dad9e (diff)
downloadqt3-9655b0b8.tar.gz
qt3-9655b0b8.zip
Fixed Multicolumn view filtering item arrangement. This relates to bug 146.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
-rw-r--r--src/iconview/qiconview.cpp21
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;