Commit Graph

3973 Commits

Author SHA1 Message Date
Martín Lucas Golini
ce2a73dd3e Fix in HTML context some specific CSS queries.
Fix several indirect leaks.
Added epp CSS Selector Optimization Plan.
2026-07-09 19:51:57 -03:00
Martín Lucas Golini
b0685060f3 Fix GL context memory leak.
Fix flaky test on macOS.
2026-07-09 12:33:44 -03:00
Martín Lucas Golini
5787e895ba Fix HTML font-weight resolution for @font-face variants
Apply @font-face weights to loaded variable fonts, preserve author
font-family names for internal font-face aliases, and re-resolve text fonts
when style or weight changes after initial font selection.

Also updates the font-weight native variant plan to reflect the current
architecture and remaining work around static native weight variants.
2026-07-09 02:03:19 -03:00
Martín Lucas Golini
95d0a8881a Fix CSS var resolution during style application
Resolve CSS variable values at the points where properties are applied,
inherited, propagated, and used to seed transitions. This prevents raw
var() values from leaking into widget state or transition start/end
values when style attributes, inherited properties, or state-dependent
rules are involved.

Also refresh style definitions when widgets load so selector-dependent
rules are evaluated with the final widget context, and add regression
coverage for inline style vars, inherited vars, parent-state child rules,
tab close opacity, and foreground tint transitions.
2026-07-08 20:48:27 -03:00
Martín Lucas Golini
9e0335e048 Fix assuming in CRLF files CRLF lines in all cases. 2026-07-08 00:53:40 -03:00
Martín Lucas Golini
7c931bf72e Fix again in UIScrollView scroll visibility.
Fix `whitespace: pre`.
2026-07-08 00:14:08 -03:00
Martín Lucas Golini
fbfc599dbb - Fix timed TCP connects for high POSIX file descriptors
Use poll() for POSIX TcpSocket timed connects instead of select().
select() cannot safely handle descriptor values >= FD_SETSIZE, so a
process with many open sockets/resources could fail new HTTPS requests
even when only one socket was being waited on. This showed up in the
HTML compat module when loading request-heavy pages such as old Reddit.

Keep the Windows path on select(), since Winsock does not use nfds as a
POSIX descriptor limit and this code only waits on one socket.

Also initialize HttpConnection::mIsKeepAlive in the TcpSocket-taking
constructor, matching the default constructor and avoiding undefined
connection lifetime state.

Add a regression test that reserves file descriptors past FD_SETSIZE and
verifies a timed localhost TcpSocket connect still succeeds.

- Treat drawable ref "none" as clearing the layer drawable instead of
trying to load it as a drawable/image reference.

- Round the scroll view inner width up before deciding horizontal
scrollbar visibility, avoiding fractional pixel overflow from creating
a bogus horizontal scrollbar.
2026-07-07 00:46:59 -03:00
Martín Lucas Golini
b7facf4b37 Fix isInlineBlock in UITextSpan: floated inline-block spans were no longer considered isInlineBlock() because UITextSpan::isInlineBlock() required float:none. 2026-07-06 12:42:38 -03:00
Martín Lucas Golini
bf0c6e8b11 Fix in Flex layout interacting with float elements. 2026-07-06 12:27:53 -03:00
Martín Lucas Golini
3f304e9c80 Float minor fix. 2026-07-06 11:48:35 -03:00
Martín Lucas Golini
c9add7047b Fix floated auto-width sizing and line-height text placement
Preserve shrink-to-fit widths for floated HTML boxes whose CSS width is
auto, instead of letting their own block layout expand them back to the
containing block width. This matches the CSS float model and fixes floated
list-item menus where hover boxes were much wider than their content.

Also separate RichText visual font metrics from CSS line-box metrics. Text
runs now keep native font height for drawing while line layout still uses
CSS line-height, allowing the expected half-leading offset for vertically
centered text in block anchors.
2026-07-06 01:42:38 -03:00
Martín Lucas Golini
e984c87105 Implement CSS box-sizing for HTML layout sizing
Add CSS box-sizing support for HTML widgets and route CSS-specified
width/height conversion through virtual sizing hooks. Resolve percentage
CSS sizes against the containing block content box, and apply content-box
or border-box conversion consistently across block, flex, grid, table,
and rich text layout paths.

