Commit Graph

58 Commits

Author SHA1 Message Date
Martín Lucas Golini
71ede34599 eepp: add reusable UISettingsPanel
- add the generic settings model and panel to EE::UI::Tools
  - support category navigation, filtering, and lazy materialization
  - add UISettingsPanel model and filtering tests

ecode: migrate settings to UISettingsPanel
  - replace the application-specific settings model
  - use the generic settings panel implementation
  - add monitor refresh rate as a frame limit option
  - normalize UI labels and translations

eterm: add persistent configuration and settings panel
  - persist application preferences and window state
  - use saved values as defaults for command-line options
  - persist command-line overrides
  - add graphical settings with live application
  - expose renderer, terminal behavior, appearance, font, and scale options
2026-09-09 00:56:03 -03:00
Martín Lucas Golini
64512ab44d eterm: expand tab controls and fix maximized tab lifecycle
- add ellipsized tabs and ecode-style context actions to eterm
  - support session rename, exclusive mode, tab movement, and maximize/restore
  - restore maximized tab widgets before close or split operations
  - track detached tab state directly to prevent stale references in ecode
  - keep dirty rows valid during asynchronous terminal resize
  - expose eterm's widget inspector and disable default UI effects
  - localize the new exclusive-mode action
2026-09-08 01:57:35 -03:00
Martín Lucas Golini
56de1e1c41 Migrate eterm to eterm-tabs, no need to keep the old eterm. The new eterm have tabs and splits by default, with no performance penalty. 2026-09-01 13:22:53 -03:00
Martín Lucas Golini
8bcec85da0 Move eterm emulation off the UI thread and add tabbed frontend
- introduce a per-terminal worker controller with ordered command queues,
    coalesced events, immutable snapshots, and deterministic shutdown
  - move PTY reads, parsing, history, selection, resize, reflow, and process
    status handling onto the terminal worker
  - publish terminal snapshots at the host refresh rate while preserving
    immediate idle, resize, interaction, and final-exit presentation
  - migrate TerminalDisplay, UITerminal, eterm, ecode, debugger, and ACP
    integrations away from direct mutable emulator access
  - synchronize scrollbar updates with acknowledged scroll commands
  - preserve title, clipboard, bell, prompt, color, restart, keep-alive,
    selection, input, and buffered process-exit behavior
  - add bounded synchronous selection requests and idempotent worker shutdown
  - make POSIX process launch safe after fork in multithreaded hosts and mark
    original PTY descriptors close-on-exec
  - add an UIApplication-based tabbed eterm with legacy CLI parity, tab
    lifecycle handling, close warnings, and default navigation shortcuts
  - add premake targets and deterministic controller, snapshot, lifecycle,
    concurrency, presentation, and exit-drain tests
2026-08-30 20:25:44 -03:00
Martín Lucas Golini
301b7458d2 graphics: improve native system font fallback
Initialize SystemFontResolver when enabled and make its lifecycle and font-list
population thread-safe.

Use native codepoint fallback matching through Fontconfig on Linux, BSD, and
Haiku, DirectWrite on Windows, and Core Text on macOS and iOS. Preserve the
cached FreeType scan as a fallback when native matching is unavailable.

Enable system fonts by default for UIApplication and warm the font database in
the background. Allow applications to override the policy and disable the
automatic default in the unit-test runner.

Fix glyph fallback checks to respect the resolver's enabled state and add
coverage for concurrent warm-up and shaped symbol fallback.

