Thanks for chiming in d_stranz.

If slot_delete() really *is* a slot, then it is impossible for the user to press Delete a second time and have the slot interrupted.
It's not like the slot execution gets interrupted; my impression is rather that Qt queues up further signals for this item, but the item no longer exists after the first slot_delete() invocation.

I think you're right though, our actual code is slightly different than what I pasted here, and that's likely the cause of our problem:


EDIT: Now it's clear: we cannot delete items during rendering, so in that case we queue deletion actions. Of course all deletion actions after the first one will operate on an item that no longer exists. Somehow we need to check if the item still exists...

In my opinion, though, a user interface design that performs an irreversible action (like deleting something) without giving the user a way to say, "Oops, I didn't mean that!" is not one that will make people happy for very long.
Of course, but this seems like a completely orthogonal issue to what we are discussing here.

(We'll go for an undo stack.)