I've seem to run into a drag and drop bug using an internal move event that causing the model to add additional rows and offset column data.
in the example provided(drag_n_drop.py) I can replicate this every time by the following steps explicitly(DO NOT sort the Name column) :
parent-3 should be the top node.
- select child item "4" from parent-3
- Ctrl click to select child item "2" from parent-1
- drag and drop the two items over the parent-0
this moves the two rows("4" & "2") and creates two more with no DisplayRole in the name column. The "Tag" & "Color" data from the two item rows are shifted to the additional rows.
You can close and relaunched the application, now if you sort the Name column where parent-0 is the top node and try the steps again, no additional rows are created.