Commit Graph

  • d2d13cbe41 Fixed a few HTML+CSS parsing errors. Fixed a crash when loading fonts from web. Add support for scientific notation in stylesheet lengths. Martín Lucas Golini 2026-05-11 00:51:43 -03:00
  • a38ffe2532 Inherit UIHTMLInput from UIHTMLWidget. Martín Lucas Golini 2026-05-10 14:26:47 -03:00
  • cafdefbf4a Fix auto-size for HTML images. Added visibility property support. Fix display: none. Added figure and figcaption HTML tags. Martín Lucas Golini 2026-05-10 01:55:19 -03:00
  • 24bc5edd72 Fixes in whitespace collapsing, added white-space-collapse to the CSS specification. Martín Lucas Golini 2026-05-09 21:26:16 -03:00
  • 792bae6da2 Make UITextNode easily debuggable by setting its position and size. Martín Lucas Golini 2026-05-09 20:05:35 -03:00
  • 23b14ba2fe Fix unit-tests (ups). Fix an issue when setting an invalid color to the terminal display. Update efsw. Martín Lucas Golini 2026-05-09 19:52:06 -03:00
  • 9255cf8c35 Nit in UITextNode. Martín Lucas Golini 2026-05-09 19:26:52 -03:00
  • 10fa8f7411 Fix ex and ch units. Martín Lucas Golini 2026-05-09 02:22:06 -03:00
  • f4f30c9979 Improve line-height support (add correct percentage support). Martín Lucas Golini 2026-05-09 01:56:55 -03:00
  • bc071bd88d Add line-height and text-indent support. Martín Lucas Golini 2026-05-09 01:38:43 -03:00
  • 0c3df503b4 Fix in background sizing when using pixel-density != 1. Updated new background tests due to the windowing size issues in the macOS CI. Martín Lucas Golini 2026-05-09 00:30:33 -03:00
  • e94550a049 ui: Full HTML background property support + whitespace collapsing rewrite Part 1: CSS background properties (UINodeDrawable, LayerDrawable) Add BackgroundMode (Native / Html) to UINodeDrawable. When Html mode is active, background rendering follows CSS/HTML semantics (repeat defaults to repeat, clip plane always enabled, etc.). Native mode preserves the original eepp behavior (no-repeat by default, clip only when repeating). Add per-layer background-origin, background-clip, background-attachment with fromText parsers and CSS property registration. background-origin controls the reference box for position/percentage resolution. background-clip enables per-layer content-box clipping. background-attachment: fixed anchors the background to the scene root; local is stubbed (needs per-widget scroll offset plumbing). Replace the single Repeat enum with RepeatX / RepeatY enums supporting two-value repeat (e.g. "repeat no-repeat", "space round"). Implement space and round repeat rendering in LayerDrawable::draw(). Fix background-size: contain to scale up (not just down) like HTML. Rewrite the comma-separated multi-layer background shorthand parser with /size separator, box keyword disambiguation, and attachment keywords. UINode::{getBackground} detects UI_HTML_ELEMENT flag and lazily sets BackgroundMode::Html. Add golden image test: 20-tile image atlas via background: url(bnp.png) pos / size no-repeat with browser-comparable HTML. Part 2: HTML whitespace collapsing (HTMLFormatter → UIRichText) Move whitespace collapsing from parse time to layout time. Previously HTMLFormatter::collapseXmlWhitespace ran on the pugixml DOM before CSS was resolved, using tag-name heuristics for inline/block detection. This caused whitespace between elements with display: inline-block (via CSS) to be incorrectly stripped. The new pipeline preserves raw whitespace in UITextNode widgets (after internal whitespace collapsing via UIRichText::collapseInternalWhitespace) and defers boundary stripping to UIRichText::rebuildRichText, where every widget's computed CSSDisplay is available via UIWidget::isInlineDisplay(). - UIWidget::isInlineDisplay() returns true for text nodes and widgets with CSSDisplay::Inline | InlineBlock, used by boundary logic. - UITextNode::isWhitespaceOnly() identifies collapsible text nodes. - findLogicalPrev/Next walks up through inline ancestors to find the correct boundary element, matching HTML's whitespace transparency rule. - Boundary stripping: leading/trailing spaces removed at block edges, preserved between inline-level siblings. - Double-space prevention: when adding text that starts with a space, peeks at the last SpanBlock in RichText if it ends with a space, the leading space is stripped. This prevents consecutive spaces when whitespace nodes are separated by empty inline elements. - UITextNode::mLayoutCharCount syncs the character index between rebuildRichText (where boundary-stripped text is added) and positionRichTextChildren (where widgets are mapped to render spans), fixing hitbox alignment for all text-bearing widgets. Remove HTMLFormatter::collapseXmlWhitespace, isInlineNode, hasSignificantText, getLogicalPrev, getLogicalNext, and the precomputeDisplayStyles hack (~200 lines removed). HTMLFormatter now only exposes HTMLtoXML. Other fixes - Remove @import url(https://fonts.googleapis.com/css?family=Lato) from ensoft.css (async HTTP use-after-free in test suite). - BlockLayouter::positionRichTextChildren skips whitespace-only text nodes when advancing the character index. - Fix in DrawableSearcher not finding already loaded textures. Martín Lucas Golini 2026-05-08 22:13:07 -03:00
  • 7452cbf492 Fix mingw build on openSUSE. Martín Lucas Golini 2026-05-08 18:01:41 -03:00
  • a870a278bb Forgot to update versioning. A couple of minor nits. Martín Lucas Golini 2026-05-08 16:50:46 -03:00
  • 02a9c3708b Pump internal remote SDL2 version. Martín Lucas Golini 2026-05-07 20:11:07 -03:00
  • 8f13e62dd7 Slightly debounce UICodeEditorSplitter::addEditorPositionToNavigationHistory. Martín Lucas Golini 2026-05-06 22:48:57 -03:00
  • dc603d4275 Some rendering optimizations. Martín Lucas Golini 2026-05-05 01:42:54 -03:00
  • 336afe90d7 Fixed a rendering bug in the terminal emulator when updated line only updated spaces. Added an optimization for scene loading. Do not allow the spell checker renderer to try to render on too long lines. Martín Lucas Golini 2026-05-04 19:30:56 -03:00
  • 19c0f15196 Merge branch 'feature/sdl3' into develop Martín Lucas Golini 2026-05-04 12:21:19 -03:00
  • 02b6076cee mojoAL SDL3 Martín Lucas Golini 2026-05-04 11:47:54 -03:00
  • 9e3c13903d Improve percentage resolution in HTML elements. Martín Lucas Golini 2026-05-03 19:49:38 -03:00
  • da30372aae Remove concepts dependency, switch temporally Linux nightly to clang. Martín Lucas Golini 2026-05-03 19:40:56 -03:00
  • 03a798820d Fix percentage resolution when parent is WrapContent (only for height's, for width we need to do some extra changes in layouters, added a plan to fix it later). Martín Lucas Golini 2026-05-03 12:32:27 -03:00
  • 7150633c1a Fixes in URI implementation to handle some special cases, added some tests too. Fix flaky test. Renamed tests to have consistent naming. Martín Lucas Golini 2026-05-03 02:22:37 -03:00
  • ecf7c20262 Fix foreground-radius definition. Martín Lucas Golini 2026-05-03 00:48:13 -03:00
  • 2dcc787ed7 Fix top + bottom and left + right html element expanding. Martín Lucas Golini 2026-05-03 00:33:32 -03:00
  • a698348abd Improve font loading and URL handling in external CSS. Martín Lucas Golini 2026-05-02 23:55:45 -03:00
  • fcb2cca844 Fixes for position: sticky, absolute and fixed. Martín Lucas Golini 2026-05-02 19:41:10 -03:00
  • 393a784e8f Merge branch 'develop' into feature/sdl3 Martín Lucas Golini 2026-05-02 14:45:56 -03:00
  • 89329123fb Added UIWebView and ui_html now uses that. Martín Lucas Golini 2026-05-02 14:45:07 -03:00
  • 1bd29d5df2 Should fix windows build. Martín Lucas Golini 2026-05-02 01:50:58 -03:00
  • 3226efdb24 Do not allow to set width and height of html and body from CSS since they need to have very specific sizing. Martín Lucas Golini 2026-05-02 01:47:08 -03:00
  • 307d9249ac Add float and clear support. Fixes in Base64 implementation. Fixes in remote image loading. Martín Lucas Golini 2026-05-02 01:12:13 -03:00
  • d54fd398f6 Fix bad includes. Add very hacky and basic overflow support. Martín Lucas Golini 2026-05-01 19:06:36 -03:00
  • e765160a44 Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-05-01 18:52:57 -03:00
  • 157bc2962f Added HTML forms support. Added cookies support (now it's possible to login in websites). Improved redirect handling in HTTP client. Fix in Node::find* and UIWidget::find* functions to ignore closing nodes. Fix in Node min width and height handling with pixel scale different than 1. Martín Lucas Golini 2026-05-01 18:52:46 -03:00
  • 6849401968 Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-05-01 11:30:29 -03:00
  • d64638d989 Out of flow positioning fixes. Martín Lucas Golini 2026-05-01 11:30:22 -03:00
  • ff96ef10c5 fix and update french translations (#177) Pierre Dittgen 2026-05-01 15:51:41 +02:00
  • 717f3c1b9b Fix in StyleSheetPropertiesParser::readPropertyValue. Martín Lucas Golini 2026-05-01 03:16:39 -03:00
  • eafdb240ea Try an alternative. Martín Lucas Golini 2026-05-01 02:55:58 -03:00
  • 1cd57f3b65 Try fix issue with ubuntu ppa repo. Martín Lucas Golini 2026-05-01 02:17:13 -03:00
  • 936938b71f Added an option to set dynamic theming in the UICodeEditor. Martín Lucas Golini 2026-05-01 01:07:06 -03:00
  • fc45707cd1 Fix padding and margin in empty spans with children. Martín Lucas Golini 2026-05-01 00:37:28 -03:00
  • 12b1ff0d62 Create the code element with the correct tag. Martín Lucas Golini 2026-04-30 20:59:13 -03:00
  • 76de6553b4 Introducing UITextNode, a native text node representation within the eepp UI hierarchy. This solves issues where text content incorrectly intercepts CSS structural pseudo-classes (like :nth-child and :first-of-type) because it was previously wrapped in standard UIWidget components (UITextSpan). In standard web browsers, a Node represents anything in the DOM (including text), whereas an Element represents an HTML tag. CSS selectors strictly filter by Element. Currently, eepp's CSS engine (StyleSheetSpecification) evaluates selectors directly against Node sibling counts (getNodeIndex(), getChildCount()). By distinguishing between "Widgets" (Elements) and "Text Nodes" at the node level, we updated these selectors to count only true structural elements, matching web standards with zero performance overhead. Martín Lucas Golini 2026-04-30 20:57:32 -03:00
  • 2b5d08d3b0 UITextSpan now inherits from UIRichText, if it's inline-block it will behave as a block otherwise it will continue behaving as inline. This improves inline-block behavior and it's much close to the specification. Martín Lucas Golini 2026-04-30 16:49:03 -03:00
  • 10b8ed8622 Fix incorrect wrap in inline-blocks. Martín Lucas Golini 2026-04-30 13:31:36 -03:00
  • 6691d9c174 Improvements for ul and ol. Added a few tags: dl, dt, dd. Load style tags inside UIRichText blocks. Added display: list-item. Martín Lucas Golini 2026-04-30 12:58:05 -03:00
  • bcdd88d1e6 Fix french translation xml corrupted by accident. Martín Lucas Golini 2026-04-29 14:54:24 -03:00
  • 04d69e2871 Several HTML widgets fixes. Martín Lucas Golini 2026-04-29 14:07:56 -03:00
  • 4ab9942e37 Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-04-29 13:05:37 -03:00
  • ae0fd6bc2b Fixes for absolute positioning and some minor details. Martín Lucas Golini 2026-04-29 13:05:29 -03:00
  • 80faf01cf4 Tolerate a minor difference in border visual tests due to graphics drivers behaving slightly different to render rounded corners. Martín Lucas Golini 2026-04-29 02:03:52 -03:00
  • 84331ad9ad 1024x653 px width seems to be the upper limit to create windows on macOS CI, no idea why. Martín Lucas Golini 2026-04-29 01:16:13 -03:00
  • dcd8ecee55 Split borders tests into two to fit in 650px height, which seems to be the maximum height we can use in macOS CI worker. Martín Lucas Golini 2026-04-29 00:56:01 -03:00
  • e1d9642dc6 Simulate content-box for HTML compat layer. Martín Lucas Golini 2026-04-29 00:28:11 -03:00
  • f765eae28d Greatly improve borders rendering, added a few tests. Fixed UIStyle::getProperty, now respects specificity. Fixed StyleSheetPropertiesParser::addProperty when inserted an already existing property. Martín Lucas Golini 2026-04-28 21:52:31 -03:00
  • 350bc8a95d Fix strong being created as b by accident. Martín Lucas Golini 2026-04-28 01:52:34 -03:00
  • c65122e120 UITextSpan drawBorder fix when span has padding. Martín Lucas Golini 2026-04-28 01:28:25 -03:00
  • 7c2fad64bc Add font shorthand parser (a simplified version to what we can support now). Martín Lucas Golini 2026-04-28 01:14:04 -03:00
  • f6e284c6f5 Move Default Block-Level Margins from Stylesheet to Widget Construction. This is needed in order to have working rules line: * { margin: 0; } with low specificity. Martín Lucas Golini 2026-04-28 00:11:18 -03:00
  • bbd91d2399 Added support for margin and padding in text spans. Martín Lucas Golini 2026-04-27 23:58:13 -03:00
  • ab712cd5c8 Correctly set HTML img alt text color. Martín Lucas Golini 2026-04-27 16:48:31 -03:00
  • 24cf3ad6c7 Added UISvg (for embedded svg in XML) and UIHTMLImage (to handle HTML img, although still WIP). Martín Lucas Golini 2026-04-27 16:41:37 -03:00
  • 939ce02a3a Support "inherit" keyword in CSS properties. Martín Lucas Golini 2026-04-27 10:53:53 -03:00
  • 82a93dada4 Added UIHTMLListItem to handle list items properly. Martín Lucas Golini 2026-04-27 01:38:37 -03:00
  • 41e979d314 CSS Position (Out of Flow) implementation. Added a few plan descriptions that I want to implement later. Martín Lucas Golini 2026-04-26 21:50:34 -03:00
  • ca3e2e2020 If a full directory path is pasted in the File Name input and it's opened it will try to first open that directory, if valid it will open (SpartanJ/ecode#872). Martín Lucas Golini 2026-04-26 18:33:52 -03:00
  • 4660257857 Remove ellipsis from some actions / commands (SpartanJ/ecode#892). Martín Lucas Golini 2026-04-26 17:37:36 -03:00
  • 58e359fc80 Merge branch 'develop' eepp-3.0.0 ecode-0.8.0 master Martín Lucas Golini 2026-04-26 14:29:40 -03:00
  • 926bf3102f Fixes for Haiku build. Martín Lucas Golini 2026-04-26 14:29:27 -03:00
  • 34a5cb5e34 Merge branch 'develop' Martín Lucas Golini 2026-04-26 12:52:33 -03:00
  • 009140f798 Update efsw and SOIL2. Martín Lucas Golini 2026-04-26 01:26:27 -03:00
  • d93b03f624 Pump versions. Add keybindings to the ecode markdown viewer. Optimization in BlockLayouter. Hack to display code in <pre><code> HTML elements. Martín Lucas Golini 2026-04-26 01:12:42 -03:00
  • d8596bbdcd Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-04-25 20:48:35 -03:00
  • c6bf311766 Merge branch 'feature/css-display' into develop Martín Lucas Golini 2026-04-25 20:48:10 -03:00
  • 8a9bc2cd47 Some HTML rendering fixes. Most important is the media query is correctly processed when combining style sheets. Martín Lucas Golini 2026-04-25 20:47:51 -03:00
  • 1970b8bbe9 WIP CSS Display support. Martín Lucas Golini 2026-04-25 17:27:45 -03:00
  • 5e85425f27 Fix bug that blocked horizontal scroll on lines larger than the viewport when horizontal scrollbar was disabled. Martín Lucas Golini 2026-04-25 13:41:59 -03:00
  • 3715933d7a Fix folder not closing when a terminal has focus (SpartanJ/ecode#890). Fix release notes in nightly. Martín Lucas Golini 2026-04-25 11:41:30 -03:00
  • bc37296f66 Added kerning cache in FontTrueType. Martín Lucas Golini 2026-04-25 02:03:21 -03:00
  • c76f9bf3c2 Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-04-25 01:19:35 -03:00
  • 18ff217a11 Don't lock the editor while matching brackets. Martín Lucas Golini 2026-04-25 01:13:50 -03:00
  • 1a2d4b1473 Fix in AI Assistant keybindings. Martín Lucas Golini 2026-04-25 00:31:06 -03:00
  • f21972fd75 Merge remote-tracking branch 'origin/develop' into develop Martín Lucas Golini 2026-04-24 19:36:38 -03:00
  • 42108f442a Properly display untracked files diff view. Martín Lucas Golini 2026-04-24 19:36:30 -03:00
  • dea87f345e Disable ASAN leak detection when run unit-tests with xvfb-run (because the tool leaks all X11 windows). Martín Lucas Golini 2026-04-24 12:00:45 -03:00
  • 7d2d4c0a3b Address comment: https://github.com/SpartanJ/ecode/discussions/884#discussioncomment-16692272 . Martín Lucas Golini 2026-04-24 00:15:39 -03:00
  • 6e65ef31f2 Merge branch 'develop' into feature/sdl3 Martín Lucas Golini 2026-04-23 17:57:31 -03:00
  • 0bb3f1157f Auto-Close brackets improvements: 1. Word boundary behavior: Typing an opening bracket directly preceding an alphanumeric character prevents auto-closing. (e.g. typing ( before word correctly inserts ( without closing it). 2. Whitespace boundary behavior: Typing an opening bracket before a space triggers normal auto-closing. 3. Forward unbalanced brackets: Typing an opening bracket when there's an unmatched closing bracket ahead on the same line prevents auto-closing (so typing ( when the line is () ) doesn't insert an extra )). 4. Balanced brackets: Regular auto-closing when brackets are completely matched. 5. Quote balancing: If the line already has balanced quotes and your cursor is right before a quote, typing a quote will just overwrite/step over the right quote instead of adding a new pair. Martín Lucas Golini 2026-04-23 16:12:25 -03:00
  • 8fef89138b Change the Update Tag step in CI. Martín Lucas Golini 2026-04-21 17:07:23 -03:00
  • 9ccd79b2a7 Upgrade softprops/action-gh-release Martín Lucas Golini 2026-04-21 12:56:32 -03:00
  • eec7eeb284 Fix a possible dead-lock during closing. Update to actions/checkout@v6. Martín Lucas Golini 2026-04-21 00:20:39 -03:00
  • 7307b524f4 Fix UISceneNode::solveRelativePath. Some fixes in LLM Chat UI, also added the option to display the reasoning (display_reasoning). Martín Lucas Golini 2026-04-20 01:42:12 -03:00
  • 7ec6e3cf1f Greatly improved signature help rendering, now allows to render in multi-line with text-wrapped and it's enabled by default. Added new options for the Auto Complete Plugin: * **max_signature_helper_width**: The maximum width in stylesheet length of the signature helper (default value: "90%"). * **max_suggestion_documentation_width**: The maximum width in stylesheet length of the currently selected suggestion item documentation (default value: "100%"). * **signature_help_multi_line**: Enables the signature help to be rendered in multiple lines if needed (wraps text), otherwise it will render in a single line and ensure the current parameter is visible. * **suggestion_documentation**: Enables the suggestion item documentation. Martín Lucas Golini 2026-04-19 00:52:03 -03:00
  • 878307df78 Ups, forgot to export the new class in Windows build. Martín Lucas Golini 2026-04-18 15:55:59 -03:00
  • 4180e9d7c3 Separate the box placement logic into an static class UIPlacementUtils so it can be used in different cases (SpartanJ/ecode#874). Martín Lucas Golini 2026-04-18 15:24:27 -03:00
  • da1bbda8c7 Much better documentation placement in the auto-complete suggestions function/method documentation (SpartanJ/ecode#874). Martín Lucas Golini 2026-04-18 13:27:03 -03:00
  • 18be45681d Prevent miss-matching new/delete when using ASAN. Martín Lucas Golini 2026-04-17 18:22:40 -03:00