# US 10,372,299 B2 · Preserve input focus in virtualized dataset

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

- Number: US 10,372,299 B2
- Document ID: US10372299B2
- Status: Granted
- Kind: B2
- Application number: 15/275,212
- Filed: 2016-09-23
- Published: 2018-03-29
- Granted: 2019-08-06
- Earliest claimed: 2016-09-23
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: David Zearing
- Web page: https://patentgrep.com/patent/US10372299B2

## CPC

- G06F 3/0483: Interaction with page-structured environments, e.g. book metaphor
- G06F 3/0481: based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F 3/0485: Scrolling or panning
- G06F 3/04855: Interaction with scrollbars
- G06F 16/957: Browsing optimisation, e.g. caching or content distillation
- G06T 3/40: Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Variety of approaches to preserve an input focus in a virtualized dataset is described. An application initiates operations to preserve an input focus in a virtualized dataset by presenting an initial page of items from a large dataset in a visible area. A spacer associated with a non-rendered page of items from the large dataset is rendered in a virtual area of the application. Next, an initial focus position is assigned to the initial page of items. Furthermore, the initial page of items is stored in a focus page index in an association with the initial focus position.

## Claims

### Claim 1

A computing device to preserve an input focus in a virtualized dataset, the computing device comprising:
a display component;
a memory configured to store instructions associated with a client application and a focus page index;
a processor coupled to the memory and the display component, the processor executing the client application in conjunction with the instructions stored in the memory, wherein the client application includes instructions that direct the computing device to:
present, on the display component, an initial page of items from a large dataset in a visible area of the client application;
render a spacer associated with a non-rendered page of items from the large dataset in a virtual area of the client application;
detect an initial input action on the visible area while the initial page of items is in the visible area;
assign an initial focus position to the initial page of items based on the initial input action; and
store the initial page of items in the focus page index, in the memory, in an association with the initial focus position, wherein the focus page index preserves the initial focus position;
detect a scroll action while the initial page of items is in the visible area;
in response to the scroll action, retrieve the non-rendered page of items associated with the scroll action from the large dataset; and render, on the display component, the non-rendered page of items in the visible area as a following page of items in place of the initial page of items;
detect a directional key entry from a keyboard action while the following page of items is in the visible area; and
in response to the directional key entry, query the focus page index with the initial focus position to locate the initial page of items; retrieve the initial page of items from the focus page index; and render, on the display component, the initial page of items in the visible area in place of the following page of items.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein a size of the spacer is configured to accommodate a size of the initial page of items.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein retrieving the non-rendered page of items associated with the scroll action from the large dataset includes one or more operations to:
count a number of skipped spacers between the initial page of items and the spacer associated with the non-rendered page of items; and
locate the non-rendered page of items in the large dataset in a location that is a number of skipped non-rendered pages of items away from the initial page of items, wherein the number of skipped non-rendered pages of items match the number of skipped spacers.

### Claim 4 (depends on 3)

The computing device of claim 3, wherein retrieving the non-rendered page of items associated with the scroll action further includes one or more operations to:
count the number of skipped non-rendered pages of items in a direction of the scroll action.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein the rendering engine is further configured to:
detect an input action on the visible area while the following page of items is in the visible area; and
in response to the input action, assign a new focus position to the following page of items based on the input action; and store the following page of items in the focus page index in an association with the new focus position.

### Claim 6 (depends on 5)

The computing device of claim 5, wherein the rendering engine is further configured to:
after the new focus position is assigned to the following page of items, remove the initial page of items from the focus page index; and delete the initial focus position.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein an instance of the focus page index includes one or more of a cache and a buffer associated with the large dataset.

### Claim 8

A method executed on a computing device to preserve an input focus in a virtualized dataset, the method comprising:
presenting an initial page of items from a large dataset in a visible area of a client application;
rendering a spacer associated with a non-rendered page of items from the large dataset in a virtual area of the client application;
detecting an initial input action on the visible area while the initial page of items is in the visible area;
assigning an initial focus position to the initial page of items based on the initial input action;
storing the initial page of items in a focus page index, in a memory, in an association with the initial focus position, wherein the focus page index preserves the initial focus position;
in response to detecting a scroll action while the initial page of items is in the visible area, retrieving the non-rendered page of items from the large dataset, rendering the non-rendered page of items in the visible area as a following page of items in place of the initial page of items, and maintaining the initial focus position in the focus page index; and
in response to detecting a direction key entry from a keyboard action while the following page of items is in the visible area, querying the focus page index with the initial focus position to locate the initial page of items; retrieving the initial page of items from the focus page index; and rendering the initial page of items in the visible area in place of the following page of items.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
in response to detecting an input action on the visible area while the following page of items is in the visible area, assigning a new focus position to the following page of items based on the input action; and storing the following page of items in the focus page index in an association with the new focus position.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
detecting a request to access the focus page index while the following page of items is in the visible area; and
presenting the focus page index.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
receiving a selection of the initial page of items from the focus page index; and
in response to receiving the selection of the initial page of items from the focus page index, retrieving the initial page of items from the focus page index; removing the following page of items from the visible area; and presenting the initial page of items in the visible area.

### Claim 12 (depends on 8)

The method of claim 8, wherein in response to detecting the scroll action while the initial page of items is in the visible area, the method further comprising:
removing the initial page of items from the visible area; and
rendering another spacer associated with the initial page of items in the virtual area.

### Claim 13 (depends on 12)

The method of claim 12, wherein a size of the other spacer is configured to accommodate a size of the following page of items.

### Claim 14

A computer-readable memory device with instructions stored thereon to preserve an input focus in a virtualized dataset, the instructions, when executed, direct a computing device to:
present an initial page of items from a large dataset in a visible area of a client application;
render a spacer associated with a non-rendered page of items from the large dataset in a virtual area of the client application;
detect an initial input action on the visible area while the initial page of items is in the visible area;
assign an initial focus position to the initial page of items based on the initial input action;
store the initial page of items in a focus page index, in a memory, in an association with the initial focus position, wherein the focus page index preserves the initial focus position;
detect a scroll action while the initial page of items is in the visible area;
in response to the scroll action, retrieve the non-rendered page of items from the large dataset, and render the non-rendered page of items in the visible area as a following page of items in place of the initial page of items
detect a directional key entry from a keyboard action while the following page of items is in the visible area; and
in response to the directional key entry, query the focus page index with the initial focus position to locate the initial page of items; retrieve the initial page of items from the focus page index; and render the initial page of items in the visible area in place of the following page of items.

### Claim 15 (depends on 14)

The computer-readable memory device of claim 14, wherein the instructions to retrieve the non-rendered page of items in response to the scroll action direct the computing device to:
count a number of skipped spacers between the initial page of items and the spacer associated with the non-rendered page of items;
locate the non-rendered page of items in the large dataset in a location that is a number of skipped non-rendered pages of items away from the initial page of items, wherein the number of skipped non-rendered pages of items match the number of skipped spacers; and
count the number of skipped non-rendered pages of items in a direction of the scroll action.

### Claim 16 (depends on 14)

The computer-readable memory device of claim 14, further comprising instructions that when executed direct the computing device to:
remove the initial page of items from the visible area; and
render another spacer associated with the initial page of items in the virtual area, wherein a size of the other spacer is configured to accommodate a size of the following page of items.
