FreshPatents.com Logo FreshPatents.com icons
Monitor Keywords Patent Organizer File a Provisional Patent Browse Inventors Browse Industry Browse Agents

n/a

views for this patent on FreshPatents.com
updated 05/24/2013


Inventor Store

    Free Services  

  • MONITOR KEYWORDS
  • Enter keywords & we'll notify you when a new patent matches your request (weekly update).

  • ORGANIZER
  • Save & organize patents so you can view them later.

  • RSS rss
  • Create custom RSS feeds. Track keywords without receiving email.

  • ARCHIVE
  • View the last few months of your Keyword emails.

  • COMPANY PATENTS
  • Patents sorted by company.

Directional focus navigation   

pdficondownload pdfimage preview


20130014043 patent thumbnailAbstract: A rendering engine that supports directional focus navigation, in response to a directional input, shifts the focus to an appropriate focusable element. The rendering engine determines one or more focusable elements that are candidates to receive the focus based on the received directional input and based on the relative display locations of the focusable elements. The rendering engine selects the most appropriate candidate focusable element based on each candidate element's display location in relation to the display location of the element that currently has focus.
Agent: Microsoft Corporation - Redmond, WA, US
Inventors: Tantek Celik, Ada Y. Chan, Bradley R. Pettit
USPTO Applicaton #: #20130014043 - Class: 715767 (USPTO) - 01/10/13 - Class 715 

view organizer monitor keywords


The Patent Description & Claims data below is from USPTO Patent Application 20130014043, Directional focus navigation.

pdficondownload pdf

PRIORITY APPLICATIONS

This U.S. Non-Provisional Application for Letters Patent claims the benefit of priority under 35 U.S.C. §120 as a continuation of U.S. patent application Ser. No. 12/784,755, filed May 21, 2010, which claims the benefit of priority to U.S. Pat. No. 7,735,016, filed Apr. 28, 2006, which claims the benefit of priority to U.S. Pat. No. 7,134,089, filed Nov. 13, 2002, the entire disclosure of which is hereby incorporated by reference in its entirety.

TECHNICAL FIELD

This invention relates to focus navigation and, in particular, to directional focus navigation.

BACKGROUND

A graphical user interface (GUI) may include multiple elements that can receive input. The target of the input is said to have focus, and elements eligible for focus within a document are called focusable elements. In a GUI, input that is received is processed according to an element that currently has focus. For example, if a GUI contains two editable text boxes, when a user enters text through a keyboard, the text is rendered in the text box that currently has focus.

In a GUI that receives input from a pointing device, such as a mouse, the currently focused element is determined based on the location of a cursor or pointer when a user submits a select command (e.g., clicks a mouse button). If the cursor or pointer is over a text box when the user clicks the mouse button, then that text box is given focus and future input, such as through a keyboard, is directed to the text box until the focus is moved to another element.

In a GUI that receives input from devices without pointing mechanisms, such as keyboards or remote controls, an alternative mechanism is implemented to allow a user to specify an element to be given focus, and thus, the target of keyboard (or other device) input.

Browser or other rendering engine applications that provide a mechanism for displaying documents that include focusable elements (e.g., hypertext markup language (HTML) documents, dynamic HTML documents, or web pages) are implemented to support navigation between focusable elements in a document by way of a mouse or other similar pointing device. Some such documents also support navigation through the focusable elements of the document according to a tab order that defines a sequential order that determines which element is focused next when a user presses a tab key.

Recently introduced technology allows web pages (and potentially other types of documents that may include focusable elements) to be rendered using devices other than computers. These other devices may include, but are not limited to, a television set, a cellular phone display, and a multi-modal device, such as the Nokia 9110 Communicator. Such devices do not typically include a pointer input device, such as a mouse.

Rendering engines implemented on such devices may be programmed to receive an input that behaves like the press of a tab key to allow a user to move sequentially from one focusable element in a document to another. However, cascading style sheets, dynamic HTML, and the like support dynamic rendering of documents in such a way that the visual layout of a rendered document may differ from the layout that was intended when the document was generated and possibly, when the tab order of focusable elements in the document was established. Accordingly, moving from one focusable element to another either sequentially or based on an established tab order may not result in visually logical focus navigation, and it is desirable for a rendering engine to support directional focus navigation based on directional inputs, such as an arrow key press.

