Lazarus 3.0 fixes branch

From Lazarus wiki
Jump to navigationJump to search
Light bulb  Note: This page is used internally by the Lazarus team.
The data in this page does not represent the full extent of what is included in the fixes branch/versions


For a list of what was merged to the Fixes branch please visit:

Open issues listed on the linked milestones are loosely targeted for the indicated version. Their final inclusion depends on the available man-power and/or contributions. Release may or may not be deferred for any non resolved issue.



This page contains the revisions to be merged from main branch to the Lazarus 3.0 fixes branch.

These are only fixes made after the branch was created. For other fixes made since the previous release (2.2) see Git and Lazarus 2.2 fixes branch.

Release notes can be found here.

Internal Merge requests for 3.2

Open Merge requests

Submitted by others / waiting for sign off by team member

Submitted by developer / committer and waiting for testing (do not commit yet)

  • 76bbc6e2 Implement TListView.OnChanging (Win32). Part of Issue #19169
  • 55a3ce52 Issues.xml: TListView.OnChanging not supported (cocoa,gtk2,gtk3,qt,qt4,qt5,qt6. the other WS don't have an issue.xml, or are deprecated).
  • e8132d72 Cocoa: Fix Issue #19169, TCustomListView.OnChanging()
  • a4ab5f4a Cocoa: adapt issues.xml after commit e8132d72 (Issue #19169).
  • 88827aa9 Win32: fix TListView losing focus after EndUpdate. Issue #40786.
  • 57bb5a13 Win32: make ListView columns not-clickable if ColumnClick is False. Issue #40787.
  • e5a63799 TCustomTabControl: activate first control on page after page changed. Issue #40775.
  • f3aa0586 TCustomTabControl: don't steal foucus in ActivateFirstControlOnPage. Part of issue Issue #40775.
  • 5e54b2f9 TCustomTabControl: don't check for parent in call to FindNextControl in ActivateFirstControlOnPage. Part of issue Issue #40775.

Merge conflicts

Submitted by developer / committer, tested, waiting to be merged

  • 9ad00fb5a7 IDE: Fix saving a program with a dotted name. Issue #40760.
  • 280ada98b2 Codetools: Prevent a crash in FindIdentififerReference on name of a program. Issue #40753.
  • 6c9fa22be3 IDE: Inform a user earlier that renaming a unit is not possible through "Rename identifier" feature. Issue #40744.
  • 8e1fc0cf60 IDE: Fix component palette configuration when a component is installed or uninstalled after the user configuration.
  • 8279463be3 Docs: Updates default content for locallclfooter.xml.
  • 997dff1022 Docs: Updates Linux build scripts for CHM and HTML.

Processed Merge requests

  • e2c8facc LCL-Gtk2: Ignore temporary windows (like dragging image) when selecting a target during Drag'n'Drop action. Patch by Alexander (Rouse_) Bagel, issue #40637.
  • 4f7e9aee LCL-Gtk2: fixed cursor changing when performing a dragging action, patch from Alexander (Rouse_) Bagel, issue #40651
  • 1783ee35 LCL-Gtk2: fixed handling of dragging image coordinates when it is dragged to non-client widget area, patch by Alexander (Rouse_) Bagel, issue #40658
  • 75d9f32660 IDE: Show "Find in Files" dialog also from the package editor. Issue #40673
  • 148b2d23f4 LazUtils: Resolve '/somedir/..' correctly in ResolveDots. Add tests. Issue #40678
  • 68a45955 IDE: Remove an extra (F9) from the hint of a Run-button. Remove a wrong hint from ProjInspector's Options button. Issue #40732.
  • 59aff202 TAChart: Fix function IncQuarter calculation error for negative NumberOfQuarters.
  • b48d102c MaskEdit: publish properties EnableSets, ValidationErrorMode and OnValidationError.
  • a1f45d10 IDEIntf: property-editor for TMaskEdit: set minimal width for samples listbox.
  • a09b37af MaskEdit: adapt FormatMaskText for EnableSets.
  • 1e544fb5 Designer: Repaint after changing "BorderSpacing" in AnchorEditor or in OI. Issue #40746
  • 366c2feca3 Docs: LCL/controls. Adds the TControlBorderSpacing.GetOwner topic for changes in 1e544fb5. Issue #40746.
  • eb80a21f08 Docs: LCL/forms. Updates TScreen.Fonts topic for changes in db95c28d.
  • cd3f347249 Docs: LCL/grids. Updates TCustomStringGrid.DoCompareCells topic for changes in c285b58a.
  • ae8d65596e Docs: LCL/valedit. Updates external references for changes in c285b58a.
  • 334ee8144b Docs: LCL/lazhelpintf. Updates external references and adds missing topics for changes in c285b58a.
  • 59d8129fc5 Docs: LazUtils/lazfileutils. Updates CompareFileExt topic for changes in 08c0f486.
  • bcabdb039c Docs: LazUtils/lazutf8. Deprecates UTF8CompareLatinTextFast and UTF8CompareStrCollated topics for changes in 890f92e33e.
  • db95c28df7 LCL: Optimize getting a list of font names and eliminating duplicates in TScreen.
  • aecb1d9473 LHelp: Remove UTF8CompareLatinTextFast calls.
  • 4a639e70c5 TurboPower_ipro: Remove useless code from TIpHtmlParser.ParseHead.
  • c9e4a59c62 TurboPower_ipro: Optimize function FindFontName. Remember previous values.
  • bc201de1ed TurboPower_ipro: Optimize 'px' in TIpHtmlNodeCore.GetFontSizeFromCSS. Fix possibly missing Result in function CssMarginToProps.
  • 5168d97f T(Float)SpinEditEx: fix setting (initial) value if NullValueBehaviour = nvbShowTextHint.
  • 08c0f4865d SynEdit, FpDebug, LazUtils, IdeIntf: Remove UTF8CompareLatinTextFast calls.
  • c285b58aa3 LCL: Remove UTF8CompareLatinTextFast calls.
  • 890f92e33e LazUtils: Deprecate UTF8CompareLatinTextFast. Implement TStringListUTF8Fast differently.
  • 7b6e360bce aggpas: Prevent potential overflow error. Issue #40765.
  • 9e3e23a440 TAChart: Fix axis click tool sometimes detecting wrong axis part.
  • 0642c65d04 TAChart: Add demo for AxisClickTool
  • a3ba11e5 T(Float)SpinEditEx: In InitializeWnd set Text to represent FValue, otherwise NullValueBehaviour will be applied in call to UpdateControl.
  • d538fbd4 LCL-Gtk2: fixed window move/resize issues with Fly/Openbox window managers, patch by Artem Izmaylov, issue #40752

Fixes for 3.0 (merged)

  • 54e9cc91 TCustomAbstractGroupedEdit: assign PopupMenu also to FBuddy (if this does not have a separate PopupMenu by itself). Resolves part of Issue #38098.
  • 048f337a LResources: remove support for the DisableWindowsUnicodeSupport define (as we've done before in LCL).
  • 5b65498e LResources: deprecate TUtf8Parser class. It's not needed anymore.
  • e50ab381b1 IDE: Allow configuring Toolbars in IDE CoolBar also when "Coolbar is visible" is unchecked. Issue #40600.
  • 97c3ff8515 DateTimeCtrlsDsgn: Move uses sections from implementation to interface.
  • ca7c0d686b,db64a6240d IDE: Save the size of Run / "Compile many modes" dialog. Issue #35245.
  • 764415b6a0 LCL, LazControls: FilterEdit cleanup. Issue #40601.
  • 3692c658ae LCL, LazControls: Fix order of calling OnKeyDown in FilterEdit controls. Issue #40601.
  • b64bba34 LCL-Win32: Do not change window Z-order when minimizing and then restoring IDE with opened form designers. Patch by Red_prig (Pavel), issue #40576.
  • ef8b5603be LCL: Restore a class procedure TCustomShellTreeView.GetFilesInDir. Rename a helper procedure to avoid name clash.
  • 68acca089e Docs: LCL/shellctrls. Adds TCustomShellTreeView.GetFilesInDir topic and updates references to renamed helper routine for changes in ef8b5603be.
  • 425372ee74 LCL-GTK2: Make TrayIcon more configurable based on libraries and features provided by a distro. Issue #40629

Fixes for 3.0RC2 (merged)

  • 95da84ff94, bf0878f8f9 IDE: Fix saving PathMode in SearchResultsView always. Issue #40352.
  • f0a8e22c EditBtn: publish property Alignment for some TCustomEditButton descendants.
  • c3891ad820 Reduce compiler warnings.
  • 4db3bb880c Svn2RevisionInc: Do not warn about missing SVN client. Issue #40359.
  • d8405a9db8 AnchorDocking: Reduce compiler warnings.
  • a448e619 TTrackBar.ScalePos: not supported on Win32, Cocoa, QT, QT4, QT6.
  • 606ef3eac7 IdeConfig: Improve recursive macro cycle detection in TransferMacros. Prevents a frozen IDE. Issue #33151.
  • 3ea8fbcca2 Docs: LazUtils/lazutilities. Updates content for topics added in e3691f68.
  • 6717565e9b GTK3: Fixes missing end tags in gtk3/issues.xml.,63867.msg484990.html#msg484990
  • 479ff9635e Codetools: Support more modifiers in class method. Issue #40368.
  • bb83fdd273 simplewebservergui: fixed run on older windows, loading GetTcpTable2 via GetProcAddress
  • e4494cf4cd LCL-GTK2: Allow right-to-left selection of long text in TEdit with mouse. Issue #40379
  • 0c056fc0d2,d9608a3489,27f6e20118 IDE: Remove unknown component properties using the same GUI already used in other situations. Issue #40377
  • ebad154bc6 DockedFormEditor: Prevent an eternal loop when an invalid LFM file causes a read error. Issue #39288
  • a236313f5f DockedFormEditor: Fix a missing Result value of TDesignForms.Add().
  • ed7945efe2 IDE: Load and save AutoSaveActiveDesktop value. It was left out in EnvironmentOptions refactoring.
  • 5a647cd4e1 DockedFormEditor: Solve the unrecoverable loop differently. Add a new handler for it. Issue #39288
  • fd2593f05b IDE: Improve removing unknown component properties. Issue #40377
  • 3844d00814 Docs: LCL/forms. Adds TScreen, TScreenNotification topics for changes in 5a647cd4. Issue #39288
  • b9cdb23eed Docs: LCL/forms. Clarifies content in NewFormWasCreated and AddHandlerNewFormCreated topics in TScreen. Depends on 3844d008, 5a647cd4.
  • 4ed8ff9b1c IDE: Prevent an error "Unable to find the component class ..." with an .lfm file open in editor. Part of issue Issue #40377
  • a4aa3e0a56 OpkMan: Update version list.
  • 318fa86019 IDE: Remove the "Ignore" option for uninstalling dependent packages. Fix the "Cancel" option.
  • 4179f1b4 New Fixed removing of incorrect component properties in LFM with installed DockedFormEditor. Issue #40377.
  • bef70c1810 Docs: LCL/controls. Updates topics for changes in 53cd3db19c.
  • ba985a533e Docs: LCL/forms. Adds TApplication.GetControlAtPos topic for changes in 53cd3db19c.
  • e95cadd0 Win32: fix MDIChild form not updating Top/Left. Issue #40232.
  • 48b1419e TTaskDialog: make the flag tfNoDefaultRadioButton actually work.
  • 69614e3959 Docs: LCL/lcltaskdialog. Updates TTaskDialog.Execute for changes in 48b1419e.
  • a4c9080f TListBox: fix SelCount in case HandleAllocated = False. Issue #40361.
  • a0e4b5d35a Docs: LCL/stdctrls. Updates TCustomListBox.SelCount for changes in a4c9080f. Issue #40361.
  • b101a75d VirtualTreeView: fix building with Qt4 widgetset on non-x86 platforms (unify with Qt5 and Qt6 widgetsets), issue #40431
  • 57fe53bd VirtualTreeView: adjust IFDEFS for Qt4, Qt5, Qt6 widgetsets to enable asm code for both 32 bit and 64 bit x86 CPUs, issue #40431
  • 2a339f8c Qt,Qt5,Qt6: fixed borderless popup over parent form with FormStyle = fsStayOnTop. Issue #40440
  • 853461fe LCL: fixed TWinControl.SetChildZPosition, WS must be informed about change of order in any case. Issue #40450
  • 2885935b Qt,Qt5,Qt6: do not create dummy widget if wm name is empty or we are running under wayland. Issue #40413
  • e2f0b349 Gtk2: do not create dummy widget if WM name is empty, also reduce looping on slow systems. Issue #40413
  • 8c1e7bc4b0 IDE: Show the project name and build mode by default in the IDE title. Name variables and properties consistently.
  • c609605cfa, debaca4729 In Install/Uninstall package dlg, do not enable "Save and rebuild" and "Save and exit" buttons when filtering.
  • f26bc899 Win32: TListBoxOnSelectionChange is fired whenever the user clicks the item, regardless of it's previous state. Issue #33618.

Roadmap to 3.0

The release process will consist of the following steps.

  • Creation of 3.0 fixes branch. (Done 25 June 2023)

This is the start of the stabilization process before a new Lazarus release.

  • Release of 3.0RC1 (Done 03 July 2023)

This will be the first Release Candidate. We would like to urge all users to test this version. The testing period is scheduled to last 2 weeks.

  • Release of 3.0RC2 (Done 16 October 2023)

The testing period is scheduled to last 2 weeks.

  • Release of 3.0RC3 (N/A)

The testing period is scheduled to last 2 weeks.

  • Release of Lazarus 3.0 (Done 21 December 2023)

Users can download the new stable version.


  • Menu item exists
  • Clear pcp directory and start IDE, a new project application with a form should be visible
  • Double click on form - a FormCreate event should be created
  • Check View / IDE internals / What needs building - no package should need building, only the project
  • Restart the IDE - there should be no warning about upgrading
  • Install the package cody, after restart the component palette should show the component TCodyTreeView
  • Run Unit-Tests from menu "Tools"--> "Example Projects". Choose project "runtestsgui.lpi" and run it. It will do about 390 unittests.

Tagging release

  • GIT merge requests of this page
  • set version in fixes_3_0 branch:
    • open lazarus/lazarus.lpi in the IDE and change the version numbers in the project options dialog for RC1, for RC2, for RC3, for final
    • lazarus/ide/packages/ideconfig/ 3.0RC2 for RC2, no spaces! (3.0 for final release)
    • lazarus/components/lazutils/lazversion.pas for RC2, for RC2, ... for final
    • lclbase.lpk
    • lcl.lpk
    • lazarus/
      • CFBundleShortVersionString "3.0.0"
      • CFBundleVersion 1 for RC1, 2 for RC2, 3 for RC3, 4 for final release
    • tools/install/linux/environmentoptions.xml same as
    • tools/install/win/environmentoptions.xml same as
    • tools/install/macos/environmentoptions.xml same as
    • check lpl files by running "./tools/lplupdate -c" and do the git mv commands
    • Update makefiles: Make sure Additions and Overrides are empty and run
FPCDIR=/path/to/fpc/src/trunk PATH=/path/trunk/fpc/utils/fpcm/bin/x86_64-linux/:$PATH ./tools/updatemakefiles
  • check that ide/lazarus.lpi and ide/lazarus.res have changed:
git status

Other branches