void ItemDocument::raiseZ(const ItemList & itemList) { if (m_zOrder.empty()) slotUpdateZOrdering(); if (m_zOrder.empty()) return; IntItemMap::iterator begin = m_zOrder.begin(); IntItemMap::iterator previous = m_zOrder.end(); IntItemMap::iterator it = --m_zOrder.end(); do { Item *previousData = (previous == m_zOrder.end()) ? 0 : previous->second; Item *currentData = it->second; if (currentData && previousData && itemList.contains(currentData) && !itemList.contains(previousData)) { previous->second = currentData; it->second = previousData; } previous = it; --it; } while (previous != begin); slotUpdateZOrdering(); }
void ItemDocument::lowerZ(const ItemList &itemList) { if (m_zOrder.empty()) slotUpdateZOrdering(); if (m_zOrder.empty()) return; IntItemMap::iterator previous = m_zOrder.begin(); IntItemMap::iterator end = m_zOrder.end(); for (IntItemMap::iterator it = m_zOrder.begin(); it != end; ++it) { Item *previousData = previous->second; Item *currentData = it->second; if (currentData && previousData && itemList.contains(currentData) && !itemList.contains(previousData)) { previous->second = currentData; it->second = previousData; } previous = it; } slotUpdateZOrdering(); }