Keep table wrapper width behavior compatible with CSS table layout by
overriding the table width conversion separately, so padded percentage
tables do not overflow their assigned wrapper width.

Add focused regressions for block padding, flex-basis sizing, grid
containers, table containers, and the border rendering cases that depend
on explicit border-box sizing.
2026-07-06 00:32:17 -03:00
Martín Lucas Golini
87c56142ee Forgot to make these recursive in UISceneNode, needed by the UIWidgetInspector:
/** Enables or disables focus highlighting in this scene and embedded UI scenes. */
	void setHighlightFocusRecursive( bool highlight );

	/** Enables or disables box debug drawing in this scene and embedded UI scenes. */
	void setDrawBoxesRecursive( bool draw );

	/** Enables or disables debug-data drawing in this scene and embedded UI scenes. */
	void setDrawDebugDataRecursive( bool debug );
2026-07-05 20:00:50 -03:00
Martín Lucas Golini
ab14972fd3 TextureFactory small refactor.
Fix in getTextureCacheName.
2026-07-05 19:21:23 -03:00
Martín Lucas Golini
4f3e5309a4 Fix broken resource cache for images and layout drawables. 2026-07-05 00:55:37 -03:00
Martín Lucas Golini
ffbfe0a646 Fix stack-overflow in HTML widget elements with unresolvable percentage height.
Fix textarea sizing bug with percentage height.
2026-07-05 00:31:36 -03:00
Martín Lucas Golini
d56135c2d1 Fix CSS specificity rules.
Added control over the UISceneNode children and added setHighlightOverRecursive. This allows us to inspect nested UISceneNodes.
Fix hit-box bug when changing display.
2026-07-05 00:14:02 -03:00
Martín Lucas Golini
b192bcde1e Fix stale width being reused during the deferred CSS relayout. This happened when a display was being switched and during the layout change we didn't reset to the initial state. 2026-07-04 20:41:40 -03:00
Martín Lucas Golini
627d22163b Fixed an layout invalidation bug where we were discarding real invalidations.
Allow to defer `<img defer src>` (useful for local tests).
2026-07-04 16:14:47 -03:00
Martín Lucas Golini
3938536bff Merge branch 'develop' into feature/uiwebview 2026-07-04 01:25:49 -03:00
Martín Lucas Golini
8b32f26b9f Some extra optimizations to CSS selector. 2026-07-04 01:25:42 -03:00
Martín Lucas Golini
9975e2a17d Merge branch 'develop' into feature/uiwebview 2026-07-04 00:13:15 -03:00
Martín Lucas Golini
592186ae73 Singleton implementation optimization. 2026-07-04 00:13:06 -03:00
Martín Lucas Golini
b5481414a6 Fix UISvg memory leak. 2026-07-03 21:06:05 -03:00
Martín Lucas Golini
9a83fce11a Fix build in Windows and macOS. 2026-07-03 17:57:38 -03:00
Martín Lucas Golini
a2b216a0e7 Fixed a bug introduced in the latest changes that tried to load non urls as external resources.
Fixed some sizing issues.
2026-07-03 16:40:48 -03:00
Martín Lucas Golini
a4f4e033b7 Merge branch 'develop' into feature/uiwebview 2026-07-03 13:27:51 -03:00
Martín Lucas Golini
f3e5bee80a Fix body height invalidation issue killing performance. 2026-07-03 13:27:27 -03:00
Martín Lucas Golini
fcef1c2e2c Syntax highlighting support for Gemini documents (SpartanJ/ecode#917). 2026-07-03 12:45:33 -03:00
Martín Lucas Golini
e922d86c34 Investigate macOS unit-tests crash. 2026-07-03 11:03:45 -03:00
Martín Lucas Golini
e5751da1a0 Refactor UIWebView document scene isolation and async resource lifetime.
Move UIWebView documents into isolated UISceneNode instances, keep document viewport and extent metrics synchronized, and fix shrink/grow behavior after navigation, async CSS, and viewport changes. Scope author styles and font-face resources per document scene, ignore stale async callbacks after navigation or destruction, and add deterministic coverage for CSS, fonts, images, cookies, hit testing, and document extent updates.

Fixes in UIWebView -> doc -> html -> body resizing issues. Added a few tests to catch regressions.
2026-07-03 01:33:47 -03:00
Martín Lucas Golini
bc7498c7c4 Merge branch 'develop' into feature/uiwebview 2026-07-02 19:36:15 -03:00
Martín Lucas Golini
a3d78a1217 Implemented Built-in Scientific Calculator in the universal bar for ecode (SpartanJ/ecode#701). 2026-07-02 18:51:12 -03:00
Martín Lucas Golini
772742cbbb Fix percentage in font-size for UIWebView.
Unload fonts from scene in UIWebView.
2026-07-02 00:06:02 -03:00
Martín Lucas Golini
f23b355ecd Fixes flaky test? 2026-07-01 23:41:30 -03:00
Martín Lucas Golini
d8a683ee99 Fix em, ex, ch resolution in UIWebView elements. 2026-07-01 23:27:52 -03:00
Martín Lucas Golini
5ad166b648 Cleaner hit testing: removed UISceneNode::overFind() override; UIRoot now has root-scoped child traversal extent for embedded document scenes. 2026-07-01 23:11:11 -03:00
Martín Lucas Golini
e210736c2d CI Fixes, Windows not resolving local paths correctly in UIWebView. 2026-07-01 22:40:52 -03:00
Martín Lucas Golini
4c73311789 Greatly improved UIWebView implementation. 2026-07-01 20:36:00 -03:00
Martín Lucas Golini
38448008ec Merge branch 'develop' into feature/uiwebview 2026-07-01 19:10:22 -03:00
Martín Lucas Golini
f6da5ef76e Fix warning on macOS due to posix_spawn_file_actions_addchdir_np usage (we must use posix_spawn_file_actions_addchdir).
Try to run tests with borderless windows to see if macOS windows are created with the right size.
2026-06-30 11:35:33 -03:00
Martín Lucas Golini
055bcfe549 Add some logs to the failing compare images in macOS to understand what's going on. I don't want to keep forcing random window sizes to make them pass... 2026-06-30 11:01:20 -03:00
Martín Lucas Golini
2810501cba Added UIFilePickerDialog support for ecode (SpartanJ/ecode#903) and improved the dialog. 2026-06-30 00:05:29 -03:00
Martín Lucas Golini
57cdab7b7f Implemented UIFontPickerDialog.
Fixed alignment in UILinearLayout when padding is used.
2026-06-29 20:32:08 -03:00
Martín Lucas Golini
3a1c75f4f6 Added Insert Date / Time functionality (Settings -> Edit -> Insert Date, plus commands for each option).
Fixed a use after free bug in UICodeEditorSplitter.
2026-06-28 01:52:14 -03:00
Martín Lucas Golini
fba521d366 Update efsw 2026-06-27 01:19:35 -03:00
Martín Lucas Golini
e720b70863 • Fixed the keybinding merge bug. The helper was restoring missing default commands
by overwriting an occupied default shortcut, which treated user bindings like mod+d=duplicate-line-or-selection as stale
  because that command is not in the default keybinding table. Now it only adds a default when the default shortcut is actually
  free.

  Added a regression test in src/tests/unit_tests/uicodeeditor_tests.cpp:108 covering the reported case: mod+d reassigned, then
  an extra mod+e=show-markdown-preview binding exists. This was reported in SpartanJ/ecode#914.

• Implemented the splitter-level focus state cache, it will remember closed documents cursor state when reopened and it will restore cursor state per-code editor and not per-document (SpartanJ/ecode#893).
2026-06-25 11:26:31 -03:00
Martín Lucas Golini
0693688f73 Cache cursors in local sessions, this will restore last cursor position of a recently closed file. 2026-06-24 01:42:12 -03:00
Martín Lucas Golini
7cf9a685b9 Merge branch 'develop' into feature/uiwebview 2026-06-24 00:00:08 -03:00
Martín Lucas Golini
9f7a676c77 Fix for macOS build issue (why this appears now?). 2026-06-23 23:04:33 -03:00