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.6

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)

Merge conflicts

  • 346b890f26 Docs: LCL/controls. Updates TWinControl.PaintControls topic for changes in da0cab13. Issue #19685.

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

  • 2acde1ee TurboPowerIPro: Add support of 3-digit html color codes.
  • 92306de9 TurboPowerIPro: Less hints.

Processed Merge requests

  • c52332fbb5 Docs: LCL/graphics. Updates the TCanvas.Draw topic to clarify content.

Fixes for 3.4 (merged)

  • 7b596989e8 Turbopower_ipro: Fix anchor position calculation, Issue #40480, Issue #40662.
  • 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.
  • 5e2a753239 LazUtils: Make sure CompareText comes from SysUtils. Issue #40814.
  • 1ee8c6edb1 TAChart/RadialSeries: Fix crash due to empty AngleCache (see,66470.msg509501.html)
  • cb087dd6e5 IDE: Prevent a list index out of bounds error in Messages window. Issue #40798.
  • 12e9db2f31 TAChart: Avoid drawing no candlestick box when open and close prices in a TOpenHighLowCloseSeries are equal.
  • d0c036aa81 Codetools: Complete also a virtual/overridden method body with empty brackets. Issue #40799.
  • 79a6aff5c9 Codetools: Prevent an eternal loop in procedure ImproveStringConstantEnd.
  • a7b6815a8c IDE: Rename "ShoLineNum" to "ShowLineNum" in project settings. Issue #40827.
  • a6a98c4327 IdeIntf: In TCompPaletteUserOrder.SortPagesAndCompsUserOrder turn a for loop into a while loop. Items can be deleted.
  • 0b7f1f3c0c LCL/TTrackbar: Avoid flickering in Windows 7 and older. Issue #40836.
  • e253e8cfb4 IDE: Support uppercase '.LPI' and '.LPR' files better. Issue #40708.
  • deb0488a Docs: Updates default content for locallclfooter.xml.
  • 59523ced Docs: Updates Linux build scripts for CHM and HTML.
  • 1dad391af7 Docs: LazUtils/translations. Adds missing topics and content for: GetLanguageIDFromLocaleName, UpdatePOFile.
  • ead3135f3c Docs: LCL/clipbrd. Updates content in the TClipboard.GetComponentAsText topic.
  • 60813b02c5 Docs: LazUtils/lazutf8. Removes unneeded TODO entries.
  • b70f3fdb LCL-Gtk2: make FillRect (winapi emulation) work even when current DC's brush is null, Issue #40823, patch by Artem Izmaylov
  • dcaf7e6b LCL-GTK2: Prevent a SIGSEGV in function DeliverMouseUpMessage(). Issue #40793, patch by Iluha Companets.
  • 3aaae1a6 LCL: Fix ChildSizing ignoring adjusted client rectangle. Issue #40838, patch by Henner Drewes.
  • 5621ec7a IDE/LCL: Prevent using the TListItems component editor when the associated listview is in virtual mode.,66660.0.html, patch by dsiders.
  • 2fb5d41799 Docs: LCL.controls. Adds version admonitions to topics for changes in 3aaae1a6. Issue #40838.
  • 37f11d9720 Docs: LCL/forms. Updates TApplication.GetParams to fix incorrect descriptions for arguments.
  • 66e929e9d6 Docs: LazUtils/lazutf8. Updates ParamStrUTF8 topic to include additional description for arguments.
  • 117cdd0a Docs: LazUtils/lazutf8. Fixes invalid attribute names in XML tagging.
  • 92c1b6a39a Docs: LCL/stdctrls. Fixes XML tags in TCustomEdit.ClearSelection See Also links.
  • 3962927845 Docs: LCL/forms. Updates content in TCustomForm topics including:
  • 045c0c6596 Docs: LCL/forms. Fixes invalid See Also link, XML tagging in topics.
  • 262066a6 LCL-Gtk2: more fine-grained Fly/Openbox workaround. Patch by Garry Wood, issue #40583. Fixes crashes on Ubuntu 23 after d538fbd4.
  • e11e1d3921 TAChart: Fix inconsistent usage of brush styles in series OnCustomDrawPointer (,66664.msg511859.html#msg511859).
  • 7f000a6970 LazControls: Filter data by TreeFilterEdit also when the TreeView is switched.
  • 76182b6c TLabeledEdit: publish property NumbersOnly.
  • 755dea7b4d LCL/TComboboxEx: Draw scaled icons. Issue #40905, patch by foxpas.
  • d2d921d2d6 Docs: LCL/comboex. Updates the TCustomComboBoxEx.DrawItem topic for changes in 755dea7b.
  • e9425e930f LCL/Grids: Fix TCustomGrid.ShowCellHintWindow to use screen coordinates for the hint window. Issue #40867, patch by Iluha Companets.
  • 76c40f6761 Docs: LCL/grids. Updates TCustomGrid.ShowCellHintWindow topic for changes in e9425e93.
  • de3376efef IDE/Component palette editor: Make sure that "Restore defaults" is always visible. Issue #40911
  • 03c96ee8aa VirtualTreeview: Fix loading resources from DLL (
  • 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.
  • 7446930e TFilenameEdit: don't force the TOpenDialog.InitialDir to current directory if InitialDir is empty string. Issue #40845.
  • db6ed214 Fix several occurrences of raise exception('some string'), in effect casting a string into an exception, instead of raise exception.create(). Issue #40860. Patch by n7800 (slightly modified).
  • 1f7accb9 Fix missing Raise before Exception.Create. Issue #40860. Patch by n7800.
  • 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.
  • 148735d8 TCustomTabControl: rename a method. No functional changes.
  • 36c308d1 TCustomTabControl: fix not firing OnChange after commit e5a63799.
  • db41ce26 TCustomTabControl: only call MaybeSelectFirstControlOnPage if APage is not nil. Remove duplicate checks.
  • 2a5c8dd492 Docs: LCL/comctrls. Updates TCustomTabControl topics for changes in db41ce26.
  • 86f3e42075 Docs: LCL/comctrls. Updates TCustomTabControl.Change topic for changes in 36c308d1.
  • 6f7146a46e Docs: LCL/comctrls. Updates TCustomTabControl topics for changes in 5e54b2f9, 148735d8.
  • 1836844e6e Docs: LCL/comctrls. Adds TCustomTabControl.ActivateFirstControlOnPage topic for changes in e5a63799. Issue #40775.
  • 5b84fae03d Docs: LCL/intfgraphics. Fixes errors in example code. Issue #40970.

Fixes for 3.2 (merged)

  • 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
  • 51a6c3d25c Docs: LCL/maskedit. Adds and updates topics for changes in 0cbb6646, a09b37af
  • d0869438b5 Docs: LCL/maskedit. Updates FormatMaskText topic to clarify content.
  • 1024edcb4d IDE: examples/helphtml. Updates the demo application with additional BaseURL values. Updates metadata.
  • b2dd59fad5 Docs: LCL/lazhelphtml. Adds, updates content in THTMLHelpDatabase and THTMLBrowserHelpViewer topics.


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