Merge the latest changes from upstream - #8
Merged
Conversation
Ensures that the submodules are checked out too
…ontains a mix of line styles In playCommands(), it calls closePath() when LINE_STYLE is encountered, but we weren't doing a similar endStroke() call in hitTest() when LINE_STYLE is encountered. This meant that some of the strokes weren't getting checked for hit testing at all. Now, when encountering LINE_STYLE in hitTest(), we call endStroke() and immediately check if the point is in the current stroke. Context: https://community.openfl.org/t/line-thickness-and-hit-testing-pixel-level-behavior/14048
This allows openfl to be used in a CPPIA script.
Tweaks the target conditions here just a bit to make sure it still works on cppia.
…uble and triple click Should have been mouseX/mouseY instead of event.stageX/event.stageY. This now matches other calls to __getPositionByIdentifier that were using mouseX/mouseY and fixes some strange selection behavior where it was returning the wrong caret index
…after the last character in a word
Fixes double-clicking immediately before first word in a line or immediately after last word in a line. It was causing the last word on the line before or the first word in the line after to also be selected.
We already had them as badges at the top, but that can be easy to miss
…re things aren't supported yet
…, for some reason (closes openfl#2547)
…tent for easier diffs
…when its parent had cacheAsBitmap and the button did not have downState
… 0.0.0.0 Correctly get the actual address of the NIC that your OS would route outbound traffic through when you bind to wildcards.
Improves the test to avoid special conditions for hashlink. The DatagramSocket api should now behave the same on all targets.
…re too) because it is called before setting window.textInputEnabled to true When SDL ignores the text input rect, it uses 0,0 instead. On macOS, this results in any overlays (such as the caps lock indicator) appearing in the top left corner, instead of relative to the rectangle. Typing would fix the position temporarily while the text field still had focus, but changing focus to another text field, or to something else and back to the original text field would revert back at 0,0.
…order that SDL_SetTextInputRect and SDL_StartTextInput should be called Just in case commit 05df45e needs to be reverted or further modified (maybe we can call window.textInputEnabled both before and after window.setTextInputRect)
…tmapData was created by the Assets class Commit b0ee945 (openfl#2755) started disposing the canvas/context on html5 to fix a memory leak on Safari (and it actually frees up memory faster for all browsers, which is a better implementation that more closely matches how dispose() is documented to work). However, disposing BitmapData that was created by Assets.getBitmapData() unexpectedly resulted in new exceptions being thrown. On most targets, Lime's Assets.getImage() returns a new Image every time, and modifying that Image has no affect on future calls to Assets.getImage(). On html5, it always returns the same Image, which means that modifying or disposing the Image's contents will affect future calls to Assets.getImage(). In particular, after clearing/resizing the canvas/context, future calls to Assets.getImage() will return an invalid Image on html5 because a fresh canvas/context isn't created every time. So now we don't dispose the canvas/context specifically when the BitmapData was created by Assets.getBitmapData(). This is not really ideal, but it's probably better to maintain backwards compatibility in this case, at least for now. In particular, the change seems to affect Flixel, which is one of the bigger libraries that depends on OpenFL/Lime in our ecosystem. I can't currently say which behavior that I would prefer, but making those methods more consistent is something we should consider for future major updates of Lime and OpenFL. The html5 target seems to be the trickiest. Technically, it can create new Images synchronously by cloning, as long as it has completed creating the first one asynchronously, but it's pretty expensive performance-wise. So making all targets return a single shared Image might be the better choice, if we want to make all targets more consistent. In that case, libraries like Flixel will need to remember which BitmapData instances come from Assets.getBitmapData(), and they'll need to avoid disposing the assets BitmapData when it might still be needed. I'm no Flixel expert, but it looks to me like FlxGraphic may be able add an internal flag to track whether the BitmapData came from from Assets or not. Similar to what we're using as a workaround in this commit.
This patch ensures CairoTextField respects changes to TextField.antiAliasType and sharpness between renders. Previously, fontOptions were only assigned when creating a new Cairo context (if (cairo == null)), so any AA changes made after the first render were ignored. This caused BitmapData.draw() to reuse the original AA settings. The fix moves the CairoFontOptions creation and assignment out of the if (cairo == null) block so they are applied on every render, ensuring updated AA settings take effect immediately without forcing a new surface allocation.
Use adaptive padding for blur filter extents based on blur radius and quality. This prevents visible cutoff of the blur effect, especially at large radii or high quality settings, by inflating the offscreen surface to match the filter’s true footprint. Closes openfl#2794
…mask from another display object As documented: > Note: A single mask object cannot be used to mask more than one calling display object. When the mask is assigned to a second display object, it is removed as the mask of the first object, and that object's mask property becomes null.
According to the documentation, should be replaced by 0 when negative bounds are specified.
…hanges Previously, `ShaderFilter`s did not update correctly when a DisplayObject was scaled or otherwise transformed, since the cached bitmap was reused without re-rasterization. This caused filters to render at the wrong resolution after scale changes. This change ensures that when a transform update is detected, the cached bitmap data is cleared for `ShaderFilter`s, forcing a fresh render. As a result, shader-based filters now remain visually consistent after scale or rotation changes. Closes openfl#2795
The previous change to invalidate ShaderFilter cache on transform used Std.isOfType, which is only available in Haxe 4.2+. This patch restores compatibility with older Haxe versions by using Std.is when compiling under Haxe <4.2. Now the type check works consistently across Haxe 3 and all supported Haxe 4 versions.
…orm changes Fixes an issue where ShaderFilters reused cached bitmaps after scale or rotation changes, causing filters to render at the wrong resolution. (see: openfl#2795) The cache is now invalidated only when the affine portion of the world transform (a,b,c,d) changes, ensuring re-rasterization when scale/rotation/skew affect shader output. Pure translations (tx,ty) no longer trigger unnecessary cache invalidations. (As opposed to the changes I made here: openfl@393e938) This improves visual correctness for shader-based filters while avoiding redundant re-renders during simple movement. Haxe 3/4 type check compatibility is preserved.
Removes confusion that cpp weakrefs are supported in `addEventListener`.
Ensure we only have a single hit to the setter on update.
Fixes some broken references from cb that were left over when porting.
Removes old cb references that were carried over when porting
MAJigsaw77
approved these changes
Oct 5, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Just to make sure everything's all up to date!
No merge conflicts on this one so feel free to merge it!