Update efsw.
2026-08-23 16:59:23 -03:00
Martín Lucas Golini
24302ec9f1 eterm: Use usable bounds instead of display bounds for window sizing. 2026-08-01 00:41:19 -03:00
Martín Lucas Golini
14207f228b eepp: Fixed a crash on single click navigation when selecting folder or file in UIFileDialog.
eeiv: Add drag & drop of images and folders. Added small welcome screen.
eterm: Detect windows below the default width and height and resize the window to fix the screen.
2026-08-01 00:31:55 -03:00
Martín Lucas Golini
9f4ae9e83c Font SubPixel antialiasing support for eterm and ui_html. 2026-07-25 21:24:45 -03:00
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
382a5d2476 Terminal selection reflow fixes. 2026-03-12 15:41:42 -03:00
Martín Lucas Golini
35fbf7c733 Terminal: multiple issues with the copy/paste operations fixed. Now uses the primary selection when corresponds (middle mouse click, shift+insert). Fixed paste operation, it does not hang the app, pastes instantly contents and behaves exactly the same as other terminals.
Incorporated new features into eterm.
2025-12-20 01:58:21 -03:00
Martín Lucas Golini
fe5d226fae Finished implementing the logic of warn before tab close on terminals (SpartanJ/ecode#644). Also added this feature in eterm (enabled with --warn-before-closing).
Fix a use-after-free bug in Font::getGlyph and FontTrueType::getGlyphIndex.
Some extra checks to avoid crash reported in SpartanJ/ecode#650.
Some minor improvement in auto-close brackets logic.
Added clone document buffer (SpartanJ/ecode#632).
2025-09-13 17:07:55 -03:00
Martín Lucas Golini
54aaeb4931 Spell-checked the whole project. 2025-08-22 01:33:51 -03:00
Martín Lucas Golini
c881410a39 Minor nit with eterm. 2024-10-04 15:01:51 -03:00
Martín Lucas Golini
6d62babe44 Fix issue #30. 2024-03-16 13:28:34 -03:00
Martín Lucas Golini
8991a089fc eterm clean up. 2024-03-15 20:22:15 -03:00
Martín Lucas Golini
36c91989d3 Lambda captures clean up, plus other minor clean ups. 2024-02-17 18:19:55 -03:00
Martín Lucas Golini
f6738cf79d ecode: Fix memory leak on theme change. 2024-01-02 22:31:05 -03:00
Martín Lucas Golini
3867a472b3 Allow multiple fallback fonts.
Reduced allocations and improved logs in LSP Plugin.
Added String::split for std::string_view.
Added support for std::string_view in Log.
2023-11-05 18:56:56 -03:00
Martín Lucas Golini
a87b1b3def On macOS check the PATH defined in the shell and append all pending PATHs to the current environment. This should improve binary finding. Solves issue SpartanJ/ecode#63.
Renamed MACOSX references to MACOS / macOS.
2023-09-24 01:33:15 -03:00
Martín Lucas Golini
86000a3047 ecode: Some minor performance improvements.
eterm: added font family.
2023-08-13 00:33:27 -03:00
Martín Lucas Golini
8443ae385b eepp:
UIStackLayout added wrap_content support for layout_width.
All Layouts: added max-width support.
UIListBox: Allow adding empty items.
UICodeEditor: Added resetSyntaxDefinition.
ecode:
Added "Folder/Project Settings" menu. Added/made visible "Treat .h files as C++ code" option.
Added project build preset output parsers, added "generic" output parser as default preset.
Added enabled state for build steps.
Hide status bar when ecode is opened in terminal mode.
eterm:
Force rendering even if buffer is still incomplete.
2023-05-28 03:09:35 -03:00
Martín Lucas Golini
8556f9e9a6 eepp:
Log class Don't store log buffer into memory if not required.
ecode:
Added --stdout-logs and --disable-file-logs parameters, for better debugging.
2023-03-31 01:47:03 -03:00
Martín Lucas Golini
5d1387deb4 eepp icons updated. 2023-03-23 20:06:53 -03:00
Martín Lucas Golini
33f69b8423 Minor changes in terminal.
Fixed Sys::parseArguments for emscripten.
2023-02-06 04:51:06 -03:00
Martín Lucas Golini
906c0a4358 ecode: Linter plugin, show only the first line of the error with error lens. 2023-01-27 13:00:14 -03:00
Martín Lucas Golini
f077d7a354 eterm: Allow support for custom color schemes. 2023-01-08 22:01:19 -03:00
Martín Lucas Golini
4b6ce692b9 ADded DroidSansFallbackFull as fallback font in ecode and eterm.
CheckBox and RadioButton now display hover effect.
Added alias "lg" for layout-gravity.
Node: Added addMouseClickListener and hasChild helper functions.
UICodeEditor: Fixed a minor bug that provoked to scroll the view when resizing the widget.
UITabWidget: minor bug fix.
ecode: Fixed a bug that caused to save a monospace font when the user did not accept to change it.
Added debug options to the widget inspector.
Added i18n to all strings defined in XML files/strings.
Added "Rename Session" button in the Terminal menu.
2022-10-16 03:23:01 -03:00
Martín Lucas Golini
8949190bf9 Initial support for fallback fonts.
Minor fix in TerminalDisplay.
2022-10-04 02:09:40 -03:00
Martín Lucas Golini
382dc9e564 Image: fixed huge memory leak when resizing or scaling a image.
TerminalDisplay: fixed issues with emojis.
2022-08-29 20:21:26 -03:00
Martín Lucas Golini
e222771afa Minor refactor:
UI::Window: Window::setWinFlags is now Window::setWindowsFlags.
Renderer: Added glVersionFromString, graphicsLibraryVersionToString, getDefaultGraphicsLibraryVersion, getAvailableGraphicsLibraryVersions.
Defined Sizeu.
Context and Window ini configurations are now lowercase.
Display: Added getRefreshRate and getSize.
UICodeEditor: hide color preview when mouse leaves the editor.
ecode:
Added Renderer options (vsync, msaa, max frame rate, renderer version).
Added "bechmark-mode" option, to measure rendering performance.
2022-08-28 01:05:25 -03:00
Martín Lucas Golini
fb6641a81a MemoryManager now handles realloc.
TerminalDisplay: Cursor fixes.
TerminalEmulator: Memory leaks fixes.
2022-08-26 02:49:04 -03:00
Martín Lucas Golini
eec04b3a0b TerminalDisplay: Rendering performance improvements.
VertexBuffer: Added some helper functions to add and set quads.
GlyphDrawable: Added a function to draw the glyph into a VertexBuffer.
2022-08-25 02:59:20 -03:00
Martín Lucas Golini
0924b715ee Some minor fixes in ecode. 2022-08-24 03:04:21 -03:00
Martín Lucas Golini
b8b75c3001 UIEditor temporal layouts.
eterm optimizations.
Minor fixes.
2022-08-14 02:17:03 -03:00
Martín Lucas Golini
335b472002 Minor Terminal Emulator improvements.
Minor fix in FunctionString.
2022-08-13 04:30:24 -03:00
Martín Lucas Golini
1678fd9b53 Fixed TextDocument::deleteCurrentLine().
Minor clean up in various apps and classes (nothing important).
2022-07-24 21:44:29 -03:00
Martín Lucas Golini
6859ce346c Added command line options to eterm. 2022-07-13 01:03:36 -03:00
Martín Lucas Golini
00c5515fd0 Added eterm::UITerminal.
Many changes over ecode. Working on adding terminal support in ecode. Basic support is working, may contain some bugs.
2022-07-05 22:34:48 -03:00
Martín Lucas Golini
c06eaa8d78 Build fixes. 2022-07-04 01:15:12 -03:00
Martín Lucas Golini
85e1c1e5a3 More refactor. 2022-07-04 00:55:50 -03:00
Martín Lucas Golini
3eb9d75fa4 eterm code refactor. 2022-07-03 19:41:58 -03:00
Martín Lucas Golini
8c6035a0bb Added frame buffer support to TerminalDisplay, added proper line and cursor invalidation (only redraw the lines that are actually dirty). 2022-07-03 02:25:52 -03:00
Martín Lucas Golini
ff67a99203 Android build fixes and improvements.
Updated jpeg-compressor.
eterm: More clean up and improvements.
2022-06-28 22:36:46 -03:00
Martín Lucas Golini
d949667eaf FontTrueType: Allow disable emoji fallback.
Vector2: Added round, roundUp, roundDown.
KeyEvent: Now sends also the scancode.
GlyphDrawable force glyph offset to be an integer value.
TerminalDisplay: Allow emoji fonts. Fixed minor bugs. Added events callback.
TerminalEmulator: Added clearHistory.
eterm: Implemented title updates.
2022-06-27 02:05:26 -03:00
Martín Lucas Golini
919b9145d7 Restored old DejaVuSansMono font, and now added a separated DejaVuSansMono font with the Nerd Font version.
Added Math::roundDown.
TerminalEmulator: Fixed some memory leaks.
TerminalDisplay: Fixed some minor bugs. Added font grow/shink shortcut.
2022-06-26 14:54:29 -03:00
Martín Lucas Golini
983f0491e2 eterm: Improved history buffer allocation. 2022-06-26 04:10:39 -03:00
Martín Lucas Golini
716eaea2c0 eterm: Added scrolling history support. 2022-06-26 03:11:15 -03:00
Martín Lucas Golini
b0280b6acd Updated efsw.
Updated github actions build files.
eterm: Windows fixes. Some refactor.
2022-06-25 03:26:16 -03:00
Martín Lucas Golini
75afbb58af eterm: Refactor and fix. 2022-06-24 20:19:16 -03:00