# US 11,308,272 B1 · Controlling a productivity application to integrate a revision stream and an undo stack to perform out of order undo operations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,308,272 B1
- Document ID: US11308272B1
- Status: Granted
- Kind: B1
- Application number: 17/095,919
- Filed: 2020-11-12
- Granted: 2022-04-19
- Earliest claimed: 2020-11-12
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: James Richard Sturms; Ying Zhang; Sherman Chee Ming Der; Nicholas Kyle Ryan; Dmitri Viktorovich Kotchetov; Sanjay Krupakar Bhat
- Web page: https://patentgrep.com/patent/US11308272B1

## CPC

- G06F 16/93: Document management systems
- G06F 40/197: Version control (for software G06F8/71)
- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 40/151: Transformation
- G06F 40/166: Editing, e.g. inserting or deleting
- G06F 40/18: of spreadsheets (form-filling G06F40/174)
- G06F 40/194: Calculation of difference between files
- G06Q 10/101: Collaborative creation, e.g. joint development of products or services
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

A computing system runs a productivity application that maintains an integrated, time ordered revision/undo stack. Entries in the revision/undo stack identify revision operations that a user has made to a document and corresponding undo operations that can be executed to undo the revision operation. The computing system detects an undo input indicative of a user actuating un undo actuator to undo a previous operation, that is prior to a most current operation that the user has performed. An operational transform system identifies an undo operation in the undo stack, corresponding to the revision that the user selected in the revision/undo stack. The operational transform system traverses the revision/undo stack to identify subsequent operations that were performed subsequent to the previous operation, and identifies one or more transforms to be applied to the undo operation based upon the identified subsequent operations. The operational transform system then transforms the undo operation, using the transformation function, and applies the transformed undo operation to the document.

## Claims

### Claim 1

A computer system, comprising:
at least one processor; and
memory storing instructions executable by the at least one processor, wherein the instructions, when executed, cause the computer system to:
receive an undo input indicative of a selected revision to a document for which a corresponding undo operation is to be performed;
access a revision/undo stack having a plurality of stack entries representing a set of revisions and defining a time order of the set of revisions, each stack entry representing a given revision in the set of revisions and comprising:
a revision indicator that indicates the given revision, and
an undo indicator that indicates an undo operation to undo the given revision;
identify, in the revision/undo stack, a particular stack entry corresponding to the selected revision;
identify, in the particular stack entry, the undo operation indicated by the undo indicator;
traverse the revision/undo stack to identify, in the revision/undo stack, a subsequent stack entry corresponding to a subsequent revision made to the document subsequent to the selected revision;
parse the subsequent stack entry corresponding to the subsequent revision to identify a subsequent operation used to make the subsequent revision;
transform the undo operation based on the subsequent operation to obtain a transformed undo operation; and
execute the transformed undo operation against the document.

### Claim 2 (depends on 1)

The computer system of claim 1 wherein the instructions, when executed, cause the computer system to:
a transformation function identifier configured to identify a transformation function based on the subsequent revision; and
a transformation application component configured to apply the transformation function to the undo operation to obtain the transformed undo operation.

### Claim 3 (depends on 1)

The computer system of claim 1 wherein the instructions, when executed, cause the computer system to identify a plurality of stack entries each corresponding to a subsequent revision, the subsequent operation identifier being configured to identify a plurality of subsequent operations used to make the plurality of subsequent revisions to the document subsequent to the selected operation.

### Claim 4 (depends on 3)

The computer system of claim 3 wherein the instructions, when executed, cause the computer system to identifies a plurality of transformation functions based on the plurality of subsequent operations and to determine a sequence corresponding to the plurality of transformation functions.

### Claim 5 (depends on 4)

The computer system of claim 4 wherein the instructions, when executed, cause the computer system to apply the plurality of transformation functions to the undo operation in the sequence to obtain the transformed undo operation.

### Claim 6 (depends on 1)

The computer system of claim 1 wherein the instructions, when executed, cause the computer system to:
receive a revision signal indicative of a user revision to the document and generate a stack entry corresponding to the revision signal, the stack entry including:
an index value indicative of a position of the stack entry corresponding to the revision signal in the revision/undo stack relative to other stack entries in the revision/undo stack,
a revision indicator indicative of the user revision, and
an undo indicator indicative of an undo operation that reverses the user revision.

### Claim 7 (depends on 6)

The computer system of claim 6 wherein the instructions, when executed, cause the computer system to:
store the stack entry corresponding to the revision signal in the revision/undo stack, close the document, and save the revision/undo stack for retrieval when the document is re-opened; and
reopen the document, and reload the stored revision/undo stack for access by a user.

