• Et voila un nouveau patch de fini.
    Il m’aura donc fallut toute l’après-midi pour en venir à bout. Finalement, j’ai opté pour deux actions dans le undo. La suppression des polygones (cette action est déjà gérée, autant en profiter) et différentes manipulations sur les différents #polygones. Vu que j’avais bien compris le fonctionnement pour le undo, il a été assez facile de le refaire dans cette nouvelle condition. Seul problème, lorsque je fais plusieurs #undo/redo à la suite, ça plante ... Vraiment pas très sympa comme comportement.
    Je regarde donc où est ce que ça plante (merci gdb) et je me rends compte que je n’ai pas le bon nombre de points dans mes polygones. En remontant petit à petit, je comprends qu’il y a des points ajoutés lors de la fusion et qu’il faut que je les supprime. Cette fois, le nombre de points est bon mais .. ça plante toujours.
    Il m’a malheureusement fallut un peu de temps pour me rendre compte que lors de la sélection des polygones à fusionner, je ne les sélectionnais pas dans le bon ordre, ça finissait par mélanger les points donc c’était pas génial.
    Cette fois, tout à l’air de fonctionner à merveille pour ce qui est de mon undo/redo en tout cas. Par contre, il reste un truc qui me dérange (et que j’ai repéré avant même de changer le code), si je combine au moins 3 polygones, que je fait un undo puis que je ferme le fichier, j’ai une erreur de segmentation à la fermeture. Ok, c’est juste à la fermeture mais n’empêche que c’est pas génial.
    Je vais donc voir où est l’erreur et apparemment, on fait des deletes sur chaque élément d’une liste mais plusieurs éléments sont identiques. Je commence donc par faire un petit hack pour ne pas faire de delete si l’élément est identique mais, une fois fini, je ne suis toujours pas satisfait. C’est bien, ça fonctionne mais il doit bien y avoir un souci derrière pour qu’il y ait plusieurs fois le même élément.
    Je retourne donc dans mon code et je me rends compte que c’est lors du undo de la suppression qu’il y a un problème. En effet, si je crée 5 polygones, que je les combine et que je fais un undo, je me retrouve avec 5 fois chacun des polygones dans la liste des items. Plutôt étrange comme comportement mais du coup, ça se rattache un peu à mon projet puisque c’est un bug de undo. C’est reparti pour corriger cette erreur.
    En lisant un peu le code, je trouve à un endroit : pour chaque élément à supprimer, mettre cette liste ainsi que l’id de l’élément sur la page. Pourquoi pas, mais on n’a pas l’id de l’élément dans la liste des éléments à supprimer (que j’ai donc ajouté par la suite). Ensuite, lors du redo, on recrée chaque élément de la liste et on les met à la position « id » sur la page. Oula, on recrée tous les éléments pour chaque élément. Il semble donc y avoir un problème. Bien sur, c’est pas souvent qu’on supprime plein d’éléments et qu’on joue avec le undo donc c’est possible que ça passe inaperçu mais il faut bien réparer ça quand même. Je supprime donc cette boucle pour recréer seulement l’élément défini par l’id. J’aurais bien aimé discuter de ça avec quelqu’un qui connaît mieux le code mais il est un peu tard donc personne n’est vraiment dispo. Peut-être plus tard. Quoi qu’il en soit, il y a maintenant un Undo/Redo opérationnel et amélioré pour la #combinaison_de_polygones.

    On m’annonce maintenant que mon dépôt git est disponible, je vais donc pouvoir commencer à uploader ces différents patchs pour ma version, youpiiiiiii :-)