SUMMARY

Directional focus navigation is described. A browser or other rendering engine that supports directional focus navigation determines focusable elements that are candidates to receive focus based on a directional input and a display layout of the focusable elements. After candidate focusable elements are identified, the rendering engine determines the most appropriate candidate, and moves the focus to that element.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference like features and components.

FIG. 1a illustrates a portion of an exemplary method for implementing directional focus navigation.

FIG. 1b illustrates a portion of an exemplary method for implementing directional focus navigation.

FIG. 2 illustrates a view of a document with three focusable elements.

FIG. 3 illustrates a view of a document with several focusable elements and a table structure.

FIG. 4 illustrates a view of a document with several focusable elements.

FIG. 5 illustrates a view of a document that includes focusable areas.

FIG. 6a illustrates a view of a scrollable document with several focusable elements.

FIG. 6b illustrates a view of a scrollable document with several focusable elements.

FIG. 6c illustrates a view of a scrollable document with several focusable elements.

FIG. 7a illustrates a view of a parent document that includes a scrollable element.

FIG. 7b illustrates a view of a parent document that includes a scrollable element.

FIG. 8 illustrates a view of two documents with focusable elements displayed using frames.

FIG. 9 illustrates components of an exemplary environment in which directional focus navigation may be implemented.

FIG. 10 illustrates select components of a client device implemented to support directional focus navigation.

DETAILED DESCRIPTION

The following discussion is directed to directional focus navigation among focusable elements of a document. Directional focus navigation as described herein may be implemented using a browser or other interface or rendering engine that renders documents (e.g., HTML or dynamic HTML) that may contain focusable elements to provide a mechanism for navigating among those focusable elements using directional inputs (e.g., left, right, up, and down arrow keys) instead of a traditional pointing device such as a mouse. For example, directional focus navigation may be implemented to support web site navigation using a television remote control, when an HTML rendering engine is implemented as part of a television or television set-top box. In another example, directional focus navigation may be implemented to support web site navigation using a cellular telephone or multi-modal device.

Method for Directional Focus Navigation

Directional focus navigation may be described in the general context of computer-executable instructions, such as application modules, being executed by a computer. Generally, application modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Directional focus navigation may be implemented using any number of programming techniques and may be implemented in local computing environments or in distributed computing environments where tasks are performed by remote processing devices that are linked through various communications networks based on any number of communication protocols. In such a distributed computing environment, application modules may be located in both local and remote computer storage media including memory storage devices.

FIGS. 1a and 1b illustrate a method 100 for implementing directional focus navigation among focusable elements and/or focusable areas of a rendered document. FIG. 1a illustrates a portion of the method 100 that pertains to directional focus navigation when candidate focusable elements are within a display area associated with a document. FIG. 1b illustrates a portion of the method 100 that pertains to directional focus navigation when candidate focusable elements are not within a display area associated with a document.

Documents that may be rendered as described herein can be represented by a hierarchical tree structure that illustrates the relationships between elements of the document. For example, the document itself may be represented by an element (e.g., an HTML document element) that contains the other elements of the document, such as buttons, hyperlinks, tables, and so on. Per the hierarchical structure, elements within the document element may also contain other elements. For example, a table element may contain cell elements. When a document is first rendered, the focus is given to some element associated with the document. That element may be the document element, or it may be any other focusable element contained within the document element

At block 102, a browser (or other type of rendering application) receives an indication of a directional input. For example, the indication is received when a user presses an arrow key (e.g., up, down, left, or right) on a keyboard, remote control, phone keypad, or other such device.

At block 104 the browser determines whether or not the current focus is on an element associated with the currently rendered document. If the browser determines that the current focus is not on an element associated with the document (the “No” branch from block 104), then at block 106 the browser identifies the first focusable element. The method continues at block 108, setting the focus to the identified first focusable element. In the described implementation, the first focusable element of a document is a focusable element that is a child of the element representing the entire document that is displayed above and to the left of any other focusable elements that are children of the element representing the entire document.

If the browser determines that there is a currently focused element associated with the document (the “Yes” branch from block 104), then at block 110, the browser identifies the element that currently has the focus.

