Kamil Jarosz
d625c0a779
avm2: Add API versions to MouseEvent constants
2024-07-12 15:41:08 +02:00
Kamil Jarosz
4e3b59b360
tests: Add focus_highlight_empty_clip test
2024-07-12 14:44:49 +02:00
Kamil Jarosz
01ad20f8a3
core: Hide focus highlight on invalid and empty bounds
2024-07-12 14:44:49 +02:00
Kamil Jarosz
5d30c9368e
tests: Add focusrect_focuslost test
...
This test verifies the behavior of the current focus and focusrect
when the player loses focus.
2024-07-12 14:20:35 +02:00
Kamil Jarosz
6a9f88d060
tests: Add FocusLost, FocusGained automated events
2024-07-12 14:20:35 +02:00
Kamil Jarosz
5441749e3e
web: Use browser focus events for focus management
...
This patch changes how the player focus is managed.
Before this patch, `instance.has_focus` was unrelated
to the current focus managed by the browser.
When the user clicked anywhere on the window, it was set to `false`,
and when the user clicked on the player, it was set to `true`.
This had two major issues.
1. When the user clicked on the player, `has_focus` was set to `false`,
and then again to `true`. That was problematic when listening
to focus change events.
2. Not using browser's focus makes it harder to integrate with Ruffle,
i.e. tab out of Ruffle.
This patch uses browser's focus management to detect focus
and listen to focus events:
1. on `focusin` – FocusGained event is fired,
2. on `focusout` – FocusLost event is fired, and
3. on `pointerdown` – focus is manually set to the canvas.
The canvas has `tabindex` set to -1 in order to be focusable.
2024-07-12 14:20:35 +02:00
Kamil Jarosz
599352093c
desktop: Pass focus events to the player
2024-07-12 14:20:35 +02:00
Kamil Jarosz
9a88496763
core: Reset focus on player focus loss
...
FP resets focus when the window (or the element on web) loses its focus.
2024-07-12 14:20:35 +02:00
Kamil Jarosz
f71e63379d
tests: Add avm2/edittext_html_condensewhite test
2024-07-12 14:01:24 +02:00
Kamil Jarosz
2a667d713d
tests: Add avm1/edittext_html_condensewhite_swf7 test
2024-07-12 14:01:24 +02:00
Kamil Jarosz
25caca16f1
tests: Add avm1/edittext_html_condensewhite_swf8 test
2024-07-12 14:01:24 +02:00
Kamil Jarosz
6b0bbb85b1
avm2: Implement TextField.condenseWhite
2024-07-12 14:01:24 +02:00
Kamil Jarosz
12edbc8b75
avm1: Implement TextField.condenseWhite
2024-07-12 14:01:24 +02:00
Kamil Jarosz
83179129e3
core: Implement condensing whitespace in HTML
2024-07-12 14:01:24 +02:00
Kamil Jarosz
f54087143f
tests: Assert on newlines in HTML tests
2024-07-12 14:01:24 +02:00
Kamil Jarosz
96468a4445
core: Use CR as the newline character in HTML
...
Tests show that CR is the newline character internally used in FP
both on Linux and on Windows.
2024-07-12 14:01:24 +02:00
TÖRÖK Attila
a66ba15051
ci: Get wasm-opt directly from GitHub using sigoden/install-binary@v1
...
... instead of from conda-forge using miniconda.
And using wget+tar in the extension builder Dockerfile.
2024-07-12 13:40:12 +02:00
riku-42
e93cf15b7c
web/extension: Use source-map as webpack devtool for debug builds
2024-07-12 13:22:16 +02:00
Lord-McSweeney
d7a46b1eb2
avm2: Add `flash.text.engine::TextLineMirrorRegion` class
2024-07-12 13:10:15 +02:00
Lord-McSweeney
af6a66b8cf
avm2: Partially implement `flash.trace::Trace`
2024-07-12 13:10:15 +02:00
Aaron Hill
c852990346
swf: Remove 'libflate' feature
...
The 'flate2' crate already supports both C and pure Rust
backends, so we don't gain anything by supporting libflate
2024-07-12 09:09:49 +02:00
Lord-McSweeney
ea0bbce184
avm2: Use return type of `ConstructProp` in optimizer
2024-07-12 09:50:58 +03:00
Lord-McSweeney
604ac514b8
avm2: Properly push return value of `getsuper` in optimizer
2024-07-12 09:50:58 +03:00
Lord-McSweeney
08b2c5d0d6
avm2: Function's c_class should be named `Function$`, not `Function`
2024-07-12 09:50:58 +03:00
Lord-McSweeney
f15128f6a2
avm2: Add `CallProperty` -> `Coerce(I/U/D)SwapPop` optimization, propagate types from `AsTypeLate`
2024-07-12 09:50:58 +03:00
Tom Schuster
393ffe05ef
tests: Test for flash.events.NetFilterEvent
2024-07-12 00:20:16 +02:00
Tom Schuster
f788586e22
avm2: Add flash.events.NetFilterEvent
2024-07-12 00:20:16 +02:00
Kamil Jarosz
ac9b39a652
core: Fix double caret rendering in justified text
...
The condition
visible_selection.start() >= *start && visible_selection.end() <= *end
was inaccurate, because the end of the selection is exclusive.
That caused the condition to be true for two adjacent boxes.
For instance:
box 1: from 0 to 6, "hello "
box 2: from 6 to 11, "world"
The caret was rendered for both boxes when it was at position 6.
When applying a correct condition (i.e. treating the end as exclusive)
there is a problem with rendering the caret at the very end of the text,
because the condition will not be triggered for any box
(position 11 in the example above).
That is why a condition specific to this case is added, i.e.
*end == text_len
When the box is the last box in the text, we are forcing
the caret to be rendered.
2024-07-10 14:36:27 +02:00
Tom Schuster
eec5e908ad
tests: Test mismatched E4X tags
2024-07-09 01:01:15 +02:00
Tom Schuster
8768143d7e
avm2: Throw error for missing end tag in E4X
2024-07-09 01:01:15 +02:00
Tom Schuster
5aeae40bc5
avm2: Ignore mismatched end tags in E4X
2024-07-09 01:01:15 +02:00
dependabot[bot]
69abfa4528
build(deps): bump the cargo-minor group with 3 updates
...
Bumps the cargo-minor group with 3 updates: [bitstream-io](https://github.com/tuffy/bitstream-io ), [syn](https://github.com/dtolnay/syn ) and [toml_edit](https://github.com/toml-rs/toml ).
Updates `bitstream-io` from 2.4.2 to 2.5.0
- [Commits](https://github.com/tuffy/bitstream-io/compare/v2.4.2...v2.5.0 )
Updates `syn` from 2.0.69 to 2.0.70
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.69...2.0.70 )
Updates `toml_edit` from 0.22.14 to 0.22.15
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.14...v0.22.15 )
---
updated-dependencies:
- dependency-name: bitstream-io
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: toml_edit
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 00:42:31 +02:00
dependabot[bot]
54ce439a5b
build(deps): bump quick-xml in the cargo-minor group
...
Bumps the cargo-minor group with 1 update: [quick-xml](https://github.com/tafia/quick-xml ).
Updates `quick-xml` from 0.35.0 to 0.36.0
- [Release notes](https://github.com/tafia/quick-xml/releases )
- [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md )
- [Commits](https://github.com/tafia/quick-xml/compare/v0.35.0...v0.36.0 )
---
updated-dependencies:
- dependency-name: quick-xml
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 21:38:42 +02:00
dependabot[bot]
47564b0b4e
build(deps-dev): bump eslint-plugin-react-hooks in /web
...
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks ) from 5.1.0-rc-fb9a90fa48-20240614 to 5.1.0-rc.0.
- [Release notes](https://github.com/facebook/react/releases )
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks )
---
updated-dependencies:
- dependency-name: eslint-plugin-react-hooks
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 14:51:54 +02:00
dependabot[bot]
d4160a70da
build(deps-dev): bump typescript-eslint in /web
...
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) from 8.0.0-alpha.39 to 8.0.0-alpha.41.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/HEAD/packages/typescript-eslint )
---
updated-dependencies:
- dependency-name: typescript-eslint
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 14:44:11 +02:00
sleepycatcoding
ab9bbd3dc1
desktop: Fix open advanced shortcut
...
egui expects most specific shortcuts to be checked first, previously
<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>O</kbd> would open the normal file dialog.
2024-07-08 15:37:31 +03:00
Lord-McSweeney
62fd898c0d
avm2: Remove two unused `Class` functions
...
`define_builtin_class_properties` and `define_slot_number_instance_traits`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
fffcd5184e
avm2: Don't mark a class created from `Class::custom_new` as having its traits already loaded
2024-07-08 12:59:15 +03:00
Lord-McSweeney
1b5daf5981
avm2: Initialize global scope object earlier and remove `set_instance_class`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
0d637d34dd
avm2: Remove `void`'s ClassObject
2024-07-08 12:59:15 +03:00
Lord-McSweeney
f81136af2c
avm2: De-optionify ScriptObjectData.instance_class
2024-07-08 12:59:15 +03:00
Lord-McSweeney
6cc1488f73
avm2: Remove all classless objects
2024-07-08 12:59:15 +03:00
Lord-McSweeney
953a02533f
avm2: Fix created receiver value when constructing function
2024-07-08 12:59:15 +03:00
Lord-McSweeney
73e3728c03
avm2: Merge `init_instance_vtable` into `ClassObject::from_class_partial`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
01bdbd20d6
avm2: Pass a `Mutation` to `VTable::init_vtable` instead of an `UpdateContext`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
343ea346d2
avm2: Rename `Class::instance_vtable` to `Class::vtable`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
a68c48037b
avm2: Remove `class_vtable` field from `ClassObject`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
b67dafb93c
avm2: Convert `i_class` and `c_class` to a single enum
2024-07-08 12:59:15 +03:00
Lord-McSweeney
4442350912
avm2: Push correct type in optimizer for `NewClass` op
2024-07-08 12:59:15 +03:00
Lord-McSweeney
efbaf6a0b0
avm2: Use proper slot type for `TraitKind::Class`
2024-07-08 12:59:15 +03:00