/* Gibt einen Node zurück, der sich in list * befindet und mit ->next auf myNode zeigt. * Diese Funktion wird benötigt, um myNode aus * der Liste löschen zu können. */ node * findPrevItem(node * myNode, node* list) { if (list == 0) { puts("Error! List for findPrevItem is empty"); return 0;} if ( list->next == myNode ) return list; else { if (list->next != 0) return findPrevItem(myNode, list->next); else return 0; } }
/* Entfernt einen Freispeicherknoten aus * der Freispeicherliste und dem Freispeicher-Baum */ void removeFreeNode(node * myNode) { if (myNode==0) return; /* Loesche Speicher aus Liste */ int index = -1; if (myNode->size > MAXSIZE) index = 32; else index = myNode->size / 8 - 1; node * prev = findPrevItem(myNode, freeMem[index]); if (prev == 0) freeMem[index] = 0; else prev->next = myNode->next; /* Loesche Speicher aus Baum */ removeFromTree(myNode, &freeTree); }
void TreeWidget::moveToPrevActiveItem() { QTreeWidgetItem* item = findPrevItem(currentItem(), 1, TreeRole::Badge); if (item) setCurrentItem(item); }