Commit Graph

369 Commits

Author SHA1 Message Date
Martín Lucas Golini
6b277e508b migrate fonts to scoped resource ownership
- replace FontManager with per-ResourceScope FontService instances
  - publish font factories into explicit or default resource scopes
  - import default resources into UI scene scopes unless explicitly disabled
  - keep related font faces strongly owned without hot-path weak_ptr locking
  - add cached glyph advance queries without creating texture pages
  - fix font picker preview ownership, cleanup, and rapid switching
  - selectively evict TextLayout cache entries when referenced fonts unload
  - document FontService, ResourceCatalog, and cache invalidation semantics
  - migrate examples, tools, benchmarks, and tests to the scoped font API
  - expand coverage for font ownership, texture release, and layout caching
2026-07-24 01:54:51 -03:00
Martín Lucas Golini
574b6b9014 move nine-patches into scoped catalogs
Return shared handles from NinePatch creation and remove the process-wide
  NinePatchManager singleton.

  Extend ResourceCatalog with typed drawable-source ownership and expose
  drawable publication, lookup, and removal through ResourceScope. Preserve
  separate texture and drawable namespaces for direct typed lookup.

  Give each UITheme its own resource catalog and have scene-owned theme
  managers explicitly import and remove theme catalogs. Handle registered
  themes and default-only themes without leaking stale resource visibility
  between scenes.

  Update theme loading, Engine teardown, platform source manifests, and
  resource ownership tests for the catalog-based model.

  Document that remaining singleton resource managers must migrate to
  naturally owned catalogs and explicit scope imports instead of becoming
  new process-global semantic namespaces.
2026-07-22 22:07:00 -03:00
Martín Lucas Golini
2d8693295c add shared WebView resource cache:
Introduce WebResourceCache with partitioned sharing, per-document sessions,
navigation generations, leases, and canonical request keys.

Coalesce concurrent document, stylesheet, font, and image requests while
discarding stale navigation subscribers independently. Retain completed
resources with TTL/LRU and byte-budget policies, and periodically prune
expired unleased entries from UIWebView.

Route UISceneNode, UIWebView, UIImage, CSS background images, and remote
drawable resolution through the shared cache. Preserve ResourceScope entries
as explicit overrides and allow multiple WebViews to share a cache partition.

Keep image decode and texture replacement on the guarded graphics-thread
completion path. Exclude volatile Cookie and Referer values from cache
identity while preserving partition isolation and content-affecting variants.

Start TTL retention when the final document lease is released so Back/Forward
navigation can reuse resources regardless of how long the previous page was
open.

Avoid unstable pointers and iterators into unordered_dense storage when
tracking leases and pruning entries. Add ASan regression coverage for dense
map growth, navigation, eviction, partition isolation, request coalescing,
retry behavior, and cache retention.

Fully document cache partitions, sessions, generations, request identity,
ownership, threading, and maintenance behavior.
2026-07-22 02:22:38 -03:00
Martín Lucas Golini
f7dba042df Replace DrawableSearcher with scoped drawable resolution:
Add a scene-owned UI::DrawableResolver for resolving file, data, HTTP, and
named drawable references through each UISceneNode's current resource scope.

Move generic texture, atlas region, nine-patch, and sprite lookup into
Graphics::ResourceScope, preserving drawable resolution for pure Graphics
consumers without introducing a UI dependency.

Migrate UI images, sprites, menus, CSS parsing, and tests to the new resolver.
Resolve CSS icons through the requesting node's scene instead of the global
scene, preserving embedded-scene isolation.