At block 112 the browser determines whether a focus candidate exists. In the described implementation, a focus candidate is a focusable element that is within the viewable area of the document and displayed at a location that is indicated by the received directional input in relation to the display location of the currently focused element. If it is determined that there is not a focus candidate associated with the current document (the “No” branch from block 112), then the method continues at block 122 (shown in FIG. 1b). On the other hand, if it is determined that there is a focus candidate associated with the current document (the “Yes” branch from block 112), then the method continues at block 114.

At block 114 the browser selects a focus candidate that is associated with the current document.

At block 116 the browser determines whether or not the selected element is the most appropriate element to receive the focus based on the display location of the selected element in relation to the display location of the element that currently has the focus. If the selected element is an appropriate element to receive the focus based on its display location, and no other focusable element has been identified as an appropriate element, then the selected element is identified as the most appropriate element thus far. If the selected element is an appropriate element to receive the focus based on its display location, and another focusable element has previously been identified as the most appropriate element thus far, then the browser compares the locations of the two identified appropriate elements to determine which one is the most appropriate element thus far. If the browser determines that the selected element is the most appropriate element to receive the focus (the “Yes” branch from block 116), then the method continues at block 118. On the other hand, if the browser determines that the selected element is not the most appropriate element to receive the focus (the “No” branch from block 116), then the method continues at block 120.

At block 118, the browser identifies the selected element as the element to which the focus will be given.

At block 120 the browser determines whether or not there is another focusable element within the viewable area of the document that has not been selected as described with reference to block 114. If the browser determines that there is another focusable element that has not been selected (the “Yes” branch from block 120), then the method continues at block 114, as described above. On the other hand, if the browser determines that there are no other focusable elements that have not been selected (the “No” branch from block 120), then the method continues at block 108, setting the current focus to the focusable element identified as described above with reference to block 118.

As described above with reference to block 112, if the browser determines that there is not another focusable element within the viewable area of the document, then at block 122 (shown in FIG. 1b), the browser determines whether or not the current document is scrollable in the direction indicated by the received directional input (described above with reference to block 102). If the document is scrollable in the direction indicated (the “Yes” branch from block 122), then at block 124 the browser scrolls the document in the direction indicated. On the other hand, if the document is not scrollable in the direction indicated (the “No” branch from block 122), then the method continues at block 126.

At block 126 the browser determines whether the document associated with currently focused element is a child document associated with another parent document. If the browser determines that there is not a parent document (the “No” branch from block 126), then at block 128, the method terminates with the focus remaining on the currently focused element. On the other hand, if the browser determines that there is a parent document (the “Yes” branch from block 126), then the method continues at block 130.

At block 130 the browser determines whether there are focusable elements within the viewable area of the parent document that are appropriate based on the display location of the elements in relation to the display location of the element with the current focus based on the direction indicated by the directional input. If there are no appropriate focusable elements within the viewable area of the parent (the “No” branch from block 130), then at block 132 the browser sets the focus to the parent document. On the other hand, if there is at least one appropriate focusable element within the viewable area of the parent document (the “Yes” branch from block 130), the method continues at block 134.

At block 134 the browser identifies the most appropriate focusable element in the parent document to receive the focus.

At block 136 the browser sets the current focus to the element identified as described with reference to block 134.

Horizontal Focus Navigation

Horizontal focus navigation pertains to the moving of focus from one element to another element in response to a left or right directional input. In an implementation of directional focus navigation, when moving focus horizontally, preference is given to a focusable element with a display position that has more vertical overlap with the display position of the currently focused element over a focusable element that has less vertical overlap with the display position of the currently focused element. Details of a horizontal focus navigation implementation will be described below with reference to FIG. 2.

Right Directional Input

FIG. 2 illustrates a view of a document that includes three focusable elements. Box 202 represents the viewable area supported by a rendering engine. Box 204 represents the document. Hyperlink 206 is the element that currently has the focus (indicated by the dashed box). When the rendering engine receives a right directional input (e.g., a user presses a right arrow key), the rendering engine determines which, if any, of the other focusable elements (i.e., hyperlink 208 or hyperlink 210) is the most appropriate element to receive the focus next. (This process is described above with reference to blocks 102-120 shown in FIG. 1a.)

