Sign in Join
Wiki copytemporary

Lazarus 2.2.0 release notes

LazUtils Changes

FileExistsUTF8 uses SysUtils.FileExists

Masks unit

LazFreeType

PasWStr unit removed

LCL Interfaces Changes

Internal component registration and TLCLComponent.NewInstance was optimized

LCL components are registered and mapped to a widgetset by TLCLComponent.NewInstance. This is an undocumented implementation detail and should not affect any components outside of LCL itself. However some external components could support widgetsets the same way. Then "class procedure WSRegisterClass; override;" is needed having a call to "RegisterWSComponent()". It was added to component OpenGlContext in trunk r63636. Please use it as an example if needed.

Widgetsets

LCL Changes

TLazIntfImage.Create with size and description flags need no CreateData anymore

TValueListEditor

TShellTreeView

TShellListView

New Screen temporary cursor

Screen has new methods:

These should be used for temporary cursor changes instead of setting the Screen.Cursor property directly. They ensure that valid cursor values are restored.

TMaskEdit

TGroupBox, TRadioGroup, TCheckGroup

TFrame

T(Float)SpinEdit

TListBox

IDE Changes

Previously we had:

Template: lazaruside.po

German: lazaruside.de.po

Russian: lazaruside.ru.po

Spanish: lazaruside.es.po

Now we have (note extension of the template):

Template: lazaruside.pot

German: lazaruside.de.po

Russian: lazaruside.ru.po

Spanish: lazaruside.es.po

:* Reasons:

:** .pot is an 'industry standard' extension for PO template files. As a consequence, PO editors can now open our templates 'out of the box' and automate creation of translations.

:** It is much simpler to detect template files now that dotted unit names are allowed.

:* Remedy: You can safely remove .po template files from your project after you rebuild your project with the new IDE (at this point .pot files should be generated).

Debugger

:* GDB(mi) Debugger: Stepping from exception to finally/except now works under Win64 SEH. (Requires updated GDB)

:* GDB(mi) Debugger: Updated GDB for Win64 to 8.2

:* GDB(mi) Applying a condition to a breakpoint will now mark the breakpoint as invalid, if gdb does not accept the condition. The breakpoint may still break (or not), but the condition was not set.

:* Debugger Config: The IDE now provides the ability to set up different debugger-configs as named profiles.

:* "Run to Cursor" in addition to the existing "Step over to Cursor", the debugger (gdbmi/fpdebug) now provide "Run to Cursor".

Components

AnchorDocking

Spotter

TAChart

TSpinEditEx

TFloatSpinEditEx

DockedFormEditor

Jedi Code Format

Delphi Compiler Tool

Use the Delphi command line compiler in Lazarus: Lazarus Delphi Compiler Tool

Changes affecting compatibility

LazUtils

PO files

:* Reasons:

:** PO format does not prohibit multiline strings without trailing lineendings (and e.g. recent versions of Poedit do not complain about them).

:** New behavior unbreaks loading multiline translations from MO files.

:* Note that all multiline strings with mismatching trailing lineendings will be marked as fuzzy during translation update.

LConvEncoding

Global variable ConvertEncodingErrorRaisesException replaced with ConvertEncodingErrorMode

The unit had global variable ConvertEncodingErrorRaisesException (boolean) which is now replaced by the enumeration:

pascal
type
  TConvertEncodingErrorMode = (
    ceemSkip,
    ceemException,
    ceemReplace,
    ceemReturnEmpty
    );
var
  ConvertEncodingErrorMode: TConvertEncodingErrorMode = ceemSkip;

UITypes unit is deprecated

The UITypes unit is deprecated in favor of System.UITypes, which is available in FPC 3.2.0 and up.

LCL incompatibilities

TMaskEdit: hexadecimal and binary characters

Mask support for hexadecimal and binary characters was added (this is a Lazarus extension, Delphi does not support this).

