The fpGUI Toolkit Project
fpGUI Logo

 

fpGUI v2.0.1 is available

I'm glad to announce the v2.0.1 release of fpGUI.

Source Code

from SourceForge:
  git clone git://git.code.sf.net/p/fpgui/code fpgui

from GitHub:
  git clone git://github.com/graemeg/fpGUI.git
or
  git clone https://github.com/graemeg/fpGUI.git

For more details, please visit the fpGUI home page:

  http://fpgui.sourceforge.net


Here is a small bugfix release. Thank you to everyone that tested
and reported bugs. Below is what's changed in this release:

v2.0.1 (2026-02-11)
  - Bug Fixes
    * Fixed infinite recursion crash when default font fails to load on
      distros with non-standard font paths (Arch, Void, Fedora). Raises
      a clear EfpGUIException instead. (Fixes #143)
    * Added /usr/share/fonts/ as a recursive font search path, covering
      all Linux distro font directory layouts. Added ~/.local/share/fonts/
      for XDG user fonts.
    * Fixed ERangeError in DoDrawImagePart when the image rectangle is
      fully clipped out of the visible area. (Fixes #121)
    * Fixed Canvas.GetClipRect returning an empty rectangle when no
      explicit clip rect was set. (Fixes #113)
    * Fixed access violation in timer list when a timer destroys itself
      during its own callback, or after Windows hibernation. (Fixes #17)
    * Widened TfpgMsgParmUser.Param1/2/3 from Integer to PtrInt for
      correct 64-bit window handle passing.
    * Added missing extrafpc.cfg in hexviewer example folder.
    * Fixed AggPas Win32 font engine compilation and rendering: added
      proper ifdef splits for Win32 TrueType vs FreeType font engines,
      fixed font size DPI scaling, and removed unnecessary freetype.dll
      dependency when using the default Win32 font engine.
  - Improvements
    * Timer architecture redesign:
      - X11 message loop now uses the calculated timeout instead of a
        hardcoded 10ms poll, reducing idle CPU wakeups
      - GDI message loop replaced blocking GetMessage with
        MsgWaitForMultipleObjects, enabling proper timeout support
      - Removed redundant native Windows.SetTimer mechanism; timer
        checking is now unified through the main loop
      - All timer arithmetic switched from wall-clock time (TDateTime/Now)
        to monotonic time (GetTickCount64/CLOCK_MONOTONIC), making timers
        immune to NTP sync, DST changes, and system hibernation
    * Normalized GDI clip rect storage to widget-local coordinates,
      matching the X11 and Cocoa backends.
    * About fpGUI dialog now shows the canvas backend type (AggPas or
      Native) after the version number.
    * Added 'freetype' build profile for PasBuild, allowing Windows
      users to toggle between the Win32 TrueType and FreeType font
      engines via: pasbuild compile -p windows,agg,freetype


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

For more details, please visit the fpGUI home page:

  http://fpgui.sourceforge.net