Commit Graph

6853 Commits

Author SHA1 Message Date
Crowdin Bot aa006f0e8f chore: Update translations from Crowdin 2024-05-02 18:07:40 +02:00
Kamil Jarosz 8ee514e62f avm2: Handle setting tabIndex to -1
Despite throwing an error that `tabIndex` cannot be negative,
the value of -1 is allowed, and it means that `tabIndex` is unset.
2024-04-30 14:23:45 +02:00
Kamil Jarosz f40cb6435f code: Unset tabIndex upon assigning -1
The value of -1 for tabIndex always means that it's unset,
even in AVM1 where tabIndex may have a value of `undefined`.
2024-04-30 14:23:45 +02:00
Crowdin Bot 054d0aab29 chore: Update translations from Crowdin 2024-04-30 01:14:39 +02:00
Kamil Jarosz ec2aaa0549 avm2: Implement InteractiveObject.focusRect 2024-04-29 23:41:40 +02:00
dependabot[bot] 6191984dd6 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [flate2](https://github.com/rust-lang/flate2-rs), [hashbrown](https://github.com/rust-lang/hashbrown), [gilrs](https://gitlab.com/gilrs-project/gilrs) and [zip](https://github.com/Pr0methean/zip).


Updates `flate2` from 1.0.29 to 1.0.30
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.29...1.0.30)

Updates `hashbrown` from 0.14.3 to 0.14.5
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.14.3...v0.14.5)

