Difference between revisions of "Lazarus 3.0 release notes"

From Free Pascal wiki
Jump to navigationJump to search
(16 intermediate revisions by 5 users not shown)
Line 7: Line 7:
  
 
== LazUtils Changes ==
 
== LazUtils Changes ==
 +
=== Masks unit ===
 +
The masks unit has been completely rewritten.<br>
 +
Reasons:
 +
* speed: the old Matches() method had O(n^2) or even O(n^3) characteristics.
 +
* improved control over how the mask is interpreted.
 +
New types (for parameters) and a dedicated TMaskWindows class have been added.<br>
 +
TMask.MatchesWindowsMask and the old TMaskOptions type have been deprecated and will be removed in the next release.<br>
  
 
== LCL Interfaces Changes ==
 
== LCL Interfaces Changes ==
  
 
== LCL Changes ==
 
== LCL Changes ==
 +
=== TTaskDialog ===
 +
*Old behaviour Win32: A placeholder icon was used for FooterIcon = tdiNone and MainIcon = tdiNone.
 +
*New behaviour Win32: No icon is used for FooterIcon = tdiNone and MainIcon = tdiNone.
 +
*Reason: Removing drawing glitch. The text move over to allow more content and better alignment. See {{MantisLink|39172}}
 +
 +
=== TSpeedButton ===
 +
*Old behaviour: Multi-line captions could only be entered by code. And multi-line captions were always left-aligned.
 +
*New behaviour: Multi-line captions can also be entered in the object inspector. New property Alignment to specify whether the caption should be left-/right-aligned or centered. Default: centered, like in Delphi.
 +
*Reason: Better usability.
 +
 +
=== TLabel.Transparent, .Color and .ParentColor changes ===
 +
*Old behaviour: Transparent property was bound to Color=clNone
 +
*New behaviour: Transparent is a standalone property
 +
*Reason: Delphi compatibility and to fix ParentColor issues.
 +
*Remedy: If you are setting the Color property, Transparent is not automatically switched from True to False now, you have to do it yourself. This is in compliance with Delphi and also solves problems with Color/ParentColor changes.
  
 
== IDE Changes ==
 
== IDE Changes ==
 +
=== Character map ===
 +
* Resizable characters to improve readability.
  
 
== IDE Interface Changes ==
 
== IDE Interface Changes ==
  
 
== Components ==
 
== Components ==
 +
=== TAChart ===
 +
* The '''TLegendClickTools''' now is able to detect clicks on series legend items and reports the clicked series in the new '''OnSeriesClick''' event.
 +
* New property '''TickWidth''' for the chart axes.
 +
* New property '''RandomColors''' for TRandomChartSource.
 +
* New properties '''YIndexWhiskerMin''', '''YIndexBarMin''', '''YIndexCenter''', '''YIndexBarMax''', '''YIndexWhiskerMax''', and '''YDataLayout''' in TBoxAndWhiskerSeries for more flexible assignment of y values to the parts of the box/whisher shape.
 +
 +
=== Pas2js ===
 +
 +
* lazbuild now can compile pas2js projects by passing the environment variable PAS2JS with the path of the pas2js executable.
 +
* Project groups with pas2js projects now can compile without being opened.
 +
