Patent ID: 7900142

Claim:
A method of undoing editing operations performed on a data object, comprising: storing a plurality of prior states of the data object, each prior state corresponding to previously performed editing operations on the data object; receiving an instruction to undo an effect of an undesired editing operation performed on the data object; selecting a first stored prior state of the data object, the first stored prior state having been stored before performance of the undesired editing operation; selecting a second stored prior state of the data object, the second stored prior state having been stored after performance of the undesired editing operation; comparing the second stored prior state of the data object with the first stored prior state to determine the effect of the undesired editing operation; and applying the effect of the undesired editing operation to a current state of the data object to obtain a new state of the data object, the new state of the data object not including the effect of the undesired editing operation; receiving a request to perform a first editing operation; taking a first snapshot of the data object; executing the first editing operation; taking a second snapshot of the data object; associating the first snapshot and the second snapshot together to form a snapshot pair; and generating a label to describe a difference between the first snapshot and the second snapshot and associating the label with the snapshot pair.