Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2026-04

[ANN] fpGUI Toolkit v2.1.0 release

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Graeme Geldenhuys

Hi everyone,

I'm happy to announce a huge new release of fpGUI — with some massive improvements, new features, new applications and plenty of bug fixes.

https://github.com/graemeg/fpGUI

Feedback, bug reports, and questions are welcome as always. I mostly monitor the GitHub bugtracker and the fpGUI support newsgroup - see website for details.

== Build commands ==

Framework and applications can be built with PasBuild:

https://github.com/graemeg/PasBuild

* For Linux & FreeBSD
pasbuild compile -p unix (builds framework & tools)
* For Windows
pasbuild compile -p windows (builds framework & tools)
* For macOS
pasbuild compile -p macos (builds framework & tools)

== Changelog ==

v2.1.0 (2026-04-27)

- Event Loop Rearchitecture
* Worker threads can now wake the main event loop instantly on all platforms without waiting for mouse movement or timer expiry.
* TThread.Queue() and TThread.Synchronize() wake the event loop automatically via FPC's WakeMainThread hook.
* Duplicate FPGM_PAINT and FPGM_RESIZE messages for the same widget are coalesced, reducing redundant processing under high load.
* New TfpgAsyncTask class for background tasks that safely publish progress updates to the GUI thread (SwingWorker-inspired).
* New fpgInvokeLater() schedules work on the main thread from any thread.
- Hybrid Canvas (new) — now default on all platforms
* The AggPas hybrid canvas is now the default on all platforms. No extra build profile is required; the 'agg' and 'freetype' profiles have been removed.
* Cached bitmap glyph rendering for fast syntax-highlighted text.
* Platform buffer managers added for Windows (GDI) and macOS (Cocoa).
* Performance: fast-path for opaque rectangle fills, bypassing AggPas blending when alpha is not needed.
* Fixed several Windows-specific rendering issues: upside-down text on 32-bit FPC 3.2.2, layout not applied on first show of modal dialogs, and a compilation error on 32-bit targets.
- Fusion Style (new)
* Added Fusion Light and Fusion Dark application styles, inspired by Qt5 Fusion. Fusion Light is now the default IDE style.
* Fusion-style page control tabs and body rendering.
* Checkbox, radio button, and progress bar painting delegated to TfpgStyle, enabling per-style customisation.
* Announcement with early screenshots (https://github.com/graemeg/fpGUI/ discussions/171)
- HiDPI improvements
* Improved HiDPI scaling for the GDI (Windows) and X11 backends.
- Maximus IDE
* PasBuild backend integration: TPasBuildProjectBackend bridges the IDE with the PasBuild build system.
* Project tree redesign: displays modules, dependencies, and build profiles as tree nodes with accent colour category headers.
* Multi-module UI with aggregator project support.
* Dependency tree visualisation added to the project tree.
* Build actions: clean, rebuild, and test added to IDE toolbar.
* INI and XML syntax highlighting added.
* MigLayout used throughout the IDE UI, including a TfpgMigSplitter and MigLayout-managed status bar.
* Session persistence: open files, window layout, and file dialog directories are saved and restored per project.
* Edit menu: Duplicate Line, Delete Line, Undo, and Redo added.
* Status bar shows cursor position, file path, and current git branch.
* Go to Declaration (Ctrl+B / Ctrl+Click) with cross-unit resolution including FPC RTL and packages.
* Find Usages (Alt+F7) with highlighted context column.
* Quick Documentation popup (Ctrl+F1).
* Navigate to File and Navigate to Symbol dialogs with fuzzy matching.
* Cursor history back/forward navigation.
* Custom Pascal tokeniser replacing vendored fcl-passrc, used by the highlighter, symbol finder, procedure list, and declaration finder.
* Debug session lifecycle: F9 starts a debug run, Ctrl+F2 stops it.
* Breakpoints panel and full breakpoint add/remove management; live breakpoints routed through the ptrace owner thread.
* Execution line highlighted in the editor at each debugger stop.
* Variables panel showing Locals and Globals groups; Show Globals toggle persisted across sessions.
* Call Stack panel.
* Watches panel.
* Evaluate Expression dialog.
* Exception notification bar.
* OPDF/PDR integration via a dedicated debugger worker thread. Requires FPC 3.3.1 + OPDF debug format support.
Linux x86_64 only, until OPDF support more platforms.
* Support for building the IDE with FPC 3.2.2 via a stub debugger adapter (OPDF dependencies disabled by default).
* Cross-module source file resolution for Ctrl+B navigation and debugger stop-line lookup.
* 'Reopen last project on startup' preference added.
* Messages tab now activates automatically when a build is triggered.
* Quick Documentation popup signature search stops at the class/record declaration header.
* Pascal modifiers and directives (virtual, override, stdcall, etc.) now highlighted as secondary keywords.
- DocView
* Project restructured and added as a PasBuild module.
* Fixed rendering stopping prematurely, leaving a blank area at the bottom of the document.
* Fixed DocView statusbar colour being reset to the wrong default.
* DocView navigation toolbar now uses some HVIF vector icons.
- UI Designer
* Added style preview support, showing the designer form in the user-selected style.
- Framework Bug Fixes
* Fixed FreeType font metrics producing squashed line spacing.
* Fixed XOR selection rendering in TfpgMemo — now uses proper theme colours instead of XOR pixel inversion.
* Fixed Open/Save dialog grid not growing correctly on resize.
* Fixed pagecontrol tab rendering to be font and DPI aware.
* Fixed Cocoa hybrid canvas rendering (drawRect instead of lockFocus).
* Fixed Cocoa font metrics and popup window visibility.
* Fixed FreeType font cache not being enabled on Windows.
* Fixed index out of bounds in File Open dialog under macOS.
* Compatibility fix for upcoming FPC 3.3.x release.
* Added wpMainFormCenter window position option; centralised window positioning logic into fpg_form.pas.
* Experimental multi-monitor and per-screen DPI support.
* Fixed several bounds-checking issues in the text editor component.
* Deprecated old DrawXXX widget paint methods in TfpgCanvas.
* Fixed ComboBox text not clipped to exclude the dropdown button area.
* Fixed TfpgLabel not auto-sizing to text content when no PreferredSize was set.
* Fixed developer-set text colour ignored by style DrawString.
* Fixed popup calendar generating deprecation warnings.
- Code Hygiene
* Replaced bundled SynRegExpr with FPC's standard RegExpr unit.
* Replaced bundled mPasLex with FPC's fcl-passrc for Procedure List.
* Replaced bundled sha1.pas (D5-era) with FPC's standard hash package.
* Removed Cairo rendering backend.
* Removed VLC units (now part of FPC's Free Component Library).
* Removed MigLayout Java reference source (porting complete).
* Removed unused and empty style units.
* Removed vendored fcl-passrc (replaced by custom Pascal tokeniser).
* Moved documentation and Lazarus IDE integration package out of the framework source tree.
* Legacy Agg2D canvas moved out of the framework source to extras/aggpas/.
* GDI & X11 native canvas classes marked "Deprecated" for future removal.
* TfpgCanvas.DrawXXX methods for widget painting marked "deprecated" for future removal.
- HVIF (Haiku Vector Icon File) Icon Format
* New HVIF binary reader with AggPas renderer and unit tests.
* New HVIF binary writer with unit tests.
* svg2hvif CLI tool converts SVG files to HVIF; --inc flag emits a Pascal byte-array include file for embedding icons in source.
* hvif_dump inspection tool for examining HVIF binary files.
* Full rendering pipeline: multi-stop gradient LUT, gradient strokes, transforms, arc segments, and LOD visibility scale.
* TfpgIconStore: DPI-aware HVIF icon registry; fpgIcons global initialised automatically in TfpgApplication.
* HVIF icons wired into core framework widgets.
* New IconName and IconSize properties on TfpgBaseButton for icon-store–driven button icons.
* imageconvert utility added to the PasBuild ecosystem.
- Vertex HVIF Icon Editor (new application)
* Announcement thread with screenshot (https://github.com/graemeg/fpGUI/ discussions/182)
* Full HVIF vector icon editor added to the primary build.
* Tools: Select, Node edit, Pan, Zoom, Rectangle, Ellipse, and Pen.
* Bounding box and affine transform interactions; Shift+drag for uniform scale, Ctrl+drag for shear.
* Gradient style editing with multi-stop ramp widget and editor popup.
* Grid overlay with configurable snap-to-grid.
* Object tree with inline rename and sidecar metadata file.
* Bezier path outline overlay in node-edit mode.
* Undo support for path and shape property edits.
* File > New, Open, Save (.hvif), Export as .inc, and Export as PNG at 16/32/48/64 px.
* File > Open Recent with persistent last-used directory.
* Window position and size restored across sessions.

Regards,
- Graeme -