Commit Graph

7076 Commits

Author SHA1 Message Date
TÖRÖK Attila 35f5227e2d core,desktop: Update `wgpu` to `v0.20.1`, bump `egui` 2024-06-18 23:10:43 +02:00
Lord-McSweeney 9c8e4d7dce core: Remove `DataFormat` for `URLLoader` loads since we can just check the string field
Also, don't set the data as variables if there is no data to set.
2024-06-18 20:56:50 +02:00
Lord-McSweeney 7a1ee0e109 core: `URLLoader` should check the data format after loading finishes, not when starting a load 2024-06-18 20:56:50 +02:00
Crowdin Bot a731b82b54 chore: Update translations from Crowdin 2024-06-17 14:57:20 +02:00
Adrian Wielgosik cacfb5a6a4 avm2: Fix and unify converting SWF's 1-based to 0-based slot indexing 2024-06-16 16:11:17 -07:00
Tom Schuster 4463a69c87 avm2: Implement namespace support for flash.xml 2024-06-15 22:26:57 +02:00
Crowdin Bot 8fb214ea71 chore: Update translations from Crowdin 2024-06-14 22:41:19 +02:00
Lord-McSweeney 18c50df838 avm2: Don't get the `Class` class by using `instance_of` in `into_finished_class` 2024-06-13 23:49:52 +02:00
Lord-McSweeney 1705870951 avm2: Class initializers will be called twice when constructing two `ClassObject`s for one `Class` 2024-06-13 23:49:52 +02:00
Lord-McSweeney 7e7032d908 avm2: Remove `constructor`, `native_constructor`, and `call_handler` fields from `ClassObject`
They were already present on `Class`
2024-06-13 23:49:52 +02:00
dependabot[bot] 52404bc3aa build(deps): bump the cargo-minor group with 6 updates
Bumps the cargo-minor group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.4` | `4.5.7` |
| [url](https://github.com/servo/rust-url) | `2.5.0` | `2.5.1` |
| [linkme](https://github.com/dtolnay/linkme) | `0.3.26` | `0.3.27` |
| [regex](https://github.com/rust-lang/regex) | `1.10.4` | `1.10.5` |
| [zip](https://github.com/zip-rs/zip2) | `2.1.2` | `2.1.3` |


Updates `clap` from 4.5.4 to 4.5.7
- [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.4...v4.5.7)

Updates `url` from 2.5.0 to 2.5.1
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.1)

Updates `linkme` from 0.3.26 to 0.3.27
- [Release notes](https://github.com/dtolnay/linkme/releases)
- [Commits](https://github.com/dtolnay/linkme/compare/0.3.26...0.3.27)

Updates `regex` from 1.10.4 to 1.10.5
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.4...1.10.5)

Updates `zip` from 2.1.2 to 2.1.3
- [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.2...v2.1.3)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: linkme
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: quick-xml
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: zip
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 01:05:26 +02:00
Crowdin Bot 4fa5853f88 chore: Update translations from Crowdin 2024-06-13 00:44:49 +02:00
Nathan Adams c9b111996f web: Make serde (more-)optional in core 2024-06-13 00:22:33 +02:00
Kamil Jarosz e8dbd58306 core: Use DisplayObject.movie() instead of context.swf where applicable
This prevents problems in case of mixed-AVM content.
2024-06-13 00:06:10 +02:00
Kamil Jarosz 39e8a15db5 core: Update focus after handling press, not before
Updating focus before handling press caused onRollOut
to be fired before onPress, but it should be fired after.
2024-06-12 23:49:06 +02:00
TÖRÖK Attila 516c56db15 chore: Suppress a `clippy::doc_lazy_continuation` beta lint false positive 2024-06-12 23:09:39 +02:00
TÖRÖK Attila 0d25b5dba8 chore: Fix `clippy::needless_borrows_for_generic_args` beta lint 2024-06-12 22:42:18 +02:00
TÖRÖK Attila 6b4ee7dfde chore: Fix most `clippy::doc_lazy_continuation` beta lints 2024-06-12 22:42:18 +02:00
Lord-McSweeney 0e062c4b9b avm2: Replace two more uses of `instance_of` with `instance_class` 2024-06-12 19:46:32 +02:00
Lord-McSweeney 97f75cc0b4 avm2: Move interface logic from `ClassObject` to `Class` 2024-06-12 19:46:32 +02:00
Lord-McSweeney 90c370d61b avm2: Always store a Class on vtable 2024-06-12 19:46:32 +02:00
Lord-McSweeney 2c9028d2f9 avm2: Replace most uses of `instance_of` with `instance_class`
Also store a Class -> alias mapping instead of a ClassObject -> alias mapping for AMF.
2024-06-12 19:46:32 +02:00
Crowdin Bot 3b9bb3f5db chore: Update translations from Crowdin 2024-06-10 00:02:16 +02:00
Adrian Wielgosik bc85638920 avm2: Port registerClassAlias logic to Rust 2024-06-09 09:14:20 -07:00
Kamil Jarosz 142fc1d232 core: Prevent copying and cutting text from a password field 2024-06-09 15:38:35 +02:00
Kamil Jarosz c23ec0782a core: Prevent pasting empty string when the clipboard is empty 2024-06-09 15:38:35 +02:00
Kamil Jarosz a2751c3c0f core: Add English translations for copy/paste context menu 2024-06-09 15:38:35 +02:00
Kamil Jarosz 6117c3c68e core: Add copy/paste context menu for EditText
This menu is shown when the EditText is focused and the mouse hovers over it.
It has the following elements, which may be disabled
when e.g. the field is not editable / selectable:
* Cut,
* Copy,
* Paste,
* Delete,
* Select All.
2024-06-09 15:38:35 +02:00
Kamil Jarosz 0910104c3b core: Add EditText::is_text_control_applicable
This method is useful for checking whether the given text control code
may be applied to the current state of the EditText.
2024-06-09 15:38:35 +02:00
Kamil Jarosz 1f3c230691 core: Pass UpdateContext to ContextMenuState::build_builtin_items
This simplifies code, as we do not have to access
the same elements over and over.
2024-06-09 15:38:35 +02:00
Adrian Wielgosik 2955add845 avm2: In Array.sortOn, behave better in presence of nonsense args 2024-06-09 11:11:57 +02:00
Lord-McSweeney 1d1eb6c966 avm2: Fix `NewClass` not popping the base class and better null propagation in optimizer 2024-06-08 14:25:43 -07:00
Lord-McSweeney bb7a315afd avm2: Misc. optimizer improvements 2024-06-08 14:25:43 -07:00
Nathan Adams 70fca6fa0a web: Add create_audio to builder 2024-06-08 08:42:04 +02:00
Nathan Adams 3fa8735e97 web: Don't parse config in Rust, do it in Typescript with some tests 2024-06-08 08:42:04 +02:00
Lord-McSweeney 6e53f98068 avm2: Fix performance regression
A `ScriptObject` was being allocated on every `call_method` call
2024-06-08 00:31:29 +02:00
Kamil Jarosz 2704e1f506 core: Implement setting tabChildren for AVM1 for debug UI 2024-06-08 00:12:53 +02:00
Kamil Jarosz b43f23ce9a core: Move a tabChildren-related comment to the proper place 2024-06-08 00:12:53 +02:00
Kamil Jarosz 191e879172 avm2: Properly implement Stage.tabChildren
Stage.tabChildren does not modify the value of tabChildren of the stage,
but rather sets the tabChildren of the root movie.
2024-06-08 00:12:53 +02:00
Kamil Jarosz da80f6d76e debug_ui: Add "Tab children enabled" 2024-06-08 00:12:53 +02:00
Tom Schuster c1ace7edc7 avm2: Use an empty string as the prefix for xmlns= 2024-06-06 20:14:40 +02:00
Kamil Jarosz c3ad08c810 avm1: Treat MovieClip.createTextField params as integers
The parameters x,y,width,height of MovieClip.createTextField
should be integers.
2024-06-06 17:08:52 +02:00
Kamil Jarosz 5c89dd8374 avm2: Make the root movie non-highlightable 2024-06-05 02:08:13 +02:00
Kamil Jarosz c51f13e4e4 debug_ui: Add "Is Root" to Display tab 2024-06-05 02:08:13 +02:00
Kamil Jarosz 348cb6ea6d core: Remove unnecessary SWF version check in is_focusable
This check is unnecessary as is_focusable is only used in AVM1.
2024-06-05 02:08:13 +02:00
Kamil Jarosz d39c7339d9 avm1: Make the root movie clip non-focusable and non-tabbable
Root movie clip should be neither focusable, nor tabbable.
2024-06-05 02:08:13 +02:00
Lord-McSweeney 488fc4ae9f avm2: `Script` doesn't need to be borrowed 2024-06-04 15:31:14 -07:00
Lord-McSweeney 6acfc3953a avm2: Slightly improve findprop optimizations when property is found on script 2024-06-04 15:31:14 -07:00
Lord-McSweeney b523ad4b32 avm2: Fix a typo 2024-06-04 15:31:14 -07:00
Lord-McSweeney ad2c5c547e avm2: Cleanup optimizer 2024-06-04 15:31:14 -07:00
Lord-McSweeney 150d9d8bca avm2: Implement `flash.text.IME` package 2024-06-04 15:31:14 -07:00
Lord-McSweeney 43549ab1d7 avm2: Add a vtable to Class, support getting vtable of static methods in optimizer 2024-06-04 15:31:14 -07:00
Kamil Jarosz 516e10ae26 avm1: Drop focus on EditText when something else is clicked
In AVM1 text fields are somewhat special when handling focus.
When a text field is clicked, it gains focus,
when something else is clicked, it loses the focus.
However, this logic only applies to text fields, other objects
(buttons, movie clips) neither gain focus nor lose it upon press.
2024-06-04 19:39:20 +02:00
Tom Schuster b6612e8f83 avm2: Support namespaces in XML.setName 2024-06-04 18:50:49 +02:00
Tom Schuster 690a280fa5 avm2: Improve prefix support in ToXMLString 2024-06-04 00:22:42 +02:00
Tom Schuster 8671bdd8ee avm2: Implement XML.inScopeNamespaces 2024-06-04 00:22:42 +02:00
Tom Schuster 0b446d7cc6 avm2: Implement XML.setNamespace 2024-06-04 00:22:42 +02:00
Tom Schuster 2f7dfd8051 avm2: Implement XML.namespaceDeclarations 2024-06-04 00:22:42 +02:00
Tom Schuster f20f57c6f1 avm2: Implement XML.namespace 2024-06-04 00:22:42 +02:00
Tom Schuster 3f99866ca4 avm2: Implement XML.addNamespace 2024-06-04 00:22:42 +02:00
Lord-McSweeney 540cc5fb68 avm1: Stub `bufferLength` and `bufferTime` on `NetStream` 2024-06-03 23:56:22 +02:00
Thomas Lupin b08750a998 avm1: fix loadvars.send parameters 2024-06-03 23:36:33 +02:00
dependabot[bot] b9d246b2a5 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [proc-macro2](https://github.com/dtolnay/proc-macro2), [toml_edit](https://github.com/toml-rs/toml), [zip](https://github.com/zip-rs/zip2) and [toml](https://github.com/toml-rs/toml).


Updates `proc-macro2` from 1.0.84 to 1.0.85
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.84...1.0.85)

Updates `toml_edit` from 0.22.13 to 0.22.14
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.13...v0.22.14)

Updates `zip` from 2.1.1 to 2.1.2
- [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.1...v2.1.2)

Updates `toml` from 0.8.13 to 0.8.14
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.13...toml-v0.8.14)

---
updated-dependencies:
- dependency-name: proc-macro2
  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: zip
  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-06-03 23:21:12 +02:00
Adrian Wielgosik 224edfe06f core: Unify WStr::MAX_LEN range checks 2024-06-02 23:00:23 +02:00
Adrian Wielgosik 6a75def83a avm2: Fix panic on substr(i, len>usize::MAX) 2024-06-02 23:00:23 +02:00
sleepycatcoding 83cc8cf294 avm2: Implement a few avmplus XML edge cases 2024-06-02 01:52:52 +03:00
Tom Schuster 1402a59a20 avm2: :Implement FLV Date to Avm2Value conversion 2024-06-02 00:35:36 +02:00
Tom Schuster cdbc6d289c avm2: Implement the abstract equality comparison for QName 2024-06-01 20:52:17 +02:00
dependabot[bot] febbfe8f42 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [tokio](https://github.com/tokio-rs/tokio), [regress](https://github.com/ridiculousfish/regress), [fontdb](https://github.com/RazrFalcon/fontdb) and [zip](https://github.com/zip-rs/zip2).


Updates `tokio` from 1.37.0 to 1.38.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0)

Updates `regress` from 0.9.1 to 0.10.0
- [Release notes](https://github.com/ridiculousfish/regress/releases)
- [Commits](https://github.com/ridiculousfish/regress/compare/v0.9.1...v0.10.0)

Updates `fontdb` from 0.17.0 to 0.18.0
- [Changelog](https://github.com/RazrFalcon/fontdb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RazrFalcon/fontdb/compare/v0.17.0...v0.18.0)

Updates `zip` from 2.1.0 to 2.1.1
- [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.0...v2.1.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: regress
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: fontdb
  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
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-01 17:46:28 +02:00
Nathan Adams 618e061564 core: Expand on audio related error messages 2024-06-01 14:08:54 +02:00
Kamil Jarosz f4a517dbd1 text: Invalidate bitmap cache on scroll
This patch fixes scrolling text fields when filters are applied.
2024-05-31 22:24:34 +02:00
sleepycatcoding 2fd5dfde9c avm2: Implement XMLList.normalize 2024-05-31 22:09:17 +02:00
Tom Schuster d98e3d9b99 avm2: Parse XML namespace declaration and make ToXMLString output them
This does not implement any of the XML API functions that interact with
namespaces.

Fixes #16340
2024-05-30 21:14:06 +02:00
TÖRÖK Attila b282d1325a core: Pass on H.264 packets from FLV streams to the video backend 2024-05-30 20:22:33 +02:00
sleepycatcoding 007a532717 avm2: Implement XMLList.contains 2024-05-30 00:43:45 +03:00
Tom Schuster 1fe1b8d67d avm2: Introduce an E4XNamespace type (NFCI) 2024-05-29 22:37:40 +02:00
Kamil Jarosz c32b27c294 core: Fix stop() when executing attachMovie in DoInitAction
This fixes a bug where the code in the first frame of a movie clip
could have been executed after the second frame
(so that instructions like stop did not work properly).

That is because when the first frame was executed in preload
(e.g. for a sprite attached using attachMovie), the actions were queued,
the second frame was executed in run_frame, and then the actions from
the first frame were executed.

Ensuring that all actions are executed after preload fixes this issue.
2024-05-28 23:57:13 +02:00
Adrian Wielgosik 2532d7e927 avm2: Refactor Executable->BoundMethod, introduce freestanding exec() 2024-05-28 23:32:21 +02:00
Kamil Jarosz 3bb47db5f9 avm1: Move FunctionObject's base to FunctionObjectData
This shrinks AVM1's Object (from 24 to 16 bytes on x64), and
allows future shrinkage of AVM1's Value (e.g. from 24 to 16 bytes
on x64 after putting all strings behind a Gc pointer).
2024-05-28 23:18:11 +02:00
Kamil Jarosz 658e800dfc core: Drop the focus when it's made invisible
When an object has focus and is made invisible,
the focus should be dropped.
2024-05-28 23:01:12 +02:00
Kamil Jarosz 23c1d32990 core: Pass UpdateContext to set_visible 2024-05-28 23:01:12 +02:00
dependabot[bot] a6a683ffa1 build(deps): bump the cargo-minor group with 2 updates
Bumps the cargo-minor group with 2 updates: [serde](https://github.com/serde-rs/serde) and [proc-macro2](https://github.com/dtolnay/proc-macro2).


Updates `serde` from 1.0.202 to 1.0.203
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.202...v1.0.203)

Updates `proc-macro2` from 1.0.83 to 1.0.84
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.83...1.0.84)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 00:48:13 +02:00
sleepycatcoding cd24b91a82 avm2: Implement XMLList to XML proxy methods 2024-05-27 21:47:22 +02:00
sleepycatcoding ab0792904b avm2: Stub XML.add/set/removeNamespace 2024-05-27 21:47:22 +02:00
Nathan Adams 381b0897c9 avm2: Implement ExternalInterface.objectID 2024-05-26 23:00:33 +02:00
Kamil Jarosz 1bf9756b4e text: Allow selecting text by dragging
This patch allows selecting text by pressing and dragging the mouse.
2024-05-26 12:38:16 +02:00
Adrian Wielgosik bafc5d250e tests: Add a depdendent string test, with test-only AS3 2024-05-26 12:14:30 +02:00
Adrian Wielgosik d6dbc5e767 core: Support dependent strings for concatenation 2024-05-26 12:14:30 +02:00
dependabot[bot] f712c9212c build(deps): bump syn from 2.0.65 to 2.0.66 in the cargo-minor group
Bumps the cargo-minor group with 1 update: [syn](https://github.com/dtolnay/syn).


Updates `syn` from 2.0.65 to 2.0.66
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.65...2.0.66)

---
updated-dependencies:
- 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-05-25 17:35:23 +02:00
Aaron Hill f8e97808e4 core: Store MovieClip avm2_class in MovieClipStatic
This is preparation for allowing a class to be linked
to the root movie clip and instantiated.
2024-05-25 10:14:44 -04:00
Kamil Jarosz 0edb7d6890 core: KeyPress events have precedence over tabbing
When there's a button that handles KeyPress "Tab" event (code 18),
the tabbing should not be performed.
2024-05-25 01:12:43 +02:00
Kamil Jarosz 277390aab4 core: Render EditText's selection when filters are present
This patch ensures that the selection in EditText is rendered even when
filters are present (so that cache as bitmap is enabled).
This is done by invalidating the cached bitmap on selection change.
2024-05-24 23:52:03 +02:00
Kamil Jarosz 8ac7a58d4e debug_ui: Improve EditText tab
This patch adds multiple properties and controls to EditText tab.
This includes for instance:
* border, border color,
* background, background color,
* editable, selectable, word wrap properties,
* autosize, max chars, restrict, etc.
2024-05-24 09:07:21 -04:00
Kamil Jarosz 6c67e7485e core: Invalidate EditText's bitmap when border is disabled
This patch makes sure that the bitmap is invalidated not only when
a border or background was enabled, but also when both were disabled
and the drawing has only been cleared.
2024-05-24 09:07:21 -04:00
sleepycatcoding 671be1a810 avm2: Fix a few XML prototype method signatures 2024-05-21 23:51:35 +02:00
Tom Schuster 3949110f6b avm2: request_from_url_request should fail when the url property is null 2024-05-21 20:45:20 +02:00
Tom Schuster f54e3fdbd0 avm2: Introduce the make_error_2007 helper 2024-05-21 20:45:20 +02:00
sleepycatcoding a5c3474bbc avm2: Implement Namespace enumeration 2024-05-21 20:26:35 +02:00
Nathan Adams b9947a2d1c avm2: Add more Namespace tests and fixed some other cases 2024-05-21 19:57:39 +02:00
Nathan Adams 3692cbbb2e avm2: Implement Namespace constructor and prefix 2024-05-21 19:57:39 +02:00