Kamil Jarosz
409f01e42c
avm2: Add support for focusOut events
2024-07-25 16:38:06 +02:00
Kamil Jarosz
f79ab195be
avm2: Add EventObject::focus_event
...
This method allows constructing FocusEvents.
2024-07-25 16:38:06 +02:00
Kamil Jarosz
021de2bf91
core: Fix grammar in docs
2024-07-25 16:38:06 +02:00
Lord-McSweeney
cd9cfa6b26
core: Fix off-by-one in `MovieClip.frame_exists_within_scene`
2024-07-25 15:59:16 +03:00
Crowdin Bot
9065ce3a03
chore: Update translations from Crowdin
2024-07-24 21:57:36 +02:00
Aaron Hill
f6737b68f4
avm2: Add 'avm_caught' trace target to log caught exceptions
...
When the `avm_debug` feature is enabled, we log all caught exceptions
under the `avm_caught` target at INFO level. This is useful for
debugging SWFs that catch and suppress exceptions, which can end up
hiding errors from unimplemented flash APIs.
2024-07-24 21:03:29 +02:00
Moulins
cb10589758
core: Don't make dependant AvmStrings pointing to static buffers
2024-07-24 17:30:04 +02:00
Moulins
aa956a286f
core: Rename `avm_string::Source::Owned` to `Managed`
...
This avoids confusion with the owned/dependant distinction
2024-07-24 17:30:04 +02:00
Kamil Jarosz
fe82a23b61
avm2: Implement TextField.getParagraphLength
2024-07-24 17:12:54 +02:00
Kamil Jarosz
670e5f9ac2
avm2: Implement TextField.getFirstCharInParagraph
2024-07-24 17:12:54 +02:00
Kamil Jarosz
e9b8cfae1a
wstr: Add swf_is_newline util method
2024-07-24 17:12:54 +02:00
Kamil Jarosz
9912141114
core: Use swf_is_whitespace where possible
2024-07-24 17:12:54 +02:00
TÖRÖK Attila
9e3035a8bb
chore: Fix new beta lint `clippy::manual_inspect`
2024-07-23 18:54:04 +02:00
dependabot[bot]
e9c610816b
build(deps): bump enumset from 1.1.3 to 1.1.4 in the cargo-minor group
...
Bumps the cargo-minor group with 1 update: [enumset](https://github.com/Lymia/enumset ).
Updates `enumset` from 1.1.3 to 1.1.4
- [Changelog](https://github.com/Lymia/enumset/blob/main/RELEASES.md )
- [Commits](https://github.com/Lymia/enumset/compare/v1.1.3...v1.1.4 )
---
updated-dependencies:
- dependency-name: enumset
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 23:42:23 +02:00
TÖRÖK Attila
bff15397d3
chore: Switch to the `image::ImageReader` alias from the deprecated `image::io::Reader`
2024-07-22 20:13:02 +02:00
dependabot[bot]
88b5fafd7d
build(deps): bump the cargo-minor group with 10 updates
...
Bumps the cargo-minor group with 10 updates:
| Package | From | To |
| --- | --- | --- |
| [image](https://github.com/image-rs/image ) | `0.25.1` | `0.25.2` |
| [thiserror](https://github.com/dtolnay/thiserror ) | `1.0.62` | `1.0.63` |
| [tokio](https://github.com/tokio-rs/tokio ) | `1.38.0` | `1.38.1` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.71` | `2.0.72` |
| [toml_edit](https://github.com/toml-rs/toml ) | `0.22.15` | `0.22.16` |
| [embed-resource](https://github.com/nabijaczleweli/rust-embed-resource ) | `2.4.2` | `2.4.3` |
| [gloo-net](https://github.com/rustwasm/gloo ) | `0.5.0` | `0.6.0` |
| [zip](https://github.com/zip-rs/zip2 ) | `2.1.3` | `2.1.5` |
| [libloading](https://github.com/nagisa/rust_libloading ) | `0.8.4` | `0.8.5` |
| [toml](https://github.com/toml-rs/toml ) | `0.8.14` | `0.8.15` |
Updates `image` from 0.25.1 to 0.25.2
- [Changelog](https://github.com/image-rs/image/blob/main/CHANGES.md )
- [Commits](https://github.com/image-rs/image/compare/v0.25.1...v0.25.2 )
Updates `thiserror` from 1.0.62 to 1.0.63
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.62...1.0.63 )
Updates `tokio` from 1.38.0 to 1.38.1
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1 )
Updates `syn` from 2.0.71 to 2.0.72
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.71...2.0.72 )
Updates `toml_edit` from 0.22.15 to 0.22.16
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.15...v0.22.16 )
Updates `embed-resource` from 2.4.2 to 2.4.3
- [Release notes](https://github.com/nabijaczleweli/rust-embed-resource/releases )
- [Commits](https://github.com/nabijaczleweli/rust-embed-resource/compare/v2.4.2...v2.4.3 )
Updates `gloo-net` from 0.5.0 to 0.6.0
- [Release notes](https://github.com/rustwasm/gloo/releases )
- [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rustwasm/gloo/compare/0.5.0...0.6.0 )
Updates `zip` from 2.1.3 to 2.1.5
- [Release notes](https://github.com/zip-rs/zip2/releases )
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md )
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.3...v2.1.5 )
Updates `libloading` from 0.8.4 to 0.8.5
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.8.4...0.8.5 )
Updates `toml` from 0.8.14 to 0.8.15
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.14...toml-v0.8.15 )
---
updated-dependencies:
- dependency-name: image
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: tokio
dependency-type: direct:production
update-type: version-update:semver-patch
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
- dependency-name: embed-resource
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: gloo-net
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: zip
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: libloading
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: toml
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 20:13:02 +02:00
Kamil Jarosz
92b94d133c
avm2: Stub orientation-related Stage API
2024-07-22 19:41:50 +03:00
Kamil Jarosz
c6fb941da1
avm2: Add flash.display.StageOrientation
2024-07-22 19:41:50 +03:00
Kamil Jarosz
55cf29c864
avm2: Remove unused imports from Stage
2024-07-22 19:41:50 +03:00
Paulo Medeiros
ead80a98a3
avm2: Stub flash.display.Stage.setAspectRatio
2024-07-22 11:53:02 +02:00
Paulo Medeiros
f978a0c2e7
avm2: Add flash.display.StageAspectRatio
2024-07-22 11:53:02 +02:00
Aaron Hill
71c3245d14
avm2: Add static methods to XML in public namespace
...
'My Champion Oliver' relies on being able to call these methods
without the AS3 namespace.
2024-07-19 17:06:41 +03:00
Kamil Jarosz
a6d321e1de
avm2: Implement `TextField.alwaysShowSelection`
2024-07-19 14:15:58 +02:00
Kamil Jarosz
842f310fe7
core: Add option of rendering gray selection when text field is not focused
2024-07-19 14:15:58 +02:00
Kamil Jarosz
f8577a843d
core: Use non-zero winding rule for fonts
2024-07-19 12:40:12 +02:00
Kamil Jarosz
aab4f7122b
avm2: Support non-zero winding rule when drawing paths
2024-07-19 12:40:12 +02:00
Kamil Jarosz
b160dd6dd9
core: Add support for non-zero winding rule
2024-07-19 12:40:12 +02:00
Lord-McSweeney
74b5c24b51
avm2: Fix regression with unreachable exceptions
2024-07-17 21:30:13 +03:00
Lord-McSweeney
d9ce8ef9ca
avm2: Only look at valid Exceptions in verifier
2024-07-16 23:03:30 +03:00
Lord-McSweeney
c0565d81e6
core: Log an error when a URLLoader load fails
2024-07-16 12:24:40 +02:00
Kamil Jarosz
b8fe2b5cba
avm2: Fix EventDispatcher.dispatchEvent return value
...
This fixes a regression introduced in 250bf64
.
2024-07-16 10:53:42 +03:00
Aaron Hill
6e93927f63
web: Check for locked 'Player' mutex and reschedule with setTimeout
...
We use 'wasm-bindgen-futures' as our futures executor on web, which
in turn uses 'queueMicroTask'. This can result in the browser executing
one of our futures while we're still inside our `requestAnimationFrame`
callback (in particular, while we still have the `Player` mutex locked).
We now detect this condition by attempting the lock the Player mutex
inside of our `spawn_local` future. If this fails, we `await`
a `setTimeout`-based promise, which ensures that our code runs in
a new top-level `setTimeout` javascript 'task' (outside of our
`requestAnimationFrame` callback).
2024-07-15 22:46:22 +02:00
Adrian Wielgosik
c9fedb2cf6
avm2: Add a fast path in coerce_s
2024-07-15 22:30:46 +02:00
Adrian Wielgosik
131b2c21f4
avm2: Use small string cache when stringifying ints < 10
2024-07-15 22:30:46 +02:00
Kamil Jarosz
1c3128c8e1
avm2: Use click index for double click detection
2024-07-15 21:51:18 +02:00
Kamil Jarosz
0b64bc681a
core: Add click index to ClipEvent::Release
2024-07-15 21:51:18 +02:00
Kamil Jarosz
4ec36d5b3a
avm2: Dispatch mouseWheel event on mouse wheel
2024-07-15 21:36:37 +02:00
Kamil Jarosz
922e281395
core: Implement keyboard navigation
...
This patch implements keyboard navigation, i.e. changing focus using
arrows when an object is highlighted.
2024-07-15 21:19:21 +02:00
Kamil Jarosz
fdf28ccc6e
core: Refactor tab ordering code
2024-07-15 21:19:21 +02:00
dependabot[bot]
51e868d8ac
build(deps): bump the cargo-minor group with 3 updates
...
Bumps the cargo-minor group with 3 updates: [clap](https://github.com/clap-rs/clap ), [thiserror](https://github.com/dtolnay/thiserror ) and [syn](https://github.com/dtolnay/syn ).
Updates `clap` from 4.5.8 to 4.5.9
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.8...v4.5.9 )
Updates `thiserror` from 1.0.61 to 1.0.62
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62 )
Updates `syn` from 2.0.70 to 2.0.71
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.70...2.0.71 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 13:26:34 +02:00
Lord-McSweeney
bed5a2fd86
avm2: Add several AIR classes and version-gate `ImageDecodingPolicy` to SWF13+
...
`NativeProcess`, `NativeProcessStartupInfo`, and `File` classes
2024-07-14 23:25:57 +02:00
Lord-McSweeney
2a38a2caf2
avm2: Fix the globals ordering a little
2024-07-14 23:25:57 +02:00
Lord-McSweeney
ceebf2bf64
avm2: Add `flash.net::NetGroup` class
2024-07-14 17:28:27 +03:00
Adrian Wielgosik
48db0e23c4
core: Fix panic on unsetting self-referential masker
2024-07-12 22:35:07 +02:00
Adrian Wielgosik
261ba7374e
avm2: Correct setting builtins' types on classes
2024-07-12 21:56:37 +02:00
Kamil Jarosz
bd98f72b96
core: Return from handle_event() whether the event has been handled
2024-07-12 15:41:08 +02:00
Kamil Jarosz
7621553a34
avm2: Properly detect whether the event has been handled in event_dispatch_to_avm2
2024-07-12 15:41:08 +02:00
Kamil Jarosz
250bf64a92
avm2: Return whether the event has been handled from dispatch_event
...
Before that, dispatch_event returned whether the event has been
canceled, but the value has never been used.
It's possible to check whether the event has been canceled
by invoking is_cancelled() on the event.
2024-07-12 15:41:08 +02:00
Kamil Jarosz
57e90d947b
avm2: Fire right & middle click events
2024-07-12 15:41:08 +02:00
Kamil Jarosz
c7f1f33843
avm2: Add more specific mouse event constructors
2024-07-12 15:41:08 +02:00
Kamil Jarosz
010310dd1b
avm2: Add an option to simulate event dispatch
2024-07-12 15:41:08 +02:00
Kamil Jarosz
ebfff6aea1
core: Fire clip events on right & middle clicks
2024-07-12 15:41:08 +02:00
Kamil Jarosz
62254d7532
core: Add clip events related to right and middle clicks
2024-07-12 15:41:08 +02:00
Kamil Jarosz
392101611e
core: Add support for pressing multiple mouse buttons
2024-07-12 15:41:08 +02:00
Kamil Jarosz
368a95cf3b
core: Add button parameter to is_mouse_down()
2024-07-12 15:41:08 +02:00
Kamil Jarosz
7a52360965
avm2: Parameterize mouse button in mouse_event()
2024-07-12 15:41:08 +02:00
Kamil Jarosz
d625c0a779
avm2: Add API versions to MouseEvent constants
2024-07-12 15:41:08 +02:00
Kamil Jarosz
01ad20f8a3
core: Hide focus highlight on invalid and empty bounds
2024-07-12 14:44:49 +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
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
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
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
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
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
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
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
Lord-McSweeney
e222a1646c
avm2: Remove `Class::class_init`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
13ee356b8c
avm2: Fix function prototype
2024-07-08 12:59:15 +03:00
Lord-McSweeney
bac18c1a84
avm2: Simplify `ClassObject::link_type`
2024-07-08 12:59:15 +03:00
Lord-McSweeney
9c872860e9
avm2: Actually apply class refactor to ClassObject and describeType
...
This requires changing the AVM2 ClassObject symbol registry to use Classes
2024-07-08 12:59:15 +03:00
Lord-McSweeney
bb50a6f926
avm2: Split `Class` into a i_class `Class` and a c_class `Class`
2024-07-08 12:59:15 +03:00
TÖRÖK Attila
acc84769b6
desktop,chore: Bump `egui` to `v0.28.1`
2024-07-08 01:29:40 +02:00
Nathan Adams
dd7692b211
core: Document audio+DO methods slightly
2024-07-07 23:57:24 +02:00
Nathan Adams
229697fbbd
core: Correctly handle sound events attached to buttons. Fixes #2473
2024-07-07 23:57:24 +02:00
Nathan Adams
1ffb9d2ab9
avm1: Remove sounds when their clip is unloaded, fixes #7447 , #14663
2024-07-07 23:57:24 +02:00
Nathan Adams
84df034f84
core: When stopping sounds associated with movieclips, go by path instead of pointer - fixes #9795
2024-07-07 23:57:24 +02:00
Kamil Jarosz
dda4cbfd62
core: Use existing methods for rounding twips
...
Replace `round_to_pixel_half_even` and `round_down_to_pixel` with
existing methods used for rounding twips to pixels.
2024-07-07 21:45:52 +02:00