Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core,avm1: Add support for controlling focus highlight with _focusrect #15838

Merged
merged 9 commits into from
Apr 4, 2024

Conversation

kjarosh
Copy link
Member

@kjarosh kjarosh commented Apr 2, 2024

Related to #5443.

This patch adds support for _focusrect in AVM1 along with tests:

  • Tests for the _focusrect property for SWF 5,6,7
  • Tests for the _focusrect behavior regarding focus highlight rendering for SWF 5,6

The property _focusrect allows specifying whether an object should be highlighted by keyboard focus. For SWF <=5 that was possible globally, and since SWF 6 the global option only has been the default, which may be overridden using a local _focusrect property. Regarding the behavior of the property itself, tests were added for SWF 5,6,7 to cover all differences, which include treating the property value as bool/number or using the property in different contexts.

The field focus_rect is available for each interactive object, and its value is used to control highlight rendering. The notable exception is the TextField, which despite having a focus, is incapable of rendering a highlight. That is why the focus_rect_supported field has been added to control this behavior.

Copy link
Contributor

@Dinnerbone Dinnerbone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're on fire!

kjarosh added 9 commits April 4, 2024 00:07
Some of the Object properties are available only in SWF6+.
The property `_focusrect` allows specifying whether an object should be
highlighted by keyboard focus. For SWF <=5 that was possible globally,
and since SWF 6 the global option only has been the default,
which may be overridden using a local `_focusrect` property.
This test verifies the behavior of _focusrect for SWF 7.
This test verifies the behavior of _focusrect for SWF 6.
This test verifies the behavior of _focusrect for SWF 5.
The field `focus_rect` is available for each interactive object,
and its value is used to control highlight rendering.
The notable exception is the TextField, which despite having a focus,
is incapable of rendering a highlight.
That is why the `focus_rect_supported` field has been added
to control this behavior.
This test verifies the behavior of _focusrect for SWF6.
This test verifies the behavior of _focusrect for SWF5.
Although full AVM2 support is not there yet, stageFocusRect is
not ignored anymore.
@Dinnerbone Dinnerbone merged commit 53f49eb into ruffle-rs:master Apr 4, 2024
17 checks passed
@kjarosh kjarosh deleted the focusrect branch April 4, 2024 09:07
@kjarosh
Copy link
Member Author

kjarosh commented Apr 4, 2024

Forgot to mention that this PR improves coverage for #310, #263, #243

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

2 participants