Don't try to insert items out of bounds

The q_items list is only used to hold a full list of all items in the
layout. They are kept in order for a linear layout, so that users see
them in the right order, but there's no real guarantee for that anyway
if combined with spacers and other non-items.

Continue to try keeping the order, but ensure indices that are out of
bounds are treated as appends to the list.

Change-Id: I22721c1fa8b329c5d16ad00c5cb780e099693cda
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
Lars Knoll 2019-10-30 11:42:58 +01:00
parent cd04181b2b
commit bc4e7aecc0

View File

@ -960,7 +960,7 @@ void QGridLayoutEngine::insertItem(QGridLayoutItem *item, int index)
{
maybeExpandGrid(item->lastRow(), item->lastColumn());
if (index == -1)
if (index < 0 || index >= q_items.size())
q_items.append(item);
else
q_items.insert(index, item);