TMaskEdit: 'C' in EditMask now actually means a character (other than blank) is needed

TMaskEdit: Validate takes in account Upper- and LowerCase for 'c' and 'C' in EditMask

TCanvas.PolyBezier default behavior

The default value of the Continuous parameter was changed because it breaks Delphi compatibility.

TImageList stores compressed images in LFM

TCalendar: option dsStartMonday of DisplaySettings replaced by Delphi-compatible FirstDayOfWeek property

TRadioGroup's OnEnter and OnExit events

ShortcutToText / TextToShortcut

TTabControl / x,y in mouse-events (move,down,up,drag) and IndexOfTabAt

Conversion of '\n' sequences in LCLTaskDialog.TTaskDialog

'Line1\nLine2'

use

pascal
'Line1'+LineEnding+'Line2'

TScrollingWinControl.ScrollInView and successors (e.g. TScrollBox, TForm)

TColorDialog.Title

GTK2 widgetset version requirement

Components incompatibilities

TAChart

Chart.AllowZoom changed

The property AllowZoom of TChart is meant to give the user the chance to turn the builtin zooming feature on or off.

DataPointDrawTool.OnDraw event deprecated

The event OnDraw of the data point draw tools (TDataPointCrosshairTool, TDataPointDistanceTool) will be removed and replaced by the new event OnCustomDraw.

TChartAxis.OnMarkToText event deprecated

The event OnMarkToText of the chart's axes will be removed and replaced by the new event OnGetMarkText.

OpenGL-related units moved to separate packge TAChartOpenGL
Chart colors changed

VirtualTreeViews: Renamed to "laz." prefix

VirtualTreeViews is essentially needed by OnlinePackageManager. Having this original package within the Lazarus installation makes is impossible for users to install a different version of this package.

SynEdit

SynEdits TextView system has undergone some changes. TextViews (TSynEditStrings) map the physical text (as saved/loaded to/from a file) to what is visible on the screen.

This also affects the coordinate system. In addition to Logical/Physical SynEdit now also has ViewedXY. "Viewed" also maps the Y coordinate.

SynEdit.TextView / TSynEditFoldedView

The protected property SynEdit.TextView is no longer of type TSynEditFoldedView. It may hold any other TextView-class instead.

Class hierarchy

TSynEditFoldedView.Lines/Count

Mapping

Callbacks

senrTextBufferChanging / senrTextBufferChanged

Callbacks on the TextView/TextBuffer were only valid for the current Buffer. If SynEdit shared/unshared the textbuffer, then all handlers needed to be re-registered.

This is no longer needed.

===== ScreenRowToRow/RowToScreenRow => ScreenXYToTextXY/TextXYToScreenXY =====

ScreenRowToRow/RowToScreenRow were deprecated, use ScreenXYToTextXY/TextXYToScreenXY

The new functions take a point, instead of just a line/row. This reflects the idea that a single text-line can visible occupy several lines. Or mapping can otherwise relay on the x pos, depending on whatever TextViews are used.

===== RowColumnToPixels => ScreenXYToPixels =====

RowColumnToPixels is deprecated, use ScreenXYToPixels

SynEditExport

T(Float)SpinEditEx.ReadOnly now also disables the use of arrowkeys

T(Float)SpinEdit(Ex) default value for MaxValue changed

==== T(Float)SpinEditEx MaxValue is no longer enforced to be >= MinValue ====

TSpinEditExBase: call to abstract method SameValue in descendent classes (FPC 3.2.2 only)

TLabel: DoMeasureTextPosition removed, added DoDrawText instead

IDE incompatibilities

LPI&LPS project files: XML structure changed

LPK package files: XML structure changed

Packages incompatibilities

ProjectGroups: LPG XML structure changed

Other release notes


From the Free Pascal wiki, page "Lazarus 2.2.0 release notes", as it stood on 2024-03-17 after a change by Wp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.