IP Library › Granted Patent US 11,003,837
Granted Patent B2
US 11,003,837 · App. 16/416,510 · Granted May 11, 2021

Controlling mark positions in documents

Inventors: Evgeny Veselov (Sammamish, WA); Sergey Dubinets (Redmond, WA); Brian Robert Marshall (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F40/154G06F9/5016G06F9/5022G06F40/166
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,003,837
App. No.
16/416,510
Granted
May 11, 2021
Kind
B2
Abstract

A document is represented as a node tree in a document processing system. Edits to a node are represented in a change record that has a one-way link to the node. A text mark has a one-way link to the change record. It deletes that link when the changes represented by the change record are reflected in the text mark. A memory management system releases the memory allocated to the change record when no other object links to it.

Claims (77)

1. A document processing system, comprising:

a content tree generator that generates a content tree that represents a content document and has a node;

a content editing system that makes a modification to the node, the node including:

a change record generator that generates a first change record representing the modification to the node; and

a reference update system that updates a reference in the first change record to refer to the node and that updates a reference in the node to refer to the first change record; and

a text mark that has a one-way reference to the node, and a position value indicative of a position in the node, and text mark reference update logic that updates the one-way reference to the node to be a one-way reference to the first change record after the first change record is generated,

wherein

the content editing system is configured to make a subsequent modification to the node,

the change record generator is configured to generate a subsequent change record representing the subsequent modification to the node, and

the reference update system in the node is configured to generate a reference in the subsequent change record to the node, update the reference in the first change record to be a one-way reference to the subsequent change record and then to delete the reference, in the node, to the first change record and generate a reference, in the node, to the subsequent change record.

2. The document processing system of claim 1 wherein the text mark comprises:

a new change record detector configured to detect generation of the subsequent change record, wherein the text mark reference update logic in the text mark is configured to update the one-way reference to the first change record to be a one-way reference to the subsequent change record.

3. The document processing system of claim 2 wherein the text mark comprises:

change record traversal logic configured to traverse the first change record and the subsequent change record using the one-way reference, in the text mark, to the first change record, the one-way reference, in the first change record, to the subsequent change record, and the reference, in the subsequent change record, to the node.

4. The document processing system of claim 3 wherein the text mark comprises:

change interpretation logic configured to identify the modification and subsequent modification based on traversal of the first change record and the subsequent change record and generate a change interpretation based on the identified modification and subsequent modification.

5. The document processing system of claim 4 wherein the text mark comprises:

offset update logic configured to update the position value in the text mark, identifying the position in the node, based on the change interpretation.

6. The document processing system of claim 5 wherein the text mark reference update logic is configured to update the one-way reference to the first change record, in the text mark, to be a one-way reference to the node.

7. The document processing system of claim 6 and further comprising:

a memory management system that allocates memory for the text mark, the node, the first change record and the subsequent change record and that releases memory allocated to any change record which is not referred to by any text mark, change record, or node.

8. The document processing system of claim 1 wherein the content editing system comprises:

a browser-based interface that receives edit user inputs and edits the content document based on the edit user inputs.

9. A method of processing a content document, the method comprising:

receiving a content tree that represents the content document and has a node;

making a modification to the node;

using a change record generator in the node to generate a first change record representing the modification to the node; and

using a reference update system in the node to update a reference in the first change record to refer to the node and that update a reference in the node to refer to the first change record;

updating a text mark, that has a one-way reference to the node, and a position value indicative of a position in the node, by changing the one-way reference to the node to be a one-way reference to the first change record;

making a subsequent modification to the node;

generating a subsequent change record representing the subsequent modification to the node; and

using the reference update system in the node,

generating a reference in the subsequent change record to the node,

updating the reference in the first change record to be a one-way reference to the subsequent change record,

deleting the reference, in the node, to the first change record, and

generating a reference, in the node, to the subsequent change record.

10. The method of claim 9 and further comprising:

detecting, with the text mark, generation of the subsequent change record; and

updating the one-way reference to the first change record to be a one-way reference to the subsequent change record.

11. The method of claim 10 and further comprising:

traversing, with change record traversal logic in the text mark, the first change record and the subsequent change record using the one-way reference, in the text mark, to the first change record, the one-way reference, in the first change record, to the subsequent change record, and the reference, in the subsequent change record, to the node;

identifying, with change interpretation logic in the text mark, the modification and subsequent modification based on traversal of the first change record and the subsequent change record; and

generating a change interpretation based on the identified modification and subsequent modification.

12. The method of claim 11 and further comprising:

updating, with offset update logic in the text mark, an offset value in the text mark to identify a position in the node, based on the change interpretation.

13. The method of claim 12 and further comprising:

updating, using the text mark reference update logic, the one-way reference to the first change record, in the text mark, to be a one-way reference to the node.

14. The method of claim 13 and further comprising:

allocating memory for the text mark, the node, the first change record and the subsequent change record; and

releasing memory allocated to any change record which is not referred to by any text mark, change record, or node.

15. The method of claim 9 wherein the method of processing the content document is performed on a first client computing system and wherein making a modification comprises:

receiving an indication of the modification from a second client computing system; and

identifying the modification as being made from the second client computing system.

16. A computing system comprising:

at least one processor; and

memory storing instructions executable by the at least one processor, wherein the instructions, when executed, cause the computing system to:

generate a content tree that represents a content document and includes a node;

generate a modification to the node, the node including:

a change record generator that generates a first change record representing the modification to the node; and

a reference update system that updates a reference in the first change record to refer to the node and that updates a reference in the node to refer to the first change record;

generate a text mark that has a one-way reference to the node, and a position value indicative of a position in the node;

update the one-way reference to the node to be a one-way reference to the first change record after the first change record is generated;

generate a subsequent modification to the node;

generate a subsequent change record representing the subsequent modification to the node;

generate a reference in the subsequent change record to the node;

update the reference in the first change record to be a one-way reference to the subsequent change record;

delete the reference, in the node, to the first change record; and

generate a reference, in the node, to the subsequent change record.

17. The computing system of claim 16 , wherein the instructions cause the computing system to:

detect generation of the subsequent change record; and

update the one-way reference to the first change record to be a one-way reference to the subsequent change record.

18. The computing system of claim 17 , wherein the instructions cause the computing system to:

traverse the first change record and the subsequent change record using the one-way reference, in the text mark, to the first change record, the one-way reference, in the first change record, to the subsequent change record, and the reference, in the subsequent change record, to the node.

19. The computing system of claim 18 , wherein the instructions cause the computing system to:

identify the modification and subsequent modification based on traversal of the first change record and the subsequent change record and generate a change interpretation based on the identified modification and subsequent modification.

20. The computing system of claim 16 , wherein the instructions cause the computing system to:

provide a browser-based interface that receives edit user inputs and edits the content document based on the edit user inputs.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF THE FIRST ASSIGNOR'S NAME AND EXECUTION DATE PREVIOUSLY RECORDED ON REEL 049228 FRAME 0864. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 19, 2019
From: VESELOV, EVGENY; DUBINETS, SERGEY; MARSHALL, BRIAN ROBERT
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051051/0108 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF THE FIRST ASSIGNOR'S NAME AND EXECUTION DATE AND THE STATE OF THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 049228 FRAME 0864. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 19, 2019
From: VESELOV, EVGENY; DUBINETS, SERGEY; MARSHALL, BRIAN ROBERT
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051051/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2019
From: VESELOV, EUGENE; DUBINETS, SERGEY; MARSHALL, BRIAN ROBERT
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 049228/0864 →
Continuity (2)
Provisional Application 62842688 · May 3, 2019
Related Publication 20200349220A1 · Nov 5, 2020