Updates `gilrs` from 0.10.6 to 0.10.7
- [Commits](https://gitlab.com/gilrs-project/gilrs/compare/v0.10.6...v0.10.7)

Updates `zip` from 1.1.1 to 1.1.2
- [Release notes](https://github.com/Pr0methean/zip/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Pr0methean/zip/compare/1.1.1...v1.1.2)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: hashbrown
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: gilrs
  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-04-29 23:18:44 +02:00
Kamil Jarosz 0479259fb9 avm2: Implement DisplayObjectContainer.tabChildren 2024-04-29 21:54:06 +02:00
Kamil Jarosz e3bc63f2bf core: Add possibility to set tab_children for containers 2024-04-29 21:54:06 +02:00
Kamil Jarosz 39b6c9d096 avm2: Implement InteractiveObject.tabEnabled 2024-04-29 21:54:06 +02:00
Kamil Jarosz 1ecdaea392 avm2: Implement InteractiveObject.tabIndex 2024-04-29 21:54:06 +02:00
Kamil Jarosz 14f7665912 core: Allow setting tabEnabled for AVM2
The field tab_enabled in AVM1 is effectively read-only as
tabEnabled is not a built-in property of objects.
That is not the case in AVM2, where tab_enabled is native.

This patch covers both of these cases by introducing methods:
* tab_enabled,
* set_tab_enabled,
* tab_enabled_avm1,
* tab_enabled_avm2_default.
2024-04-29 21:54:06 +02:00
Kamil Jarosz 036b898122 avm2: Call focus handler in AVM2 buttons
The focus handler should also be called for AVM2 buttons when
the focus is being changed.
2024-04-29 21:54:06 +02:00
Kamil Jarosz 02091e590d avm1: Move tab_index to InteractiveObject and make it i32
The i32/u32 discrepancy is only a data presentation issue,
as the value is treated as i32 in every case.
2024-04-29 21:54:06 +02:00
Kamil Jarosz e7eaf2a640 avm2: Override inapplicable properties in TextLine
Some inherited properties of `TextLine` are inapplicable.
They always return the default value and throw an error when set.
2024-04-29 21:18:08 +02:00
Lord-McSweeney b0443b3b5f avm2: Simplify uses of `GcCell<'gc, Class<'gc>>` 2024-04-27 08:29:10 -07:00
Adrian Wielgosik 868ab45c98 avm2: Add Stage.softKeyboardRect 2024-04-24 20:33:13 +02:00
Kamil Jarosz 953a741943 core: Update focus highlight reset logic for SWF9+
SWF versions 9 onwards reset the highlight only on
left mouse button down, whereas older versions also
reset it on other mouse events.
2024-04-24 00:49:37 +02:00
Kamil Jarosz 83d5d18a20 avm2: Add missing overrides to Stage
Stage overrides some properties from its super classes.
Some of them are currently identical in Ruffle,
but in FP they are used for e.g. security checks.
2024-04-23 23:13:02 +02:00
Kamil Jarosz f01cb99d1a avm2: Remove unnecessary imports in AS 2024-04-23 23:13:02 +02:00
Kamil Jarosz ccd2922973 avm2: Stub DisplayObjectContainer.textSnapshot 2024-04-23 23:13:02 +02:00
Kamil Jarosz 19cc8e5873 avm2: Add a stub for flash.text.TextSnapshot 2024-04-23 23:13:02 +02:00
Adrian Wielgosik 09e932163b xml: Add TODO comment in deepCopy() 2024-04-22 22:08:40 +02:00
Adrian Wielgosik 43f27b80ce avm2: Also conditionally set IS_QNAME in 'new QName()' 2024-04-22 22:08:40 +02:00
Adrian Wielgosik 464ccb6eb6 avm2: Update comment for QName struct 2024-04-22 22:08:40 +02:00
Adrian Wielgosik fd281cc715 avm2: Add IS_QNAME flag to Multiname, improve XML name matching 2024-04-22 22:08:40 +02:00
dependabot[bot] c6bfaf8fae build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [thiserror](https://github.com/dtolnay/thiserror), [fluent-templates](https://github.com/XAMPPRocky/fluent-templates), [toml_edit](https://github.com/toml-rs/toml) and [reqwest](https://github.com/seanmonstar/reqwest).


Updates `thiserror` from 1.0.58 to 1.0.59
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.58...1.0.59)

Updates `fluent-templates` from 0.9.2 to 0.9.4
- [Release notes](https://github.com/XAMPPRocky/fluent-templates/releases)
- [Changelog](https://github.com/XAMPPRocky/fluent-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/XAMPPRocky/fluent-templates/compare/fluent-templates-v0.9.2...fluent-templates-v0.9.4)

Updates `toml_edit` from 0.22.9 to 0.22.12
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.9...v0.22.12)

Updates `reqwest` from 0.12.3 to 0.12.4
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.3...v0.12.4)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: fluent-templates
  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: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 20:33:27 +02:00
Lord-McSweeney 15c076fe0c avm2: Remove "namespace not matching" message
This was getting spammed after #16069
2024-04-21 16:12:54 -07:00
Kamil Jarosz b9e9a3e1f2 core: Dispatch rollOut/rollOver events on focus change and Tab
When focus changes, rollOut/rollOver events should be dispatched.
This includes onRollOut/onRollOver handlers, but also button actions.
2024-04-22 00:53:20 +02:00
Kamil Jarosz e20341f0a3 core: Skip updating mouse hover when not necessary
Since objects may be hovered using Tab, mouse hover update cannot happen
every time, because it would always reset the hover set by Tab.

This is why mouse hover is skipped when the following are true:
1. the mouse has not moved,
2. no mouse button has been pressed,
3. there was a hover,
4. the hovered object did not disappear.
2024-04-22 00:53:20 +02:00
Kamil Jarosz 9987519608 core: Make FocusTracker operate on InteractiveObjects
Originally, FocusTracker operated on DisplayObjects. However, in both
AVM1 and AVM2, all objects that are focusable are InteractiveObjects.
Switching FocusTracker to operate on InteractiveObjects simplifies code
in the long run.
2024-04-22 00:53:20 +02:00
Kamil Jarosz f94a31c5c2 core: Add FocusTracker.get_as_edit_text method
This is a utility method which simplifies getting the current focus
as an EditText object, which is being done frequently throughout Ruffle.
2024-04-22 00:53:20 +02:00
Kamil Jarosz 31c9be3a35 core: Ensure all changes made to UpdateContext are applied
UpdateContext.mouse_over_object and UpdateContext.mouse_down_object
were treated differently from other properties. Changes made to them
were required to be applied manually after using the context.
However, when reborrowing the context, all changes made to these
properties were dropped, as they were not applied after reborrow.
Applying them after reborrow would be difficult (RAII, concurrency
problems), that's why they were replaced with mutable references.

MouseData struct was introduced to make the code more readable and
adhere to the convention of UpdateContext to contain mutable references
to higher level objects.
2024-04-22 00:53:20 +02:00
Kamil Jarosz e28712f111 avm1: Use Avm1::run_stack_frame_for_method for focus handlers
Using Avm1::run_stack_frame_for_method for calling focus handlers
simplifies code and prevents duplication.
2024-04-22 00:53:20 +02:00
Kamil Jarosz 47758e1fb3 core: Make objects focusable by default
Since is_focusable has been moved to InteractiveObject,
it may now return true by default, because non-interactive objects
do not implement this method anymore.
2024-04-22 00:53:20 +02:00
Kamil Jarosz 5173fa4118 core: Move focus-related methods to InteractiveObject
Only interactive objects may be focusable, so keeping these methods
in all display objects makes matters more difficult, as they also
has to be implemented for non-interactive objects.

Moving these to InteractiveObject simplifies code in the long run.
2024-04-22 00:53:20 +02:00
Lord-McSweeney ca4da9e5ee avm2: Fix regression from classes not being registered in order from the constant pool 2024-04-21 14:27:16 -07:00
Lord-McSweeney 8a4946fa03 avm2: Store Class instead of QName as superclass of Class 2024-04-20 15:23:44 -07:00
turicfr 3f5582ed94 avm1: Correct `getBounds` properties order
This affects the order of the properties when enumerating the
returned object (via `Enumerate2` etc.)
2024-04-20 21:58:32 +02:00
jarca0123 7e349d9190 avm2: Add support for sparse arrays 2024-04-20 21:41:33 +02:00
TÖRÖK Attila 3ca7cc821e nit: Silence nightly `dead_code` lint 2024-04-20 17:39:54 +02:00
TÖRÖK Attila b8ec3a8089 nit: Silence nightly `clippy::legacy_numeric_constants` lint 2024-04-20 17:39:54 +02:00
Lord-McSweeney 955d03885e avm2: Remove outdated TODO comments 2024-04-19 15:03:53 -07:00
Tom Schuster cdf587c5a5 avm2: Fix two bugs that caused wrong query parameters with navigateToURL 2024-04-19 18:56:25 +02:00
dependabot[bot] 5c1fcb9f26 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [serde](https://github.com/serde-rs/serde), [serde_json](https://github.com/serde-rs/json), [syn](https://github.com/dtolnay/syn) and [proc-macro2](https://github.com/dtolnay/proc-macro2).


Updates `serde` from 1.0.197 to 1.0.198
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.197...v1.0.198)

Updates `serde_json` from 1.0.115 to 1.0.116
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.115...v1.0.116)

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

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

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: serde_json
  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: 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-04-18 17:30:02 +02:00
Adrian Wielgosik a69b80b4bb avm2: Allow splice() on a Vector with fixed=true 2024-04-18 00:56:22 +02:00
Aaron Hill 899fe54477 debug_ui: Show mouseEnabled/mouseChildren/doubleClickEnabled
This helps with debugging mouse-pick bugs
2024-04-17 14:36:34 -04:00
StevenMia 899c0bb157 chore: fix some typos in comments
Signed-off-by: StevenMia <flite@foxmail.com>
2024-04-16 09:31:00 +02:00
dependabot[bot] d3cc9d5fa5 build(deps): bump the cargo-minor group with 11 updates
Bumps the cargo-minor group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.81` | `1.0.82` |
| [async-channel](https://github.com/smol-rs/async-channel) | `2.2.0` | `2.2.1` |
| [chrono](https://github.com/chronotope/chrono) | `0.4.37` | `0.4.38` |
| [encoding_rs](https://github.com/hsivonen/encoding_rs) | `0.8.33` | `0.8.34` |
| [fluent-templates](https://github.com/XAMPPRocky/fluent-templates) | `0.9.1` | `0.9.2` |
| [either](https://github.com/rayon-rs/either) | `1.10.0` | `1.11.0` |
| [quote](https://github.com/dtolnay/quote) | `1.0.35` | `1.0.36` |
| [syn](https://github.com/dtolnay/syn) | `2.0.58` | `2.0.59` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.79` | `1.0.80` |
| [webbrowser](https://github.com/amodm/webbrowser-rs) | `0.8.14` | `0.8.15` |
| [libtest-mimic](https://github.com/LukasKalbertodt/libtest-mimic) | `0.7.0` | `0.7.2` |


Updates `anyhow` from 1.0.81 to 1.0.82
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.81...1.0.82)

Updates `async-channel` from 2.2.0 to 2.2.1
- [Release notes](https://github.com/smol-rs/async-channel/releases)
- [Changelog](https://github.com/smol-rs/async-channel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smol-rs/async-channel/compare/v2.2.0...v2.2.1)

Updates `chrono` from 0.4.37 to 0.4.38
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.37...v0.4.38)

Updates `encoding_rs` from 0.8.33 to 0.8.34
- [Commits](https://github.com/hsivonen/encoding_rs/compare/v0.8.33...v0.8.34)

Updates `fluent-templates` from 0.9.1 to 0.9.2
- [Release notes](https://github.com/XAMPPRocky/fluent-templates/releases)
- [Changelog](https://github.com/XAMPPRocky/fluent-templates/blob/master/CHANGELOG.md)
- [Commits](https://github.com/XAMPPRocky/fluent-templates/compare/fluent-templates-v0.9.1...fluent-templates-v0.9.2)

Updates `either` from 1.10.0 to 1.11.0
- [Commits](https://github.com/rayon-rs/either/compare/1.10.0...1.11.0)

Updates `quote` from 1.0.35 to 1.0.36
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.35...1.0.36)

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

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

Updates `webbrowser` from 0.8.14 to 0.8.15
- [Release notes](https://github.com/amodm/webbrowser-rs/releases)
- [Changelog](https://github.com/amodm/webbrowser-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amodm/webbrowser-rs/compare/v0.8.14...v0.8.15)

Updates `libtest-mimic` from 0.7.0 to 0.7.2
- [Release notes](https://github.com/LukasKalbertodt/libtest-mimic/releases)
- [Changelog](https://github.com/LukasKalbertodt/libtest-mimic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/LukasKalbertodt/libtest-mimic/commits)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: async-channel
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: encoding_rs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: fluent-templates
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: either
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: quote
  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: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: webbrowser
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: libtest-mimic
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 23:34:51 +02:00
Lord-McSweeney 1f4eebfd8d avm2: Add SetSlotNoCoerce and ReturnValueNoCoerce ops for SetSlot and ReturnValue without coercion when type is guaranteed to be not coerced 2024-04-14 22:10:37 -07:00
Lord-McSweeney daaf274245 avm2: Fill in all ops in optimizer 2024-04-14 22:10:37 -07:00