Remove the obsolete DrawableSearcher API and update platform project manifests,
tests, and the shared-resource architecture plan.
2026-07-21 23:50:58 -03:00
Martín Lucas Golini
fcce822350 Add LRUCache and use it in TextLayouter. 2025-11-06 01:17:28 -03:00
Martín Lucas Golini
4b4a5f3491 More work on the Spell-Checker (SpartanJ/ecode#515).
Spell-Checked a lot of code.
2025-08-21 01:43:42 -03:00
Martín Lucas Golini
dbb36cdcf4 Fix Objective-C highlighter.
Added Objective-C++ highlighter (SpartanJ/ecode#616).
Replaced "Treat .h file as C++" in favor of "Treat .h files as..." with multiple options, including auto-detection (SpartanJ/ecode#614).
Refresh semantic-highlighting after syntax highlighter change.
2025-08-17 16:56:12 -03:00
Clemens Schmid
e5bd1dc3e1 added curry language definition for syntax highlighting (#138)
* added curry language definition for syntax highlighting

* fixed comment syntax definition for Haskell, Elm, and Curry
2025-08-06 14:19:58 -03:00
Martín Lucas Golini
8ac5e1e2e8 Refactor in SyntaxDefinition and related classes.
Minor improvements in CPP, CSS, xit syntax highlighting.
AI Assistant / LLM Chat now can restore previous opened chats and states (last model used, panel split), can have private conversations, can clone a previous conversation, plus some visual improvements.
Fixed a bug in tab widget splitting.
2025-03-26 23:55:29 -03:00
Martín Lucas Golini
d8aa670d12 Some minor fixes in debugger and gitplugin.
Minor visual improvement in status bar.
2025-03-14 00:30:53 -03:00
Martín Lucas Golini
277f410ad0 WIP supporting more debuggers. 2025-01-20 19:43:56 -03:00
Martín Lucas Golini
84f1740d2b Fix incorrectly adding watches of subfolders of currently loading directory.
WIP process id picker.
2025-01-19 01:34:15 -03:00
Martín Lucas Golini
b340fcbbf9 Some refactor. 2025-01-12 00:36:14 -03:00
Martín Lucas Golini
403005301d More improvements to debugger. 2025-01-08 01:51:38 -03:00
Martín Lucas Golini
a96e033b81 More WIP. 2025-01-03 00:00:10 -03:00
Martín Lucas Golini
469ca05e9f Refactor how App is exposed. Expose more functionality to the Plugins. 2024-12-31 19:01:32 -03:00
Martín Lucas Golini
9fc6078c61 Merge branch 'develop' into debugger 2024-12-29 23:50:46 -03:00
Martín Lucas Golini
793e87af5c Allow to split editors views by dragging tabs into the tab widget corners. 2024-12-29 23:50:24 -03:00
Martín Lucas Golini
d07bb2572c More WIP. 2024-12-28 13:16:03 -03:00
Martín Lucas Golini
c4daa30880 Fixes for multi-cursor.
Fixes for file extensions (improperly filtering file extensions).
Added very basic tests for TextDocument multi-cursor.
Add .txt files into projects (register .txt extension as Plain Text).
2024-12-20 20:22:50 -03:00
Martín Lucas Golini
2c617b1deb RegEx support in TextDocument search. Added RegEx support to ecode's Find & Replace. 2024-09-22 02:16:15 -03:00
Martín Lucas Golini
16c2ac84f0 Display preview while selecting indent character.
Load health status async.
Fix a crash when navigating a tree without model.
2024-09-10 19:33:53 -03:00
Martín Lucas Golini
7bb8a773ec Added Bend language syntax highlighting. 2024-06-03 01:25:18 -03:00
Martín Lucas Golini
396f1e2558 Code Folding WIP. 2024-05-27 00:57:18 -03:00
Martín Lucas Golini
c6f9f10814 LineWrapping refactor WIP. Also reduced minimap draw calls (instead of per-line now are per-frame). 2024-05-23 20:41:31 -03:00
Martín Lucas Golini
86e840170a Line wrap WIP. 2024-05-12 02:58:51 -03:00
Martín Lucas Golini
ae5d1baab1 Added unit tests for text encoding.
Updated the CI scripts.
Clean up libzip files with invalid characters.
2024-05-10 21:21:20 -03:00
Martín Lucas Golini
9f11c96e17 Add Application Output panel. 2024-04-20 19:59:58 -03:00
Martín Lucas Golini
4cd6c1f008 Added syntax highlighting for Buzz, Clojure and Groovy. Added clojure-lsp support. Expanded emmet-language-server file extensions. 2024-04-20 15:20:00 -03:00
Martín Lucas Golini
a4a56d2154 Added node focus reason information. 2024-04-20 01:04:57 -03:00
Martín Lucas Golini
271dbbc881 Added case insensitive languages support. Closes issue #36. 2024-04-07 14:42:35 -03:00
Martín Lucas Golini
a969e01b9a Added some basic Carbon language syntax highlighting. 2024-04-07 13:33:37 -03:00
Martín Lucas Golini
bdcf47dfeb Clean up SyntaxDefinitionManager, move all language syntax definitions to its own files. 2024-03-23 16:45:57 -03:00
Martín Lucas Golini
f9513d3857 eepp: Removed PlusCallback dependency.
ecode: Added the possibility to search and replace by replacing captures from Lua Pattern, for example, searching for: "function (%w+)%(%)" and replacing for "fn $1()" will replace the function declaration from "function (functionName)()" to "fn (functionName)()". The feature was used to remove the PlusCallback dependency =).
2024-02-21 01:04:44 -03:00
Martín Lucas Golini
ca85127605 Added MoonScript and GraphQL langs.
Minor fixes.
2024-02-20 02:01:04 -03:00
Martín Lucas Golini
c360662371 Add file encoding detection (UTF-8, UTF-16 LE, UTF-16 BE and ISO-8859-1). 2024-02-18 21:39:05 -03:00
Martín Lucas Golini
7e3ac9eb9b Should fix build.. 2024-02-10 17:29:07 -03:00
Martín Lucas Golini
9c2822e3d6 More work to get better i18n support. 2024-02-09 22:39:19 -03:00
Martín Lucas Golini
f875672a3d Implemented UndoStack.
7GUIs Circle Drawer now uses the new UndoStack.
2024-02-09 02:26:51 -03:00
Martín Lucas Golini
5271e2fd2e Rename UndoStack to TextUndoStack. 2024-02-08 22:42:01 -03:00
Martín Lucas Golini
2541dccfc9 7GUIs circle drawer WIP.
UILoader rendering glitch fix.
Git create branch fix checkout in subrepos.
UIMessageBox don't focus on any disabled input by default.
2024-02-08 22:25:18 -03:00
Martín Lucas Golini
37140d9f80 Added 7GUIs CRUD example.
Fixes in ModelSelection.
2024-02-05 02:37:41 -03:00
Martín Lucas Golini
5d320186b5 Added 7GUIs Timer.
Fixes in UIProgressBar.
Fix build.
2024-02-04 23:37:07 -03:00
Martín Lucas Golini
9a0057c890 Minor clean up. 2024-01-29 00:05:22 -03:00
Martín Lucas Golini
2ae84f7c9d More git plugin fixes. 2024-01-27 21:31:51 -03:00
Martín Lucas Golini
9e764c8100 Fix crash on UITabWidget.
Improve LSP tooltip.
Remove warnings.
2024-01-13 18:04:23 -03:00
Martín Lucas Golini
e09b62a40d ecode: Fix in tooltip. Added static Text::wrapText. Fix export of syntax definitions.
eepp: Started working on a Git plugin.
2023-12-16 22:24:35 -03:00
Martín Lucas Golini
efd8cc10d8 Minor refactor. 2023-12-10 21:22:26 -03:00
Martín Lucas Golini
9ab0bf9cf5 Some optimizations on Node::nodeDraw.
UIPushButton will not create the icon node if not required (not sure yet if this is OK).
2023-12-02 21:19:57 -03:00
Martín Lucas Golini
bb8d91090c Added pony lang support. 2023-11-27 01:22:06 -03:00