Re: Pointer lock updated with clarification of lock and focus requirements.

On Sat, Mar 16, 2013 at 7:51 AM, Glenn Maynard <glenn@zewt.org> wrote:

> On Fri, Mar 15, 2013 at 5:24 PM, Vincent Scheib <scheib@google.com> wrote:
>
>> After discussion with Olli Pettay I have clarified portions of the
>> pointer lock specification.
>>
>> https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html
>> https://dvcs.w3.org/hg/pointerlock/diff/6543d83c0b74/index.html
>>
>> When requesting pointer lock, this paragraph replaces previous statements
>> regarding the target being in the DOM tree.
>> """
>> Pointer lock must succeed only if the target is in the active document of
>> a browsing context which is (or has an ancestor browsing context which is)
>> in focus by a window which is in focus by the operating system's window
>> manager. The target element and its browsing context need not be in focus.
>> """
>>
>> In Requirements, clarification was added that focus MAY be shifted out of
>> a document and into others without exiting lock:
>> """
>> The Pointer Lock API must exit the pointer lock state if the target is
>> removed from its document, or the user agent, window, or tab loses focus.
>> Moving focus between elements of active documents, including between
>> browsing contexts, does not exit pointer lock. E.g. using the keyboard to
>> move focus between contents of frames or iframes will not exit.
>> """
>>
>> Feedback and suggestions welcome.
>>
>
> Why would pointer lock care about focus?
>

Multiple browser contexts may be displayed in one window by a browser, and
in most browsers pressing TAB key will move between focusable elements,
such as buttons, including across browsing contexts (e.g. crossing iframe
boundaries). The spec was updated the explicitly clarify that pointer lock
does not care about this focus across browsing contexts.


> If the browsing context doesn't have focus, pointer lock may be released
> at the system level, but that should be transparent to the page and
> reestablished automatically if the user returns.
>

The property of the user agent exiting pointer lock when the window looses
focus is intentionally included in the specification to increase the
ability of a user to exit pointer lock and return to the browser without
being forced back into lock. They can navigate away from a page without the
page able to re-capture the pointer. This is why a user gesture is required
for re-entry. This will be clarified when I close
https://www.w3.org/Bugs/Public/show_bug.cgi?id=19297 pending Mozilla's
implementation of https://bugzilla.mozilla.org/show_bug.cgi?id=737100#c5.


> Pages shouldn't need to care about this.
>
> This is the same as fullscreen--obviously a page shouldn't be forced out
> of fullscreen if the user switches to another tab or application, unless
> that's the system convention (which it isn't on any platform I know of).
>
> (By the way, if a web specification finds itself talking about "windows"
> or "window managers" or "tabs" normatively, something is probably wrong.
> Interfaces at a higher abstraction level than browsing contexts are
> implementation details.  Please see
> http://www.whatwg.org/specs/web-apps/current-work/#dom-document-hasfocusfor platform-independent language.)


Hasfocus relates to the document. I suppose I can re-word to something
like, "all documents of all active browsing contexts which
are descendants of the top most browsing context do not have focus" instead
of "user agent tab or window loses focus". :\ yuck.


>
> --
> Glenn Maynard
>
>

Received on Monday, 18 March 2013 17:29:45 UTC