* New project type [[lazarus_pas2js_integration#Progressive_Web_Application|Progressive Web Application]]
 +
* New project type [[lazarus_pas2js_integration#Electron_Web_Application|Electron Web Application]]
 +
* pas2jsdsgn now uses the SimpleWebServerGUI package, replacing its own http server controller.
 +
* F9, Run now builds, starts a HTTP server and a browser
 +
 +
=== Lazarus Icon Collection ===
 +
* Not a component, but the Lazarus installation now contains a folder with general-purpose icons for usage in toolbars, menus, buttons etc. of any GUI applications (folder ''images/general_purpose'').
 +
* The images come in various sizes and thus are compatible with the scaled image list of Lazarus v2.0+.
 +
* Author: Roland Hahn
 +
* License: Creative Commons CC0 (no restrictions in usage).
  
 
== Changes affecting compatibility ==
 
== Changes affecting compatibility ==
 +
 +
===LazUtils===
 +
 +
==== Masks unit ====
 +
===== Ranges and Sets =====
 +
* The old masks implementation supported sets, but not ranges. The new implementation supports both sets ([abc]) and ranges ([a-c]). As a consequence a '-' inside such a construct is now interpreted as part of the range definition, not as a literal '-'.
 +
* Reason: ranges are a good thing to have by default (the old implementation simply lacked this). We decided it's a small price to pay.
 +
* Remedy: either escape the '-' with EscapeChar (which defaults to '\') or exclude mocRange from the TMaskOpcodes parameter.
 +
 +
===== Constructors do not fail anymore on an invalid mask =====
 +
* When providing an invalid mask to the old T(Windows)Mask(List) constructors an exception was raised.
 +
* The new constructors do not raise an exception in this case. Instead an exception is raised in when Matches() is called.
 +
* Reason: it's not very nice to have a constructor fail.
 +
 +
===Components incompatibility===
 +
====LazControls====
 +
=====TFloatSpinEditEx=====
 +
* The property NumbersOnly is no longer published.
 +
* Reason: the property makes no sense for this control and only confuses users.
 +
* Remedy: if you really need NumbersOnly to be True, you must set it in code.
  
 
== Other release notes ==
 
== Other release notes ==

Revision as of 10:31, 8 May 2022

Lazarus 2.4.0 is not yet released. This page is under construction!

Statistics:

  1. commits: xxx
  2. log: svn log -r xxxx:xxxx
  3. resolved bug tracker issues: xxx

LazUtils Changes

Masks unit

The masks unit has been completely rewritten.
Reasons:

  • speed: the old Matches() method had O(n^2) or even O(n^3) characteristics.
  • improved control over how the mask is interpreted.

New types (for parameters) and a dedicated TMaskWindows class have been added.
TMask.MatchesWindowsMask and the old TMaskOptions type have been deprecated and will be removed in the next release.

LCL Interfaces Changes

LCL Changes

TTaskDialog

  • Old behaviour Win32: A placeholder icon was used for FooterIcon = tdiNone and MainIcon = tdiNone.
  • New behaviour Win32: No icon is used for FooterIcon = tdiNone and MainIcon = tdiNone.
  • Reason: Removing drawing glitch. The text move over to allow more content and better alignment. See Issue #39172

TSpeedButton

  • Old behaviour: Multi-line captions could only be entered by code. And multi-line captions were always left-aligned.
  • New behaviour: Multi-line captions can also be entered in the object inspector. New property Alignment to specify whether the caption should be left-/right-aligned or centered. Default: centered, like in Delphi.
  • Reason: Better usability.

TLabel.Transparent, .Color and .ParentColor changes

  • Old behaviour: Transparent property was bound to Color=clNone
  • New behaviour: Transparent is a standalone property
  • Reason: Delphi compatibility and to fix ParentColor issues.
  • Remedy: If you are setting the Color property, Transparent is not automatically switched from True to False now, you have to do it yourself. This is in compliance with Delphi and also solves problems with Color/ParentColor changes.

IDE Changes

Character map

  • Resizable characters to improve readability.

IDE Interface Changes

Components

TAChart

  • The TLegendClickTools now is able to detect clicks on series legend items and reports the clicked series in the new OnSeriesClick event.
  • New property TickWidth for the chart axes.
  • New property RandomColors for TRandomChartSource.
  • New properties YIndexWhiskerMin, YIndexBarMin, YIndexCenter, YIndexBarMax, YIndexWhiskerMax, and YDataLayout in TBoxAndWhiskerSeries for more flexible assignment of y values to the parts of the box/whisher shape.

Pas2js

  • lazbuild now can compile pas2js projects by passing the environment variable PAS2JS with the path of the pas2js executable.
  • Project groups with pas2js projects now can compile without being opened.
  • New project type Progressive Web Application
  • New project type Electron Web Application
  • pas2jsdsgn now uses the SimpleWebServerGUI package, replacing its own http server controller.
  • F9, Run now builds, starts a HTTP server and a browser

Lazarus Icon Collection

  • Not a component, but the Lazarus installation now contains a folder with general-purpose icons for usage in toolbars, menus, buttons etc. of any GUI applications (folder images/general_purpose).
  • The images come in various sizes and thus are compatible with the scaled image list of Lazarus v2.0+.
  • Author: Roland Hahn
  • License: Creative Commons CC0 (no restrictions in usage).

Changes affecting compatibility

LazUtils

Masks unit

Ranges and Sets
  • The old masks implementation supported sets, but not ranges. The new implementation supports both sets ([abc]) and ranges ([a-c]). As a consequence a '-' inside such a construct is now interpreted as part of the range definition, not as a literal '-'.
  • Reason: ranges are a good thing to have by default (the old implementation simply lacked this). We decided it's a small price to pay.
  • Remedy: either escape the '-' with EscapeChar (which defaults to '\') or exclude mocRange from the TMaskOpcodes parameter.
Constructors do not fail anymore on an invalid mask
  • When providing an invalid mask to the old T(Windows)Mask(List) constructors an exception was raised.
  • The new constructors do not raise an exception in this case. Instead an exception is raised in when Matches() is called.
  • Reason: it's not very nice to have a constructor fail.

Components incompatibility

LazControls

TFloatSpinEditEx
  • The property NumbersOnly is no longer published.
  • Reason: the property makes no sense for this control and only confuses users.
  • Remedy: if you really need NumbersOnly to be True, you must set it in code.

Other release notes