The following mathematical definitions will be used below in horizontal focus navigation equations that may be used in an implementation of a rendering engine that supports directional focus navigation: F=element that has the current focus E=focusable element that is being evaluated W=focusable element that is currently identified as the most appropriate focusable element to receive the focus so far x.left=the left coordinate of the display location of element x x.right=the right coordinate of the display location of element x x.top=the top coordinate of the display location of element x x.bottom=the bottom coordinate of the display location of element x x.width=x.right−x.left x.height=x.bottom−x.top x.mid=x.left+(x.width)/2 x.vertoverlap=min(z, x.height, F.height), where:

z=min(x.bottom−F.top, F.bottom−x.top) x.%vertoverlap=(x.vertoverlap)/(x.height)

The above (and all following) equations are written using the assumption that the display area can be mapped to a two-dimensional grid in which the upper-left-most corner has (x,y) coordinates (0,0).

If a focusable element E meets the following criteria, then E is considered a focus candidate (an appropriate element to receive focus) when the directional input indicates moving focus to the right: E is within the displayable area of the document. E.mid>F.mid (The midpoint of E is to the right of the midpoint of F.) (F.bottom−E.bottom)<=LaxHeight1 OR (F.top−E.top)<=LaxHeight1, where LaxHeight1 is a configurable tolerance value used to compare the vertical display locations of element E and element F. In the described implementation, LaxHeight1 is derived from F.height and E.height, such as LaxHeight1=(max(F.height, E.height))/4. (E is at the same level or below F, or E is above F by no more than LaxHeight1.)

Comparing the horizontal midpoints (E.mid>F.mid) provides a mechanism for handling the special case in which two focusable elements have overlapping display areas.

Given the document illustrated in FIG. 2, hyperlinks 208 and 210 both qualify as appropriate elements to receive focus when a right directional input is received while the current focus is on hyperlink 206.

