Lord-McSweeney
4df7722aab
avm2: Add fast path for setting array property
2024-05-09 16:41:12 -07:00
Kamil Jarosz
ed037214b1
core: Always fire KeyPress after KeyDown for buttons
...
Button events are actually handled twofold:
1. KeyPress for printable characters is handled on TextInput,
2. KeyPress for special characters (e.g. enter, arrows)
is handled on KeyDown.
Before this patch, KeyPress was fired too early, so that for
special characters (2) it fired BEFORE KeyDown.
This was not a problem for printable characters, as they
fired on TextInput, which always fired separately after KeyDown.
This patch ensures that KeyPress is fired always in the proper order.
2024-05-09 21:13:13 +02:00
Kamil Jarosz
5541daa105
debug_ui: Add interactive tab order list
2024-05-09 20:57:53 +02:00
Kamil Jarosz
baa87ff016
core: Add FocusTracker::tab_order method
...
This method returns the current tab order as a list of objects.
2024-05-09 20:57:53 +02:00
Kamil Jarosz
ccf6b3edb5
debug_ui: Add possibility to clear current focus
2024-05-09 20:57:53 +02:00
Kamil Jarosz
ab62b740a7
debug_ui: Use open_display_object_button for focus
2024-05-09 20:57:53 +02:00
Kamil Jarosz
4e39598da4
debug_ui: Exclude hidden objects properly when searching
...
The option "Include Hidden" was not working properly,
as it did not exclude all hidden objects when disabled.
An object is hidden also when its ancestor is not visible.
2024-05-09 08:12:59 -07:00
Kamil Jarosz
ece156e478
core: Use draw_rect_outline for focus highlight
...
This ensures that highlight does not become outdated
(e.g. when the highlighted content moves).
Additionally, it makes the highlight have 3px independently of zoom.
2024-05-09 00:40:25 +02:00
Kamil Jarosz
07bfa0c3e2
core: Use draw_rect_outline for debug rects
...
This improves debug rect rendering so that debug rects
do not have missing corners as before.
2024-05-09 00:40:25 +02:00
Kamil Jarosz
eabf76dae8
core: Add RenderContext::draw_rect_outline
...
This method may be used to efficiently draw a simple rectangle outline
for debug rects and focus rects.
2024-05-09 00:40:25 +02:00
Kamil Jarosz
bc4ed4c5a1
core: Improve performance of round_to_even
...
This patch improves performance of ecma_conversions::round_to_even():
1. by using f64::round_ties_even(), which has been stable
since 1.77.0, instead of a custom algorithm; and
2. by removing an unnecessary comparison to i32::MIN,
as casting a float to an integer automatically saturates
values smaller than the minimum integer value to the minimum
value of the integer type.
2024-05-08 22:16:40 +02:00
Kamil Jarosz
8eaf844cdc
core: Add tests for round_to_even
2024-05-08 22:16:40 +02:00
Kamil Jarosz
b551d14a59
avm2: Ensure the focus is dropped when it's removed
...
The logic of dropping the focus when it's removed
applies not only to TextFields but for every InteractiveObject.
This patch ensures that any focus is dropped when its parent is removed.
2024-05-07 22:56:25 +02:00
Kamil Jarosz
428688e7e7
core: Add DisplayObject.on_parent_removed method
...
This method prevents code duplication performed when overwriting
set_parent to inject some behavior when the parent is removed.
2024-05-07 22:56:25 +02:00
Kamil Jarosz
8d50d1fead
core: Move has_focus to InteractiveObject
...
All the interactive objects had the has_focus flag in their concrete
implementations (even AVM2 button, which did not use it at all).
This patch moves it to InteractiveObject (as a bit flag), making it
easier to manage and use through the has_focus, set_has_focus methods.
Additionally, the operation of setting the current focus to None
when an object was having it was popular enough that it warranted its
own method of drop_focus.
2024-05-07 22:56:25 +02:00
Adrian Wielgosik
120bfa2b30
avm2: Send ADDED_TO_STAGE in SimpleButton at correct time
2024-05-07 22:42:52 +02:00
Kamil Jarosz
8e6e71b2f7
web: Download the file on FileReference.save
...
This patch adds support for saving files on web using FileReference.
When writing data, a download is triggered with the default file name.
Currently, there's no dialog that lets the user select save destination.
This patch also ensures that all implementations of FileDialogResult
behave the same way: desktop, web, and tests.
The methods `write` and `refresh` have been merged into one:
`write_and_refresh`, which allows the tests and web implementations
behave the same way as desktop.
2024-05-07 22:26:30 +02:00
Kamil Jarosz
64df0368fd
avm2: Fix TextField.selectedText
2024-05-06 22:17:41 +02:00
_Mads
901a88db29
avm2: Implement selectedText in class flash.text.TextField
2024-05-06 22:17:41 +02:00
J0sh0nat0r
0c38cc9e28
avm2: share binding skip optimization with `call_method`
2024-05-06 22:02:45 +02:00
Polo
0910df8307
avm2: Implement XML.contains ( #16206 )
...
* avm2: XML.contains() implemented
* tests: XMLList known_failure removed
* avm2: XML manual checks removed
* avm2: XMLList.contains() behavior fixed
* avm2: XML contains method moved to xml.rs
* avm2: Empty line removed in xml.rs
* avm2: XML contains args name renamed to value
2024-05-06 17:40:03 +00:00
Kamil Jarosz
42c26f61d1
core: Call focus handlers on every object
...
Before this patch, focus handlers were called from on_focus_changed,
only for selected objects. It seems that they should be called for
every object by default.
2024-05-04 17:05:24 -07:00
Kamil Jarosz
f5a0751557
avm2: Do not highlight Stage on focus
...
Stage is never highlightable, even if there's a focus on it.
2024-05-04 17:05:24 -07:00
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
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
renovate[bot]
6e84b05b66
fix(deps): update rust dependencies
2024-03-01 22:46:32 +01:00
TÖRÖK Attila
10fa4175c4
chore: Bump jpegxr and nellymoser-rs git references
2024-03-01 21:54:18 +01:00
Tom Schuster
0cea5a0a9e
core: Introduce gamepad button mapping support
2024-02-28 21:21:09 +01:00
Kamil Jarosz
f6907a5c73
desktop: Add tests for connect_socket
...
Add tests for ExternalNavigatorBackend::connect_socket.
2024-02-28 19:42:54 +01:00
Kamil Jarosz
cc8b0aa5dd
core: Use async channels in NavigatorBackend
...
This has several advantages:
1. it allows using async variants of send and recv,
2. it adds consistency as until now Receiver was async,
and Sender was not.
2024-02-28 19:42:54 +01:00
Aaron Hill
3e99dd3999
core: Use latest fluent-templates `master` for reproducible builds
2024-02-27 21:36:28 -05:00
Aaron Hill
900a8407d6
core: Implement lazy decoding of bitmaps
...
We hit a pathological case in House
(https://github.com/ruffle-rs/ruffle/issues/15154 ),
where eagerly decoding bitmaps during preloading results in
over 10GB of ram being used.
With this PR, we store the compressed bitmap, and only decode it
each time we instantiate it. In order to support bitmap fills,
we store the decoded width/height and a lazily-initialized GPU handle
in `Character::Bitmap`
2024-02-27 21:18:18 -05:00
TÖRÖK Attila
ee0c1f42ff
core,avm2: Make Timer.setDelay not change the timer ID. Fix #15005 .
2024-02-27 23:56:33 +01:00
renovate[bot]
9cdb2f31cc
fix(deps): update rust dependencies
2024-02-26 08:14:26 +01:00
Lord-McSweeney
11d5a8f7df
avm2: Resolve reviews (no functional changes)
2024-02-25 21:52:24 -08:00
Lord-McSweeney
8542edf10c
avm2: Handle lazy multinames in optimizer
2024-02-25 21:52:24 -08:00
Lord-McSweeney
b637e5f108
avm2: Add a `popn` function to `Stack` and use it
2024-02-25 21:52:24 -08:00
Lord-McSweeney
4d8c98af0d
avm2: Don't use a `Class`'s first `ClassObject` for its VTable if more than one `ClassObject` had been constructed for the class
2024-02-25 21:52:24 -08:00
Lord-McSweeney
a763842b1b
avm2: Extract optimizer logic into a different file
2024-02-25 21:52:24 -08:00
Lord-McSweeney
ba9a975685
avm2: Add `push_raw` for faster stack pushes
2024-02-25 21:52:24 -08:00
Lord-McSweeney
b07c0a99ea
avm2: Also optimize `CallProperty` to `CallMethod` when possible
2024-02-25 21:52:24 -08:00
Lord-McSweeney
22117e3eb5
avm2: Add more ops to optimizer and let it use resolved argument types
2024-02-25 21:52:24 -08:00
Lord-McSweeney
4da708edb8
chore: appease clippy
2024-02-25 21:52:24 -08:00
Lord-McSweeney
e227576093
chore: cleanup
2024-02-25 21:52:24 -08:00
Lord-McSweeney
d7cebd020b
avm2: Support type inference for chained `GetProperty`s
2024-02-25 21:52:24 -08:00
Lord-McSweeney
8b19012123
avm2: Handle more ops in abstract optimizer
2024-02-25 21:52:24 -08:00
Lord-McSweeney
0cb0d4a6da
avm2: More advanced optimizer
2024-02-25 21:52:24 -08:00
renovate[bot]
6b89737093
fix(deps): update rust dependencies
2024-02-19 11:32:22 +01:00
Crowdin Bot
29821e9c84
chore: Update translations from Crowdin
2024-02-19 10:38:26 +01:00
Tom Schuster
ba7c9a4e31
avm2: Always serialize as ECMAArray, which produces an AMF0 MixedArray
2024-02-19 10:13:18 +01:00
Adrian Wielgosik
fe2ed81d8a
avm2: Implement JS->AS3 Object deserialization
2024-02-16 15:25:55 +01:00
renovate[bot]
1651b7a5b0
desktop: chore: Update `egui` to 0.26.2
2024-02-16 01:52:41 +01:00
Aaron Hill
1a1ce91e98
core: Only report socket connected just before we fire 'connect'
...
Platform Racing 3 relies on 'Socket.connected' reporting 'false'
immediately after calling 'Socket.connect' - it internally buffers
data made when 'Socket.connected' is false
2024-02-16 01:10:57 +01:00
Tom Schuster
49b3b9d7de
avm2: Stub all flash.sampler methods
2024-02-14 14:10:41 +01:00
svitkin
b55db7083c
tests: Add test for flash.net.navigateToURL
2024-02-12 17:14:11 +01:00
svitkin
5028f66608
avm2: parse data for flash.net.navigateToURL ( closes #13898 )
2024-02-12 17:14:11 +01:00
Marco Bartoli
50a8815a50
avm2: Deserialize AMF dictionary ( #15169 )
2024-02-09 00:06:08 +01:00
Aaron Hill
71f828a3fd
avm2: Use playerglobals domain as parent for `new ApplicationDomain()`
...
We were incorrectly using the stage domain as the parent, which caused
classes to be incorrectly shared between domains.
2024-02-07 20:13:23 -05:00
Tom Schuster
d7c7716c34
avm2: Implement TextField::getLineText
2024-02-07 20:34:43 +01:00
David Wendt
d7583289c9
avm1: Make `NetConnection.isConnected`'s stub more functional
2024-02-07 19:46:39 +01:00
Tom Schuster
cadae9303f
avm2: Verify the URLRequest method
2024-02-06 17:52:08 +01:00
sleepycatcoding
4c6f2ba973
avm2: Fix `in` operator not handling attributes in XML object
2024-02-05 21:09:39 +01:00
Tom Schuster
ecda68b81c
avm2: has_property should do proto.has_property instead of
...
has_own_property
2024-02-05 19:34:09 +01:00
TÖRÖK Attila
28c380cfac
desktop: Update egui to 0.26.0
2024-02-05 19:05:10 +01:00
renovate[bot]
477440d387
fix(deps): update rust dependencies
2024-02-05 07:56:07 +01:00
Kamil Jarosz
f3f8a4522e
text: Add support for relative font sizes in HTML
2024-02-04 22:01:32 +01:00
_Mads
b5d0c965f0
avm2: Implement TimerEvent.toString
2024-02-03 21:54:52 +00:00
Kamil Jarosz
50b5f29c0a
text: Make enter add a new line in multiline fields
2024-02-03 13:40:07 +01:00
Aaron Hill
b02a96373b
debug_ui: Show ClassObjects for domain class
...
This re-uses our existing infrastructure for displaying
AVM2 Class objector. One minor limitation of this approach
is the inability to view a `Class` that hasn't yet had its
`ClassObject` created - however, this should be rare in practice.
We show a collapsing header with all of the ClassObjects associated
with the given Class.
2024-02-02 19:24:36 -08:00
Lord-McSweeney
603a76bab0
avm2: Add fast path for `Value::abstract_lt`-ing two integers
2024-02-01 17:03:57 -08:00
Nathan Adams
71c9de410d
core: Clarify CPU vs GPU branch in BitmapData.draw
2024-02-02 00:59:45 +01:00
Nathan Adams
bac78442fc
core: Don't do bmd.draw() on cpu if it exists on gpu
2024-02-02 00:59:45 +01:00
Nathan Adams
70fbb4a7ac
render: Move away from SyncHandle.retrieve_offscreen_texture to RenderBackend::resolve_sync_handle
2024-02-02 00:59:45 +01:00
Marco Bartoli
5ae3be3ac9
avm2: Ignore version marks in non-playerglobal namespaces
2024-02-01 21:50:26 +00:00