Grouper / dégrouper des items : gestion des undo / redo command
Bonjour,
Je rencontre un petit soucis avec la gestion des undo / redo command liés à des actions de groupage / dégroupage d'items :
Dans l'action redo : je recrée le groupe et le stocke dans une variable x
Dans l'action undo :
A) Si j'appelle la méthode removeItem(x) de la scène, le groupe est supprimé ainsi que ses enfants. Ce qui n'est pas bon car les enfants doivent rester. La doc dit d'ailleurs qu'un appel à cette méthode supprime bel et bien le groupe ainsi que ses fils. Du coup je change d'astuce en passant à B.
B) Puisque removeItem(x) supprime l'arboresence (groupe et fils), j'appelle plutôt la méthode destroyItemGroup(x) de la scène qui elle laisse bien mes objets sur la scène et supprime le groupe. De prime à bord, ça répond à ce que je veux. Mais en manipulant, je me rend compte que cette méthode détruit le groupe x et donc je n'ai plus aucun moyen de retrouver ses enfants pour un éventuel appel à redo (qui lui doit se servir de la liste des fils pour recréer le groupe).
Et c'est là où commence les ennuis : je me dis qu'en stockant la liste des fils ça réglerait le problème mais là aussi, lorsque je regroupe des groupes de groupes d'items et que j'effectue une série de undo (qui annule le groupage) suivis de redo (qui rétablit le groupage) ça crashe pour cause que la méthode destoryItemGroup a détruit des objets qui n'existent plus sauf dans ma liste (donc référence vers des objets NULL) !!!
Après ce long discours (qui peut être n'est pas du tout clair), est-ce que quelqu'un a déjà eu à implémenter ces actions de undo / redo et à une solution ?
Merci.