[Lazarus] Lazarus Release Candidate 2 of 2.2.0
Kostas Michalopoulos
badsectoracula at gmail.com
Tue Nov 2 16:51:27 CET 2021
On 11/2/2021 2:54 PM, Mattias Gaertner via lazarus wrote:
> The Lazarus team is glad to announce the second release candidate of
> Lazarus 2.2.
Neat. I did a bit of testing with some of my projects and everything
that worked in the last stable version i had (2.0.6) seems to work fine
with 2.2.0RC2.
I also did some testing with the MDI functionality that was implemented
in Win32 last year, which BTW...
> Here is the list of changes for Lazarus and Free Pascal:
> http://wiki.lazarus.freepascal.org/Lazarus_2.2.0_release_notes
> http://wiki.lazarus.freepascal.org/User_Changes_3.2.2
...isn't mentioned in the Lazarus changelog (the first non-trunk version
to have it was 2.2.0RC1, at least from a quick look in the source code
of 2.2.0RC1 and 2.0.12).
The MDI stuff seem to work mostly fine, however there is an issue i
noticed with paint and form resize events. I used this doodle app
(perhaps i can modify it and have it part of Lazarus tests or something
to test MDI support in other widgetsets?):
http://runtimeterror.com/pages/badsector/nyan/gimme/mdidoodlesrc.zip
This builds with Delphi 2 (which is the only Delphi i have access to and
what i used as the behavioral basis for my Win32 MDI patch) and Lazarus
(make sure to clean everything between builds).
The difference is between Delphi 2, an older SVN-based build of Lazarus
i have (Lazarus 2.1.0 r64351M FPC 3.3.1 x86_64-win64-win32/win64) and
2.2.0RC2:
In Delphi 2 the program receives only a single resize event in the MDI
child form for the final form size (notice how the both the main form
and the MDI child form use the default size which lets windows place it
as it wants) followed by a paint event. The app uses a bitmap to store
the doodle which is setup during resize events and is drawn on the form
itself during paint events.
In r63451M the program receives two resize events, one for some initial
(stored during design time, i think) size followed by the larger (due to
my large monitor) form size that is shown when it is in MDI - both are
fine as long as the final size event is correct, IMO, so no problem
here. Then a paint event follows.
In 2.2.0RC2 however the paint event comes between the initial and second
resize events which means that the background bitmap is not set up properly.
Now of course it'd be trivial to work around the change by adding an
Invalidate call to the resize event, but IMO this is a regression. There
should either be a second paint event or the paint event should be
delayed until sizing is settled. This would be both consistent with how
size and paint events seemed to work in previous version of Lazarus as
well as Delphi and also consistent with how Windows (from where most of
the VCL and LCL behavior comes from) behaves with WM_SIZE and WM_PAINT
(WM_SIZE always comes before WM_PAINT and WM_PAINT is always sent if a
window is enlarged to paint the new area).
Beyond the above i couldn't find any other issues with 2.2.0RC2.
Kostas
More information about the lazarus
mailing list