Lazarus 2.2.0 release notes
Lazarus 2.2.0 is not yet released. This page is under construction!
- commits: xxx
- log: svn log -r xxxx:xxxx
- resolved bug tracker issues: xxx
- 1 LazUtils Changes
- 2 LCL Interfaces Changes
- 3 LCL Changes
- 4 IDE Changes
- 5 IDE Interface Changes
- 6 Components
- 7 Changes affecting compatibility
- 7.1 LazUtils
- 7.2 LCL incompatibilities
- 7.3 Components incompatibilities
- 7.4 IDE incompatibilities
- 8 Previous release notes
FileExistsUTF8 uses SysUtils.FileExists
- Old behavior: FileExistsUTF8 supported Unicode in fpc 2.6.x under Windows
- New behavior: FileExistsUTF8 now calls SysUtils.FileExists, which supports Unicode under Windows since fpc 3.0
- Reason: Simplified
LCL Interfaces Changes
- Qt5 widgetset needs libQt5Pas v 1.2.7 since result of QWidget_winId() is changed from PtrInt to PtrUInt.
Windows Qt5Pas1.dll is already in lazarus trunk binaries directory. Linux distributions should rebuild libQt5Pas packages. MacOS you should rebuild libQt5Pas against downloaded Qt5Pas libs (Qt5-5.6 is minimum).
TLazIntfImage.Create with size and description flags need no CreateData anymore
- Old: After creating of a TLazIntfImage with size and flags CreateData has to be called
- New: Creating of a TLazIntfImage with size and flags internal calls CreateData
- Reason: Simplify, see Issue #35035
- New event OnAddItem gives possibility for finer control over what to add to the tree.
- New event OnAddItem gives possibility for finer control over what to add to the listview.
- New property MaskCaseSensitivity to allow e.g. case-insensitive masks on *nix. The property defaults to platfom standard behaviour.
- Added IDE macro $(OutputFile) for the outputfile of the project. This usually corresponds to $(TargetFile), except when having a host application, in which case $(TargetFile) is the host application, while $(OutputFile) is the project executable (or library).
- Codetools support for anonymous functions
- "Close tabs to the right" in Source-Notebook
- Extension of master PO files (a.k.a. templates) is changed from .po to .pot.
- Example for IDE translation:
- 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
- .pot is '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 Config: The IDE now provides the ability to set up different debugger-configs as named profiles.
- Project Groups:
- Option frame under Tools / Options
- Load last open project group on start (option to disable)
- More / Undo menu item to undo a delete
- More / Info menu item to show some stats. At the moment it shows all source directories.
- Find in Files has a new option "Search in project group".
- Option to redirect the IDE command Compile/Build project to Compile/Build the selected target in the project group editor. For example Ctrl-F9 can compile the whole project group.
IDE Interface Changes
- New button to minimize a docked site.
- New IDE addon, showing a search list of all IDE commands.
- New chart tools "TAxisClickTool", "TTitleFootClickTool" and "TLegendClickTool": Create OnClick events when the user clicks on a chart axis or its title, the chart title or footer, or the chart legend, respectively. Good for creating an interactive GUI for formatting charts.
- New property "AllowPanning" to turn built-in panning on/off.
- New property "LimitToExtent" for zooming tools, avoids zooming out of the chart's full extent.
- Property editor for TSeriesPointerStyle.
- New property "BarShape" for drawing alternative shapes (cylinder, hexagonal prism, pyramid or cone) instead of rectangular bar.
- Impoved painting of 3D pie series due to new properties: "DepthBrightnessDelta" allowing to darken or brighten the sides of the pie slices, "Orientation" and "ViewAngle" for different views of the series
- New property "InnerRadiusPercent" allowing to draw a ring chart.
- New property "MarkPositionCentered" for attaching data point labels to the pie center instead of the pie perimeter.
- New property "StartAngle" to define the position of the first pie slice.
- TListChartSource can be sorted by X, Y, XList, YList, Color, Text, or in a user-specific way defined by the event OnCompare.
- New TSortedChartSource which, if inserted between original chart source and series, allows sorting of TUserDefinedChartSource or TCalculatedChartSource by the same criteria as TListChartSource.
- New property "AdjustSides" of TChartExtentLink allowing to automatically align the sides of aligned charts to each other (in case of differently sized axis labels).
Changes affecting compatibility
- Trailing lineendings are not forcibly added to multiline strings in PO files anymore. Now multiline strings in PO files match exactly corresponding resource strings.
- 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.
TMaskEdit: hexadecimal and binary characters
Mask support for hexadecimal and binary characters was added (this is a Lazarus extension, Delphi does not support this).
- Old behavior: the characters 'h', 'H', 'b' and 'B' had no special meaning in the EditMask property
- New behavior: these characters now are mask characters for hexadecimal and binary input respectively.
- Reason: nice to have feature (QT5 supports it natively).
- Remedy: if you need one of these characters as a literal in your EditMask: escape them with a '\'.
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.
- Old behavior: AllowZoom operates also on an external toolset.
- New behavior: AllowZoom is effective only for the built-in toolset.
- Reason: More consistent handling of properties
- Remedy: Use the property Enabled of the external zoom tool to switch zooming off, or don't add a zoom tool at all.
TAChart: DataPointDrawTool.OnDraw deprecated
The event OnDraw of the data point draw tools (TDataPointCrosshairTool, TDataPointDistanceTool) will be removed and replaced by the new event OnCustomDraw.
- Old behavior: OnDraw uses the chart's Drawer for painting the crosshair or distance bars.
- New behavior: the Drawer to be used is passed as a parameter.
- Reason: When a chart is painted to an external file the chart's Drawer still refers to the screen; therefore, the datapoint cross hair or distance bars are missing in the external file.
- Remedy: Copy the old OnDraw event handler code to the new OnCustomDraw handler, but replace "Chart.Drawer" by the "ADrawer" given as a event parameter.
- Old behavior: OpenGL-related units had been available in the main TAChartLazarusPackage directly. The drawer unit TADrawerOpenGL was not added to the uses list automatically and required a special treatment (see old OpenGL demo project).
- New behavior: OpenGL-related units are now contained in the new package TAChartOpenGL.
- Reason: Compilation issues when the system did not contain OpenGL libraries.
- Remedy: Add package TAChartOpenGL to the requirements of the project. Only needed when project uses the OpenGL drawer.
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.
- Old behavior: Projects with VirtualTreeViews required the "virtualtreeview_package" and had the unit "virtualtrees" in the uses clause. The registered component classes were named "TVirtualStringTree", "TVirtualDrawTree", "TVTHeaderPopup".
- New behavior: The package was renamed to "laz.virtualtreeview_package". All file names were changed to have a "laz." prefix, i.e. the uses clause will have to contain "laz.virtualtrees". The registered components are named "TLazVirtualStringTree", "TLazVirtualDrawTree", and "TLazVTHeaderPopup".
- Reason: Avoid naming conflicts when another version of VirtualTreeViews is installed
- Remedy: For existing projects requiring the VirtualTreeViews distributed with Lazarus,
- open the lfm file in an external editor and replace "TVirtualStringTree" by "TLazVirtualStringTree", as well as - if available - "TVirtualDrawTree" by "TLazVirtualDrawTree" and "TVTHeaderPopup" by "TLazVTHeaderPopup".
- open the project in the IDE, remove package "VirtualTreeView_package" from the project requirements and replace it by "laz.virtualtreeview_package"
- in the pas file's "uses" clause, replace "virtualtrees" by "laz.virtualtrees"
- in the pas file replace "TVirtualStringTree" by "TLazVirtualStringTree" (and accordingly for the other VTV components).