As described above with reference to block 116 shown in FIG. 1, the browser compares the elements that qualify as appropriate elements to receive the focus to determine the most appropriate element to receive the focus. In this implementation, element E is determined to be the most appropriate element to receive the focus when a right directional input is received if any of the following is true: E.vertoverlap>=0 AND W.vertoverlap<0 (E vertically overlaps F, but W does not vertically overlap F.) E.vertoverlap<0 AND W.vertoverlap<0 AND E.vertoverlap>W.vertoverlap (Neither E nor W vertically overlaps F, but E is vertically closer to F.) abs(E.vertoverlap−W.vertoverlap)<=LaxHeight2 AND E.left<W.left, where LaxHeight2 is a configurable tolerance value used to compare the vertical overlap of E and W with respect to F. In the described implementation, LaxHeight2 is derived from the heights of each of the elements involved in the comparison, such as LaxHeight2=(min(F.height, E.height, W.height))/3. (E and W have similar overlap values, but E is horizontally closer to F.) E.vertoverlap>(W.vertoverlap+LaxHeight2) AND ((E.left<W.left) (E has a greater vertical overlap and E is horizontally closer to F.) E.vertoverlap>(W.vertoverlap+LaxHeight2) AND (E.%vertoverlap>W.%vertoverlap) (E has a greater vertical overlap and E has a greater percentage vertical overlap.) (E.left<W.left) AND (E.%vertoverlap>W.%vertoverlap) (E is horizontally closer to F and E has a greater percentage vertical overlap.)

In this implementation, preference is given to an element that vertically overlaps the currently focused element because most documents have a visual layout that suggests reading the document first from left to right and then from top to bottom. In alternate implementations, the specific algorithm can be modified to support other document layouts. Given the calculations above, in the document shown in FIG. 2, hyperlink 208 is determined to be the most appropriate element to receive the focus in response to a right directional input when hyperlink 206 is the element that currently has the focus because although hyperlink 210 is horizontally closer to the currently focused element, hyperlink 208 vertically overlaps hyperlink 206 and hyperlink 210 does not vertically overlap hyperlink 206.

Left Directional Input

Similarly, if a focusable element E meets the following criteria, then E is considered an appropriate element to receive focus when the directional input indicates moving focus to the left: E is within the displayable area of the document. E.mid<F.mid (The midpoint of E is to the left of the midpoint of F.) (E.bottom−F.bottom)<=LaxHeight1 OR (E.top−F.top)<=LaxHeight1, where LaxHeight1 is a configurable tolerance value used to compare the vertical display locations of element E and element F. In the described implementation, LaxHeight1 is derived from F.height and E.height, such as LaxHeight1=(max(F.height, E.height))/4. (E is at the same level or above F, or E is below F by no more than LaxHeight1.)

Element E is determined to be the most appropriate element to receive the focus when compared to element W when a left directional input is received if any of the following is true: E.vertoverlap>=0 AND W.vertoverlap<0 (E vertically overlaps F but W does not vertically overlap F.) E.vertoverlap<0 AND W.vertoverlap<0 AND E.vertoverlap>W.vertoverlap (Neither E nor W vertically overlap F, but E is vertically closer to F) abs(E.vertoverlap−W.vertoverlap)<=LaxHeight2 AND E.right>W.right, where LaxHeight2 is a configurable tolerance value used to compare the vertical overlap of E and W with respect to F. In the described implementation, LaxHeight2 is derived from the heights of each of the elements involved in this comparison, such as LaxHeight2=(min(F.height, E.height, W.height))/3. (E and W have similar overlap values, but E is horizontally closer to F) E.vertoverlap>(W.vertoverlap+LaxHeight2) AND ((E.right>Wright) (E has a greater vertical overlap and E is horizontally closer to F.) E.vertoverlap>(W.vertoverlap+LaxHeight2) AND (E.%vertoverlap>W.%vertoverlap) (E has a greater vertical overlap and E has a greater percentage vertical overlap.) (E.right>W.right) AND (E.%vertoverlap>W.%vertoverlap) (E is horizontally closer to F and E has a greater percentage vertical overlap.)

Vertical Focus Navigation

Vertical focus navigation pertains to the moving of focus from one element to another element in response to an up or down directional input. In an implementation of directional focus navigation, when moving focus vertically, preference is first given to a focusable element that is structurally close to the element that currently has the focus. Preference is next given to a focusable element that has horizontal coordinates closest to the horizontal coordinates of the last element that got focus by means other than an up or down directional input. Details of a vertical focus navigation implementation will be described below with reference to FIGS. 3 and 4.

Down Directional Input

FIG. 3 illustrates a view of a document that includes several focusable elements, including a table structure. Box 302 represents the viewable area supported by the browser. Box 304 represents the document. Table 306 is table structure within document 304. Cell4 308 is the element that currently has the focus (indicated by the dashed box) and cell7 310 is another cell in table 306 that is also a focusable element. Button 312 is another focusable element within document 304 that is not within table structure 306.

Documents that can be rendered using a rendering engine can be defined in terms of hierarchical tree structure of elements. For example, the document 304 illustrated in FIG. 3, can be described in terms of a tree structure in which the document itself is the root element of the tree structure. Table 306 and button 312 are child elements of the root element. Cell4 308 and cell7 310 are focusable elements that are children of the table element in the tree structure.

When the rendering engine receives a down directional input (e.g., a user presses a down arrow key), the rendering engine determines which, if any, of the other focusable elements (i.e., hyperlink 310 or button 312) is the most appropriate element to receive the focus next. (This process is described above with reference to blocks 102-120 shown in FIG. 1a.)

The following mathematical definitions will be used below in vertical focus navigation equations that may be used in an implementation of a rendering engine that supports directional focus navigation: F=element that has the current focus; E=focusable element that is being evaluated; W=focusable element that is currently identified as the most appropriate focusable element to receive the focus so far; x.left=the left coordinate of the display location of element x; x.right=the right coordinate of the display location of element x; x.top=the top coordinate of the display location of element x; x.bottom=the bottom coordinate of the display location of element x; x.width=x.right−x.left; x.height=x.bottom−x.top; x.mid=x.top+(x.height)/2; x.DistanceToCommonAncestor=the number of hierarchical levels, according to an element tree structure, between element x and the closest ancestor element that is common to both element x and element F; CurrentLeft=the left coordinate of the last element that got focus by means other than an up or down directional input; CurrentRight=the right coordinate of the last element that got focus by means other than an up or down directional input; and x.horizoverlap=min(x.right−CurrentLeft, CurrentRight−x.left).

The above (and all following) equations are written using the assumption that the display area can be mapped to a two-dimensional grid in which the upper-left-most corner has (x,y) coordinates (0,0).

If a focusable element E meets the following criteria, then E is considered an appropriate element to receive focus when the directional input indicates moving focus down: E is within the displayable area of the document; (F.bottom−E.top)<LaxHeight3, where LaxHeight3 is a configurable tolerance value used to compare the vertical display locations of element E and element F. In the described implementation, LaxHeight3 is derived from F.height and E.height, such as LaxHeight3=(min(F.height, E.height))/4. (E is lower than F or the top edge of E is above the bottom edge of F by no more than LaxHeight3.)

Given the document illustrated in FIG. 3, hyperlink 310 and button 312 both qualify as appropriate elements to receive focus when a down directional input is received while the focus is on hyperlink 308.

As described above with reference to block 116 shown in FIG. 1, the browser compares the elements that qualify as appropriate elements to receive the focus to determine the most appropriate element to receive the focus. In this implementation, element E is determined to be the most appropriate element to receive the focus when a down directional input is received if any of the following is true: E.DistanceToCommonAncestor>W.DistanceToCommonAncestor (E is structurally closer to F.) (E.DistanceToCommonAncestor=W.DistanceToCommonAncestor) AND (W.bottom−E.top>=compareHeight) AND (E.horizoverlap>W.horizoverlap), where compareHeight is a configurable tolerance value used to compare the vertical display locations of element E and element W. In the described implementation, compareHeight is derived from the heights of element E and element W, such as compareHeight=(min(E.height, W.height))/4. (E is structurally equal to W, E is vertically closer to F (or the vertical distance between E and F is approximately equal to the vertical distance between W and F), and E has more horizontal overlap with the element that had focus when up/down navigation began than does W.) (E.DistanceToCommonAncestor=W.DistanceToCommonAncestor) AND (W.bottom−E.top>=compareHeight AND (W.width>=E.width) AND (W.left<=E.left), where compareHeight is a configurable tolerance value used to compare the vertical display locations of element E and element W. In the described implementation, compareHeight is derived from the heights of element E and element W, such as compareHeight=(min(E.height, W.height))/4. (E is structurally equal to W, E is vertically closer to F (or the vertical distance between E and F is approximately equal to the vertical distance between W and F), and W horizontally contains E.) (E.DistanceToCommonAncestor=W.DistanceToCommonAncestor) AND (W.bottom−E.top>=compareHeight AND (E.width>=W.width) AND (E.left<=W.left), where compareHeight is a configurable tolerance value used to compare the vertical display locations of element E and element W. In the described implementation, compareHeight is derived from the heights of element E and element W, such as compareHeight=(min(E.height, W.height))/4. (E is structurally equal to W, E is vertically closer to F (or the vertical distance between E and F is approximately equal to the vertical distance between W and F), and E horizontally contains W.) (E.DistanceToCommonAncestor=W.DistanceToCommonAncestor) AND (E.bottom<=W.top). (E is structurally equal to W, and E is completely above W.)

In this implementation, preference is given first to an element that is structurally closer to the currently focused element, as defined by the tree structure that represents the document. If a decision between multiple focusable elements remains, preference is then given to an element that is horizontally closer to the element that had focus when up/down navigation began. Therefore, in the document shown in FIG. 3, hyperlinked Cell7 310 is determined to be the most appropriate element to receive the focus in response to a down directional input when hyperlinked Cell4 308 is the element that currently has the focus. Hyperlinked Cell7 310 is given preference because although focusable button 312 is vertically closer to hyperlink 308, hyperlinked Cell7 310 is structurally closer to hyperlinked Cell4 308 based on the element tree structure that represents document 304. That is, the common ancestor between hyperlink 308 and Cell7 310 (i.e., table 306) is closer to hyperlink 308 than the common ancestor between hyperlink 308 and button 312 (i.e., document 304) is to hyperlink 308. As a result, hyperlink 310 is selected as the next element to receive focus because it has the closest ancestor element in common with the currently focused element, according to an element tree structure that represents the document.

FIG. 4 illustrates a view of a document that includes several focusable elements that are structurally equivalent based on an element tree structure representation of the elements in the document. For this discussion, it is assumed that hyperlink 406 is the element that currently has focus (indicated by the dashed line). Furthermore, it is assumed that hyperlink 406 received the focus based on something other than an up or down directional input. For example, hyperlink 406 may have been given the focus when the document was initially rendered or in response to a left or right directional input. When the rendering engine receives a down directional input (e.g., a user presses a down arrow key), the rendering engine determines, based on the equations described above, the most appropriate focusable element to receive the focus in response to the down directional input.

Link02-Link22 are all identified as appropriate elements to receive focus in response to the down directional input because each is within the focusable area of the document (indicated by box 402), the midpoint of each is below the midpoint of the currently focused element, and the top of each is below the bottom of the currently focused element.

When the focus is on element 406 and the rendering engine receives a down directional input, element 408 is given focus because it is vertically closer to the currently focused element 406 than any of the other elements that were determined appropriate for receiving focus.

When the focus is on element 408 and the rendering engine receives another down directional input, Link03-Link22 are all identified as appropriate elements to receive focus because they are below the currently focused element, 408. Because they are vertically closer to the currently focused element, Link03 and Link 04 are given preference. To decide between Link03 and Link04, the rendering engine compares the horizontal location of each with the horizontal location of the element that had focus when the up/down navigation began, which is hyperlink 406. Because Link04 is horizontally closer to hyperlink 406 than is Link03, hyperlink 410 (Link04) is given the focus in response to a down directional input received when the focus is on hyperlink 408.

Similarly, when the focus is on element 410 and the rendering engine receives another down directional input, Link05-Link22 are all identified as appropriate elements to receive focus because they are below the currently focused element, 410. Because they are vertically closer to the currently focused element, Link05-Link07 are given preference. To decide between Link05, Link06, and Link07, the rendering engine compares the horizontal location of each with the horizontal location of the element that had focus when the up/down navigation began, which is hyperlink 406. Because Link07 is horizontally closer to hyperlink 406 than are Link05 or Link06, hyperlink 412 (Link07) is given the focus in response to a down directional input received when the focus is on hyperlink 410.

By the same rationale, if the rendering engine receives another down directional input while focus is on element 412, focus will move to element 414. When focus is on element 414 and the rendering engine receives another down directional input, focus moves to element 416. Finally, when focus is on element 414 and the rendering engine receives another down directional input, focus move to element 418.

Up Directional Input

Similarly, if a focusable element E meets the following criteria, then E is considered an appropriate element to receive focus when the directional input indicates moving focus up: E is within the displayable area of the document; (E.bottom−F.top)<LaxHeight3, where LaxHeight3 is a configurable tolerance value used to compare the vertical display locations of element E and element F. In the described implementation, LaxHeight3 is derived from the heights of element E and element F, such as LaxHeight3=(min(F.height, E.height))/4. (E is above F or the lower edge of E is below the top edge of F by no more than LaxHeight3.)

Element E is determined to be the most appropriate element to receive the focus when an up directional input is received if any of the following is true: E.DistanceToCommonAncestor>W. DistanceToCommonAncestor (E is structurally closer to F.) (E.DistanceToCommonAncestor=W.DistanceToCommonAncestor) AND (E.bottom −W.top>=compareHeight) AND (E.horizoverlap >W.horizoverlap), where compareHeight is a configurable tolerance value used to compare the vertical display locations of element E and element W. In the described implementation, compareHeight is derived from the heights of element E and element W, such as compareHeight=(min(E.height, W.height))/4. (E is structurally equal to W, E is vertically closer to F (or the vertical distance between E and F is approximately equal to the vertical distance between W and F), and E has more horizontal overlap with the element that had focus when up/down navigation began than does W.)

Download full PDF for full patent description/claims.




You can also Monitor Keywords and Search for tracking patents relating to this Directional focus navigation patent application.
###
monitor keywords



Keyword Monitor How KEYWORD MONITOR works... a FREE service from FreshPatents
1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored.
3. Each week you receive an email with patent applications related to your keywords.  
Start now! - Receive info on patent apps like Directional focus navigation or other areas of interest.
###


Previous Patent Application:
Using gesture objects to replace menus for computer control
Next Patent Application:
Enabling access to rich data
Industry Class:
Data processing: presentation processing of document

###

FreshPatents.com Support - Terms & Conditions
Thank you for viewing the Directional focus navigation patent info.
- - - AAPL - Apple, BA - Boeing, GOOG - Google, IBM, JBL - Jabil, KO - Coca Cola, MOT - Motorla

Results in 0.83051 seconds


Other interesting Freshpatents.com categories:
Qualcomm , Schering-Plough , Schlumberger , Texas Instruments , g2