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
Lord-McSweeney
efe878211a
avm2: Pre-pool multinames for several ops
...
`CallPropLex`, `GetSuper`, `SetSuper`, `CallSuper`, `CallSuperVoid`, `GetDescendants`
2024-04-14 22:10:37 -07:00
Lord-McSweeney
a7021f4fee
avm2: Use already stored param types in optimizer
2024-04-14 22:10:37 -07:00
Lord-McSweeney
e05f405888
avm2: Remove unneeded zero code length check in `run_actions`
2024-04-14 22:10:37 -07:00
Lord-McSweeney
9dcf0a7d70
avm2: Resolve function argument types once when calling function for the first time
2024-04-14 22:10:37 -07:00
Lord-McSweeney
9870754b5e
avm2: Support optimization of `CallPropVoid` and virtual setters
...
This requires adding a custom field to the `CallMethod` op
2024-04-14 22:10:37 -07:00
Adrian Wielgosik
9d2664f752
wstr: Fix parsing of '+'
2024-04-14 13:24:42 +02:00
Nick
752ced391c
avm1: use correct coordinates for hitTest ( #15894 )
2024-04-09 17:11:21 +00:00
Nathan Adams
62867729de
core: Removed now-unused Player::swf() method
2024-04-09 00:01:59 +02:00
dependabot[bot]
ae10b76431
build(deps): bump the cargo-minor group with 6 updates
...
Bumps the cargo-minor group with 6 updates:
| Package | From | To |
| --- | --- | --- |
| [image](https://github.com/image-rs/image ) | `0.25.0` | `0.25.1` |
| [downcast-rs](https://github.com/marcianx/downcast-rs ) | `1.2.0` | `1.2.1` |
| [regress](https://github.com/ridiculousfish/regress ) | `0.9.0` | `0.9.1` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.55` | `2.0.58` |
| [webbrowser](https://github.com/amodm/webbrowser-rs ) | `0.8.13` | `0.8.14` |
| [getrandom](https://github.com/rust-random/getrandom ) | `0.2.12` | `0.2.14` |
Updates `image` from 0.25.0 to 0.25.1
- [Changelog](https://github.com/image-rs/image/blob/main/CHANGES.md )
- [Commits](https://github.com/image-rs/image/compare/v0.25.0...v0.25.1 )
Updates `downcast-rs` from 1.2.0 to 1.2.1
- [Changelog](https://github.com/marcianx/downcast-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/marcianx/downcast-rs/compare/v1.2.0...v1.2.1 )
Updates `regress` from 0.9.0 to 0.9.1
- [Release notes](https://github.com/ridiculousfish/regress/releases )
- [Commits](https://github.com/ridiculousfish/regress/compare/v0.9.0...v0.9.1 )
Updates `syn` from 2.0.55 to 2.0.58
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.55...2.0.58 )
Updates `webbrowser` from 0.8.13 to 0.8.14
- [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.13...v0.8.14 )
Updates `getrandom` from 0.2.12 to 0.2.14
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.12...v0.2.14 )
---
updated-dependencies:
- dependency-name: image
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: downcast-rs
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: regress
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: webbrowser
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: getrandom
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-04-08 23:44:16 +02:00
Kamil Jarosz
741c53994c
core: Add focus tracker to debug UI
2024-04-08 23:19:29 +02:00
Kamil Jarosz
497eaba6c5
core: Add DisplayObject.is_highlightable method
...
This is added for convenience so that it's not required
to cast an object to InteractiveObject when checking for a highlight.
This also gets rid of InteractiveObject.focus_rect_supported,
as `is_highlightable` may be now overridden.
2024-04-08 23:19:29 +02:00
Kamil Jarosz
43266f2d5d
avm1: Fix onKeyUp and onKeyDown events for Button
...
These two events were not firing properly when a key was pressed
and the button had focus.
2024-04-08 22:16:50 +02:00
Kamil Jarosz
e57b371a3d
core: Add support for NumLock
...
This patch adds support for NumLock, which was missing.
Now NumLock (144) may be used as a parameter in methods
from the Key class.
2024-04-08 20:14:07 +02:00
Lord-McSweeney
c1b6aa48a2
avm2: Fix unknown jump sources mixing with known jump sources
2024-04-05 00:34:50 +02:00
Lord-McSweeney
1727b946c4
avm2: Ensure exception targets are noted as possible jump targets
2024-04-05 00:34:50 +02:00
Lord-McSweeney
1a9ea0c9b1
avm2: Merge properly when the target is right after a block-terminating op
2024-04-05 00:34:50 +02:00
Lord-McSweeney
fbef4c342e
avm2: Add basic state merging for forward jumps to optimizer
2024-04-05 00:34:50 +02:00
Kamil Jarosz
e564803ec0
core: Ignore non-tabbable objects from tab ordering
...
These objects include:
* invisible objects along with their children,
* non-editable text fields.
The method `is_tab_enabled` is renamed to `is_tabbable`, as it no
longer represents the `tabEnabled` property value, but also
incorporates other logic.
2024-04-04 22:53:19 +02:00
dependabot[bot]
163aa9edf6
build(deps): bump web-time from 0.2.4 to 1.1.0
...
Bumps [web-time](https://github.com/daxpedda/web-time ) from 0.2.4 to 1.1.0.
- [Release notes](https://github.com/daxpedda/web-time/releases )
- [Changelog](https://github.com/daxpedda/web-time/blob/main/CHANGELOG.md )
- [Commits](https://github.com/daxpedda/web-time/compare/v0.2.4...v1.1.0 )
---
updated-dependencies:
- dependency-name: web-time
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 21:41:04 +02:00
Nathan Adams
b7c9c870bb
chore: Use workspace version for walkdir
2024-04-04 17:29:00 +02:00
Nathan Adams
19c914c5a8
chore: Use workspace version for url
2024-04-04 17:29:00 +02:00
Nathan Adams
45a2ab69c0
chore: Use workspace version for thiserror
2024-04-04 17:29:00 +02:00
Nathan Adams
9d665ce448
chore: Use workspace version for serde
2024-04-04 17:29:00 +02:00
Nathan Adams
80758cbaeb
chore: Use workspace version for num-traits
2024-04-04 17:29:00 +02:00
Nathan Adams
a7404e7506
chore: Use workspace version for num-derive
2024-04-04 17:29:00 +02:00
Nathan Adams
d8fec1cabc
chore: Use workspace version for image
2024-04-04 17:29:00 +02:00
Nathan Adams
2036d85a95
chore: Use workspace version for futures
2024-04-04 17:29:00 +02:00
Nathan Adams
2bd1ef47b7
chore: Use workspace version for flate2
2024-04-04 17:29:00 +02:00
Nathan Adams
c3711e3953
chore: Use workspace version for enum-map
2024-04-04 17:29:00 +02:00
Nathan Adams
6cca9bb3b7
chore: Use workspace version for clap
2024-04-04 17:29:00 +02:00
Nathan Adams
26df7d78c4
chore: Use workspace version for chrono
2024-04-04 17:29:00 +02:00
Nathan Adams
937664e737
chore: Use workspace version for bytemuck
2024-04-04 17:29:00 +02:00
Nathan Adams
4e3cd75c30
chore: Use workspace version for bitflags
2024-04-04 17:29:00 +02:00
Nathan Adams
8a390163d6
chore: Use workspace version for async-channel
2024-04-04 17:29:00 +02:00
Kamil Jarosz
53f49eb480
avm2: Update comments related to stageFocusRect
...
Although full AVM2 support is not there yet, stageFocusRect is
not ignored anymore.
2024-04-04 10:58:42 +02:00
Kamil Jarosz
84d24fdd50
core: Use focus_rect to control highlight rendering
...
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.
2024-04-04 10:58:42 +02:00
Kamil Jarosz
76b8b5e438
avm1: Add support for _focusrect property
...
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.
2024-04-04 10:58:42 +02:00
Kamil Jarosz
da9ee141dc
avm1: Mark applicable Object properties as SWF6+
...
Some of the Object properties are available only in SWF6+.
2024-04-04 10:58:42 +02:00
sleepycatcoding
92f437ec15
desktop: Add storage backend preference
2024-04-03 23:44:27 +02:00
sleepycatcoding
e1f9b5e5df
desktop: add UI for bookmarks
2024-04-03 22:20:55 +02:00
TÖRÖK Attila
9822e96b41
chore: Bump `egui` to `v0.27.2`
2024-04-03 08:01:53 +02:00
Kamil Jarosz
d4b74db133
core: Default value logic for MovieClip.tabEnabled
...
The default value of `MovieClip.tabEnabled` is neither trivial
nor well-documented. This patch implements the logic behind
the default value of `MovieClip.tabEnabled` and covers it with tests.
2024-04-02 00:31:34 +02:00
Kamil Jarosz
6d08d2afb0
core: Make the default value lazy in get_avm1_boolean_property
2024-04-02 00:31:34 +02:00
Kamil Jarosz
95983bf4f3
core: Render yellow highlight on keyboard focus
...
This patch implements rendering of the yellow rectangle around
a focused element after pressing Tab. Focus tracker which is responsible
for keeping track of the current focus is now also responsible
for keeping track of the highlight and rendering thereof.
2024-04-01 23:38:59 +02:00
Kamil Jarosz
1a250f0144
core: Move FocusTracker to Stage
2024-04-01 23:38:59 +02:00
Kamil Jarosz
b12bf31c6e
core: Improve order of automatic tab ordering
...
This patch improves the order of automatic tab ordering,
and makes it behave more like in FP.
The order after this patch is far from being exactly
the same as in FP, but is close enough.
2024-04-01 22:48:59 +02:00
Tom Schuster
1552059c9f
avm2: Stub DisplayObject.metaData
2024-04-01 12:31:59 +02:00
Kamil Jarosz
1883daff22
avm1: Support `MovieClip.tabChildren`
...
The property `MovieClip.tabChildren` allows changing the behavior of
tab ordering hierarchically. When set to `false`, it excludes the whole
subtree represented by the movie clip from tab ordering.
2024-03-30 00:15:45 +01:00
Kamil Jarosz
9ba7bb8629
core: Reverse tab order on Shift+Tab
...
When pressing Shift+Tab or Ctrl+Shift+Tab,
elements are tabbed in reverse.
2024-03-29 23:20:15 +01:00
Kamil Jarosz
208aae78ee
core: Use either crate instead of a custom implementation
2024-03-29 23:20:15 +01:00
TÖRÖK Attila
a59ec413ad
chore: Update `egui` to `v0.27.1`
2024-03-29 14:46:25 +01:00
TÖRÖK Attila
5b4f808769
chore: Update `egui` to `v0.27.0`
2024-03-29 10:02:52 +01:00
Kamil Jarosz
9d18bcdd06
avm1: Add support for tabEnabled and tabIndex
2024-03-27 00:40:24 +01:00
Kamil Jarosz
c7b16f4642
core: Add basic support for Tab key behavior
...
The Tab key is used to cycle through focusable elements in stage.
It supports two tab orderings: automatic and custom.
This patch adds basic support for this behavior.
2024-03-27 00:40:24 +01:00
Kamil Jarosz
e6e23fc758
core: Simplify handling clip events in Player
2024-03-27 00:40:24 +01:00
Lord-McSweeney
1a9a36c1ed
avm2: Properly push coerced value back to stack in optimizer for Coerce op
2024-03-26 10:43:13 -07:00
renovate[bot]
9dfc6dc224
fix(deps): update rust dependencies
2024-03-26 13:56:59 +01:00
sleepycatcoding
1b41abf3a3
chore: Remove unused dependencies
2024-03-25 17:45:26 +01:00
renovate[bot]
98cbe9cf31
fix(deps): update rust dependencies
2024-03-25 02:47:32 +01:00
Crowdin Bot
9793e3968d
chore: Update translations from Crowdin
2024-03-24 22:55:51 +01:00
Tom Schuster
1d4fd1575b
avm2: Make URLStream fire the HTTP_STATUS event
2024-03-24 12:42:12 +01:00
Tom Schuster
403f6eb511
avm2: Add URLStream.connected
2024-03-24 12:42:12 +01:00
Lord-McSweeney
0adac8f69d
core: Remove `Collect` from `Color` and `DirtyState` as it was unnecessary
2024-03-23 21:18:02 -07:00
Lord-McSweeney
530319ce93
avm2: Add many more ops to optimizer
2024-03-23 20:17:41 -07:00
Lord-McSweeney
9f44281a52
avm2: Remove unnecessary range checks on local-modifying ops in optimizer
2024-03-23 20:17:41 -07:00
Lord-McSweeney
dec9f07f5f
avm2: Better optimizer handling for `FindProperty` and `FindPropStrict`
2024-03-23 20:17:41 -07:00
Lord-McSweeney
2646fcf148
avm2: Add more domain memory ops to optimizer
2024-03-23 20:17:41 -07:00
Lord-McSweeney
3c39acc2ae
avm2: Increase number of actions before timeout check from 2000 to 64000
2024-03-23 20:17:41 -07:00
Lord-McSweeney
407314686e
avm2: Verify `getouterscope` op
2024-03-23 20:17:41 -07:00
TÖRÖK Attila
156e4eb2ed
core: Make sure that streams progress even with many small-dt ticks
2024-03-24 01:07:10 +01:00
Adrian Wielgosik
08157a056e
build: Fix redundant import warnings
2024-03-23 19:23:18 +01:00
Lord-McSweeney
ab254c93c6
avm2: Activation class is now guaranteed in `op_new_activation`
2024-03-22 18:55:23 -07:00
Lord-McSweeney
af19d6f385
avm2: Fix `newactivation` in script initializer
...
This works the same as in a normal function
2024-03-22 18:55:23 -07:00
renovate[bot]
d70560cb82
fix(deps): update rust dependencies
2024-03-22 11:10:59 +01:00
TÖRÖK Attila
d9f17dac44
chore: Bump `image` to `v0.25`, without the `dxt` feature
2024-03-19 00:14:48 +01:00
michiel2005
28048e9b81
avm1: added the onScroller listener
2024-03-18 22:17:32 +01:00
michiel2005
5fc2505c07
core: made text fields scrollable
2024-03-18 22:17:32 +01:00
michiel2005
ec99bedcf8
avm1: added mouse_wheel_enabled to text fields
2024-03-18 22:17:32 +01:00
Adrian Wielgosik
3c2d629e0d
core: Cull text under textfield
2024-03-18 22:00:34 +01:00
TÖRÖK Attila
7a269c054d
fix(deps): update rust dependencies
2024-03-18 12:21:47 +01:00
Crowdin Bot
8345ace97e
chore: Update translations from Crowdin
2024-03-18 11:49:48 +01:00
Lord-McSweeney
e7924e564b
avm2: Fix some parameter types and signatures for XML
2024-03-17 20:01:19 -07:00
Adrian Wielgosik
27cd08deeb
avm2: Provide an option to disable the optimizer
2024-03-16 22:40:15 +01:00
soonsouth
abf7d3fa20
chore: remove repetitive words
...
Signed-off-by: soonsouth <cuibuwei@163.com>
2024-03-15 21:10:53 +01:00
Adrian Wielgosik
69ba551f0d
avm2: Add extra type propagation to astype
2024-03-14 22:32:48 +01:00
Adrian Wielgosik
88e5f9a898
avm2: unify abstract type propagation
2024-03-14 22:32:48 +01:00
renovate[bot]
3f9f19b7ac
fix(deps): update rust dependencies
2024-03-14 16:45:29 +01:00
sleepycatcoding
c7a34bb7dd
avm2: Set default for XML.elements `name` argument in AS
...
This makes it consistent with other methods on XML and XMLList.
2024-03-14 15:38:49 +01:00
sleepycatcoding
2a70f45423
avm2: Implement XMLList.elements
2024-03-14 15:38:49 +01:00
Tom Schuster
eabf7a0d58
avm2: Add Namespace.prototype.toString
2024-03-13 22:26:47 +01:00
Tom Schuster
623dba6f1f
avm2: Remove all to_string implementations except Object and Class.
...
Turns out the Vector to_string function that I added (#15562 ) was just duplicating what the
default implementation did. The Namespace one was just plain wrong.
Fixes #15474
2024-03-13 22:26:47 +01:00
Tom Schuster
09a7bd61b5
avm2: Fix Object.prototype.toString applied to Vector
2024-03-13 20:16:49 +01:00
Tom Schuster
8ec203a227
avm2: Add Function.prototype.toString and toLocaleString
2024-03-13 10:14:27 +01:00
Tom Schuster
3f17523879
avm2: Fix toString for primitive objects
2024-03-12 21:00:26 -07:00
Adrian Wielgosik
dce71fdfcb
avm2: Make Activation::from_builtin non-Result
2024-03-10 23:08:04 +01:00
Adrian Wielgosik
064cc14905
avm2: Reduce memcpy overhead in BytecodeMethod calls
2024-03-10 23:08:04 +01:00
Tom Schuster
53aee62c38
avm2: Re-implement RegExp.prototype.toString
...
Also remove the TObject to_string implementation that isn't necessary.
2024-03-10 21:27:39 +01:00
Lord-McSweeney
788c3da4aa
avm2: Add a `make_error_1014` function and use it
2024-03-10 09:49:24 -07:00
Lord-McSweeney
f76117a2be
avm2: Better target class and target variable name handling for exceptions
...
Lookup on the target class and variable name is now done in the verifier.
2024-03-10 09:49:24 -07:00
Lord-McSweeney
b5f7fa0cd0
swf: `CallMethod` takes a `disp_id`, not any sort of `Index`
2024-03-10 09:49:24 -07:00
Lord-McSweeney
028a61e744
avm2: Pre-pool multiname for `FindDef`
2024-03-10 09:49:24 -07:00
Lord-McSweeney
fdf92a9f2d
avm2: Also early lookup classes for `IsType` and `AsType`
2024-03-10 09:49:24 -07:00
Lord-McSweeney
51b9dcfb1d
avm2: Pool strings in verifier
2024-03-10 09:49:24 -07:00
Lord-McSweeney
b69eabfcdc
avm2: Lookup multinames in verifier and store them in `Op`
2024-03-10 09:49:24 -07:00
Aaron Hill
7752c32c8e
avm2: Stub GameInput.getDeviceAt and GameInputControl ( #15409 )
2024-03-09 22:01:10 +00:00
Tom Schuster
ed4bb00115
avm2: Stage.stage3Ds must return a vector
...
Fixes #15472
2024-03-07 19:33:09 +01:00
Lord-McSweeney
12ffc8a347
avm2: Remove unused and unnecessary `init_slot`
2024-03-06 20:49:19 -08:00
Nathan Adams
1a6b73f496
avm2: Use chrono's new Duration::try_ methods
2024-03-06 21:58:40 +01:00
renovate[bot]
a916369f21
fix(deps): update rust dependencies
2024-03-06 21:58:40 +01:00
Lord-McSweeney
95b5c700f5
avm2: Fix a minor optimizer bug
2024-03-06 07:21:28 -08:00
Lord-McSweeney
24d194a8b1
avm2: Propagate normal error for bad Multiname read in verifier
2024-03-06 07:21:28 -08:00
Lord-McSweeney
9a1196a7a0
avm2: Fix bugs and resolve reviews
2024-03-06 07:21:28 -08:00
Lord-McSweeney
c98d61c376
avm2: Add a `make_error_1021` function and use it
2024-03-06 07:21:28 -08:00
Lord-McSweeney
f28928dbc9
avm2: Match verifier reading implementation with FP's
2024-03-06 07:21:28 -08:00
Kamil Jarosz
c260a45603
core: Close sockets and timers when replacing the root movie
...
Turns out that the comment from `set_root_movie` was right all along!
`set_root_movie` should not be used when replacing the root movie,
because it will leave out unclosed resources.
This patch introduces `replace_root_movie`, which is dedicated to be
used when replacing (instead of just setting) the root movie.
The best solution would be to use RAII, e.g. destroy and recreate
the whole Player instance, but this patch is a first step towards
proper resource control.
2024-03-05 23:14:08 +01:00
Nathan Adams
09dfa6427e
desktop: Allow changing the language in Preferences
2024-03-05 00:02:27 +01:00
renovate[bot]
fae1c458ec
fix(deps): update rust dependencies
2024-03-04 22:18:19 +01:00
TÖRÖK Attila
7f268bf50e
chore: Update `wasm-bindgen` to `v0.2.92`, wasm-bindgen-futures to `v0.4.42`
2024-03-04 19:01:04 +01:00
TÖRÖK Attila
755fa6cded
chore: Switch `fluent-templates` back from `master` to `v0.9.0`
2024-03-04 11:05:08 +01:00
TÖRÖK Attila
85dd258168
cleanup: Remove a stale workaround for a `generational-arena` bug
2024-03-03 21:18:39 +01:00
TÖRÖK Attila
8764c08b01
cleanup: Define distinct key types for different kinds of slotmaps
2024-03-03 21:18:39 +01:00
TÖRÖK Attila
5bfd8af257
cleanup: Rename `Handle` in `loader.rs` to `LoaderHandle` to follow convention
2024-03-03 21:18:39 +01:00
Adrian Wielgosik
17c5b38bb1
avm2: Only construct type_error on error in astype, instanceof
2024-03-03 20:58:54 +01:00
MrCheeze
a119e3e130
core: Improve placement of cursor when clicking in textbox
...
Currently when clicking in a textbox, the cursor will only be placed
correctly if you click exactly on top of a letter. The basic purpose of
this commit is to make it so that clicking in the surrounding margin
will put the cursor in the closest available position, as in Flash Player.
The logic is a bit complex because a single row of text can contain
multiple layout boxes, each with a different Y offset (but all with the
same Y extent). To be accurate, we need to treat each layout box in the
row "as if" it had the same Y offset that the tallest box in its row has.
This commit also contains a fix for an issue where lower_from_text_spans
was passing the wrong text strings and indexes to fixup_line for
newlines, which needed to be fixed in order to be able to click to place
the cursor in an empty row that was created by newlines.
2024-03-02 20:30:50 +01:00
Lv Yitian
556d16302b
avm2: Implement flash.media.ID3Info ( #14916 )
2024-03-02 19:13:31 +00:00
TÖRÖK Attila
55773f0205
chore: Replace `generational-arena` with `slotmap`
2024-03-02 19:42:11 +01:00
renovate[bot]
c2179e88db
fix(deps): update rust dependencies
2024-03-02 10:05:43 +01:00
renovate[bot]
35d72115a4
fix(deps): update wasm-bindgen
2024-03-02 02:42:45 +01:00