### Claim 8 (depends on 1)

The computer system of claim 1 wherein the instructions, when executed, cause the computer system to:
surface a representation of the revision/undo stack for user interaction prior to receiving the undo input; and
detect, as the undo input, user selection of the stack entry corresponding to the selected revision.

### Claim 9

A computer implemented method, comprising:
receiving an undo input indicative of a selected revision to a document for which a corresponding undo operation is to be performed;
accessing a revision/undo stack having a plurality of stack entries representing a set of revisions and defining a time order of the set of revisions, each stack entry representing a given revision in the set of revisions and comprising:
a revision indicator that indicates the given revision, and
an undo indicator that indicates an undo operation to undo the given revision;
identifying, in the revision/undo stack, a particular stack entry corresponding to the selected revision;
identifying, in the particular stack entry, the undo operation indicated by the undo indicator;
traversing the revision/undo stack to identify, in the revision/undo stack, a subsequent stack entry corresponding to a subsequent revision made to the document subsequent to the selected revision;
parsing the subsequent stack entry corresponding to the subsequent revision to identify a subsequent operation used to make the subsequent revision;
transforming the undo operation based on the subsequent revision operation to obtain a transformed undo operation; and
executing the transformed undo operation against the document.

### Claim 10 (depends on 9)

The computer implemented method of claim 9 wherein transforming the undo operation comprises:
identifying a transformation function based on the subsequent revision; and
applying the transformation function to the undo operation to obtain the transformed undo operation.

### Claim 11 (depends on 10)

The computer implemented method of claim 10 wherein traversing the revision/undo stack to identify a subsequent revision comprises:
traversing the revision/undo stack to identify a plurality of subsequent revisions made to the document subsequent to the selected operation.

### Claim 12 (depends on 11)

The computer implemented method of claim 11 wherein identifying the transformation function comprises:
identifying a plurality of transformation functions based on the plurality of subsequent revisions; and
determining a sequence corresponding to the plurality of transformation functions.

### Claim 13 (depends on 12)

The computer implemented method of claim 12 wherein applying the transformation function comprises:
applying the plurality of transformation functions to the undo operation in the sequence to obtain the transformed undo operation.

### Claim 14 (depends on 9)

The computer implemented method of claim 9 wherein the selected revision was made to the document by a first user and wherein receiving the undo input comprises:
receiving the undo input based on a user input from second user to undo the selected revision, the second user being different from the first user.

### Claim 15 (depends on 9)

The computer implemented method of claim 9 and further comprising:
receiving a revision signal indicative of a user revision to the document; and
generating a stack entry corresponding to the revision signal, the stack entry including an index value indicative of a position of the stack entry corresponding to the revision signal in the revision/undo stack relative to other stack entries in the revision/undo stack, a revision indicator indicative of the user revision, and an undo indicator indicative of an undo operation that reverses the user revision.

### Claim 16 (depends on 15)

The computer implemented method of claim 15 and further comprising:
storing the stack entry corresponding to the revision signal in the revision/undo stack;
closing the document;
saving the revision/undo stack for retrieval when the document is re-opened;
reopening the document; and
reloading the stored revision/undo stack for access by a user.

### Claim 17 (depends on 9)

The computer implemented method of claim 9 and further comprising:
prior to receiving the undo input, surfacing a representation of the revision/undo stack for user interaction; and
detecting, as the undo input, user selection of the stack entry corresponding to the selected revision.

### Claim 18

A computer system, comprising:
one or more processors; and
a data store storing instructions which, when executed by the one or more processors, cause the one or more processors to perform steps comprising:
receiving an undo input indicative of a selected revision to a document for which a corresponding undo operation is to be performed;
accessing a revision/undo stack having a plurality of stack entries representing a set of revisions and defining a time order of the set of revisions, each stack entry representing a given revision in the set of revisions and comprising:
a revision indicator that indicates the given revision, and
an undo indicator that indicates an undo operation to undo the given revision;
identifying, in the revision/undo stack, a particular stack entry corresponding to the selected revision;
identifying, in the particular stack entry, the undo operation indicated by the undo indicator;
traversing the revision/undo stack to identify, in the revision/undo stack, a subsequent stack entry corresponding to a subsequent revision made to the document subsequent to the selected revision;
parsing the subsequent stack entry corresponding to the subsequent revision to identify a subsequent operation used to make the subsequent revision;
transforming the undo operation based on the subsequent operation to obtain a transformed undo operation; and
executing the transformed undo operation against the document.
