Lazarus Changelog

What's new in Lazarus 3.0

Dec 27, 2023
  • LCL Interfaces Changes:
  • Cocoa:
  • IME fully supported, such as Chinese/Japanese/Korean, DeadKeys, Emoji & Symbols.
  • Multi Displays/Monitors fully supported.
  • Docking fully supported, including the IDE.
  • Cursor completely refactored and significantly improved, compatible with macOS Ventura.
  • TPageControl significantly improved.
  • Many controls improved (TComboxBox/TListBox/TDateTimePicker/TStaticText/TSpeedButton/TPanel etc.)
  • Many memory leaks fixed.
  • Qt:
  • Implemented TCheckBox.Alignment and TRadioButton.Alignment.
  • Implemented TCustomComboBox.AdjustDropDown and TCustomComboBox.ItemWidth.
  • Qt5:
  • Qt5 uses native event loop on all platforms. C bindings are updated. Minimum C bindings version for lazarus 3.0 is 1.2.15.
  • Note that most Linux Distributions will not have an appropriate libqt5pas library until their next release after the formal release of Lazarus 3.0. Build your own from the Lazarus source tree or download from https://github.com/davidbannon/libqt5pas/releases/latest
  • Implemented TCheckBox.Alignment and TRadioButton.Alignment.
  • Implemented TCustomComboBox.AdjustDropDown and TCustomComboBox.ItemWidth.
  • Qt6:
  • Qt6 widgetset implemented. C bindings are based on Qt6 6.2.0 LTS. Minimum C bindings version for lazarus 3.0 is 6.2.7.
  • Note that most Linux Distributions will not have an appropriate libqt6pas library until their next release after the formal release of Lazarus 3.0. Build your own from the Lazarus source tree or download from https://github.com/davidbannon/libqt6pas/releases/latest
  • Implemented TCheckBox.Alignment and TRadioButton.Alignment.
  • Implemented TCustomComboBox.AdjustDropDown and TCustomComboBox.ItemWidth.
  • Gtk3:
  • Gtk3 pascal bindings are completely reworked.
  • A number of stability improvements.
  • Now requires GTK >= 3.24.24 and Glib2.0 >= 2.66
  • LCL Changes:
  • TCustomImageList:
  • TCustomImageList made more extensible:
  • Protected MarkAsChanged method is added, which sets FChanged to true (this allows to make custom triggers for OnChange event).
  • Virtual protected DoAfterUpdateStarted and DoBeforeUpdateEnded methods are added. They are called in first BeginUpdate and last EndUpdate respectively.
  • 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.
  • TPanel.VerticalAlignment:
  • Old behaviour: The panel caption was always centered vertically.
  • New behaviour: The new property VerticalAlignment (taAlignTop, taAlignBottom, taVerticalCenter) allows to place the caption also at the top or bottom of the panel interior.
  • Reason: Delphi compatibility and better usability
  • TCalendar:
  • Properties MinDate and MaxDate are implemented. These limits are only imposed if MaxDate > MinDate. Unfortunately GTK2/3 widgetsets do not support this, so selecting a date outside the MinDate/MaxDate range will still be possible there.
  • TCheckbox, TRadioButton:
  • Different calculation of checkbox/radiobutton size in order to correctly take care of Win-10 "ease of access" feature. See issue #39398
  • Consequence: lfm files will contain different sizes of these controls (if auto-sized) compared with earlier versions.
  • Grids:
  • You can now set the cell editors properties ParentColor and ParentFont by including goEditorParentColor resp. goEditorParentFont in the grid's Options2 property.
  • TShellTreeView:
  • New property ExpandCollapseMode defining options whether a collapsing node should clear its child nodes.
  • Implements custom sorting of the treeview items by setting FileSortType to fstCustom and providing a custom compare function in the event OnSortCompare.
  • TShellListView:
  • TShellListView now subclasses TListItem, so it can store file info in it.
  • If you use OnCreateItemClass to create your own descendant of TListItem, it may be advisable to base your own class on TShellListItem instead of on TListItem. This way you will also have access to the TShellListItem's FileInfo property.
  • TTreeView:
  • Adds ShowSeparators as a published property like ShowLines and ShowRoot.
  • TTrayIcon gtk2 Only:
  • If using the gtk2 tray icon, a new global variable is available that will allow you to predetermine which of the two TrayIcon models you use. See the Wiki for details. This is, and will only ever be, gtk2 only.
  • IDE Changes:
  • Character map:
  • Resizable characters to improve readability.
  • The character map was split off from the IDE and moved to separate packages. The designtime package is installed by default so that there is no difference in the IDE. Now users can access it in their own applications after adding the runtime package "charactermappkg.lpk" to the project requirements.
  • Debugger:
  • Project Options:
  • "Run(F9)" can either be "Debug" or "Run without debug".
  • In newly created Debug/Release modes, the Release mode will no longer invoke the debugger by default.
  • Existing Debug/Release modes must be edited, to enable this.
  • Per project "Debugger backend" settings. In addition to choosing a specific backend from the global IDE settings, a backend can be configured just for the project (i.e. special gdb-server settings)
  • IDE Dialogs:
  • Improved Watches window:
  • Expand/Unfold for classes, records, etc
  • Expand/Unfold with paged browser for arrays
  • Drag and Drop to reorder watches
  • Drag and Drop to create new "top level" watches from nested entries (in expand/unfolded lists)
  • Address column for types with internal pointer (classes, long-string, dyn-array, (real) pointer)
  • Improved Locals window:
  • Expand/Unfold for classes, records, etc
  • Expand/Unfold with paged browser for arrays
  • Address column for types with internal pointer (classes, long-string, dyn-array, (real) pointer)
  • Power button
  • Improved Inspect window:
  • Fixed: Updating value when context changes
  • Added options for Function calling / and "Converter" (See FpDebug: SysVarToLstr)
  • Added filter to search for text in name or value.
  • Added ctrl-Up/Down/Page-Up/Page-Down to navigate the grid.
  • Alt-Left/Right for history. And ctrl-Enter to select.
  • Improved Evaluate/Modify window:
  • New Layout
  • Added DisplayFormat
  • Added options for Function calling / and "Converter" (See FpDebug: SysVarToLstr)
  • Improved Assembler window:
  • Added history navigation (forward/backward)
  • For FpDebug: added annotations to jump/call targets, and allow to ctrl-click to disassemble target address
  • FpDebug / LazDebuggerFp:
  • Improved "function calling" in watch eval. See FpDebug-Watches-FunctionEval
  • %RAX Accessing cpu registers in watch expression (only full registers, not yet AH or AL or EAX on 64bit)
  • Intrinsic functions: FpDebug-Watches-Intrinsic-Functions
  • Intrinsic/extended operators: MyArray[1..3] array slice with operator mapping. FpDebug-Watches-Intrinsic-Functions#Intrinsic_Operators
  • Option to detect "variant" and call "SysVarToLStr" in the target app.
  • Suspend/Resume individual threads (must be done while app is paused, and will be applied for subsequent step/run)
  • Partial improvements to debug in DLL: https://wiki.freepascal.org/Debugger_Status#Other
  • Disassembler now annotates lines for call/jmp/jne/... with info on the target address (function name, file, line)
  • F7/F8 Step-Into/Over can now be used to start the debugger and run to the first line of the main program begin/end.
  • LazDebuggerFpLldb (default on MacOS):
  • Added Mem-Limits (and String,Pchar,Array) to the debugger config:
  • See https://wiki.freepascal.org/LazDebuggerFp (MaxMemReadSize, MaxStringLen, MaxArrayLen, MaxNullStringSearchLen)
  • Limiting the default results for watches/locals/stack-params,... can prevent slow evaluation.
  • Arrays can then be browsed in the watches window, using the new "paged browser for arrays" (expand via [+])
  • Floating point properties in the Object Inspector:
  • The Object Inspector now explicitely disallows to set a floating point property's value to +/-Inf or NaN.
  • Reason: whilst +/-Inf and NaN are valid values for a floating point property, they cannot be streamed (so, the form could not be loaded) and setting it to NaN caused havoc in the IDE.
  • Remedy: set the value at runtime (in code)
  • Reading unit names in lfm:
  • FPC 3.3.1 component writer supports optionally writing types with their unit names as unitname/type. Lazarus can now read this.
  • Ambiguous Classtypes:
  • You can now register two component classes with the same name, e.g. fresnel.TButton and StdCtrls.TButton. You can even put both on the same form.
  • Editor:
  • Highlight for PasDoc:
  • IDE Options:
  • In Tools -> Options -> Environment -> Window page these three settings are now ON by default:
  • IDE title starts with project name
  • IDE title shows project directory
  • IDE title shows selected build mode
  • It has been requested by many users. If the IDE's title bar has no info about the active project, a user must open Project Inspector or Project Options to see it, which is inconvenient.
  • Lazarus Examples:
  • A new approach to Examples that copies an Example to a fresh working area (avoiding the Linux Read Only Problem) and, possibly an easier to use search model.
  • 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 TDatapointMarksClickTool which becomes active when the user clicked on the marks of a series.
  • New property TickWidth for the chart axes.
  • New property FullWidth for the chart title and footer to run their background across the entire chart width.
  • 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.
  • New option aipInteger in the set TAxisIntervalParamOptions which sets axis labels only at integer values and thus supresses the unwanted intermediate labels in bar charts and helps to enforce labels in logarithmic plots at the powers of the logarithmic base (usually 10).
  • New event OnAddStyleToLegend for TChartStyles. It has a boolean parameter AddToLegend with which you can determine whether the series level using this style is displayed in the legend.
  • TDateTimePicker:
  • New properties MonthDisplay and CustomMonthNames. They are meant to replace the MonthNames property, which has been deprecated.
  • New property DecimalSeparator. Allows a user-specified value to be used instead of a hard-coded Colon character.
  • TDBDateTimePicker:
  • Adds Options as a published property.
  • Publishes the DecimalSeparator property.
  • Publishes the missing Alignment property. Consistent with TDateTimePicker,
  • T(Float)SpinEditEx:
  • New property Orientation which allows to arrange the spin buttons horizontally.
  • TCheckListBox:
  • Adds HeaderColor and HeaderBackgroundColor properties. Used on list items where the Header property is enabled. Implemented for the Win32 widget set.
  • 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 (https://www.rhsoft.de/).
  • License: Creative Commons CC0 (no restrictions in usage).
  • gir2pascal:
  • Sources of gir2pascal (a tool to convert GObject Introspection descriptions to Pascal files) are now included in Lazarus source tree (tools/gir2pascal directory) and maintained there.
  • lazdelphi:
  • An IDE addon adding a parser for the Delphi compiler errors and hints. You can run dcc32.exe as external tool or execute before command in the compiler options and use the Delphi Compiler parser for the output, so that the errors/hints in the Messages window can open the source. See Lazarus Delphi Compiler Tool
  • Jedi Code Format:
  • Some improvements in code formatting.
  • The jcf command line tool is now a text-mode application and no longer requires XWindow on linux to run.
  • DockedFormEditor:
  • In case you are still using the sparta docked form editor, use the dockedformeditor package instead.
  • Changes affecting compatibility:
  • IDE Settings:
  • Run > Run Parameters
  • The Working-Dir and the Launch-/Host-App can now be specified relative to the Project-Dir. As a result of this, and due to inconsistencies between "Run in debugger" and "Run without debug" some details of how those fields are resolved changed.
  • In some cases you may therefore have to adjust your settings.
  • The Working-dir is now determined as follows:
  • BuildMode.RunParams "working directory" set by user (New, this can now be relative to project dir / to get the "output dir" containing the exe: "$Path($(OutputFile))" )
  • Project Dir, if not virtual
  • Directory from Host-App (RunParams), or if (and only if) Host-App is empty from Project.exe (If host app is in %PATH, then there is no "working directory")
  • The first 2 steps are the same as before the change. The 3rd step was previously only used for "debugging", but "run without debug" did use: "Launch-App", "Host-App", Project.exe
  • Change:
  • The path of the "Launch App" is no longer considered
  • The Launch-/Host-App location are now determined as follows:
  • An app with absolute path is used as given
  • A relative path (including no path at all) is resolved as relative to the Project-dir.
  • An app without any path at all (if not found in step 2) is searched in the %PATH environment.
  • Change:
  • Search in %PATH was only done by "run without debug", but not by debug. It is now done by both.
  • Change:
  • Checking for an exe relative to the project-dir was added.
  • LCL incompatibility:
  • TLabel: autosized and right-aligned:
  • Old behaviour: Autosized label with Alignment=taRightJustify but Anchors=[akLeft,...] grew to left.
  • New behaviour: The label grows to right now.
  • Reason: It wasn't possible to implement the behavior also for hidden labels without significant extensions in the LCL. The LCL has a different and more generic feature of control-based anchoring that delivers the same effect (see Remedy down), so it is not needed and wanted to double this feature and make the LCL code more complex and prone to bugs.
  • Remedy: Use the LCL anchoring to a secondary control. Anchor the right side of the label to another control. Then the autosized label will grow to the left but won't move to the right when the parent is resized like it is done with a simple akRight anchor without a reference control.
  • TDateEdit/TTimeEdit:
  • The value of NullDate has changed.
  • Reason:
  • It was impossible to actually select the date corresponding to NullDate (30 dec 1899 by default) in the control.
  • Remedy (1): if your code depended on NullDate actually being 0.0, you have to adjust your code.
  • Remedy (2): if your code used NullDate for a TTimeEdit, change that to the new constant NullTime instead.
  • Note: NullDate is actually a writeable constant. This was kept for compatibility reasons. It is however a bad idea to change it's value to anything that is an actual date that is within the range of the control.
  • Cocoa:
  • Some global configuration variables were moved from CocoaInt to CocoaConfig. such as CocoaBasePPI, CocoaIconUse, CocoaToggleBezel, CocoaToggleType etc.
  • GTK3:
  • GTK3 is no longer supported on earlier Linuxes, such as Ubuntu 20.04. It requires GTK >= 3.24.24 and Glib2.0 >= 2.66
  • LazUtils:
  • 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.
  • 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.
  • Translations unit:
  • Added GetLanguageID function. It returns a record with language code (in ISO 639-1 or ISO 639-2) and country code (in ISO 3166) for current system locale.
  • Added GetLanguageIDFromLocaleName function. It parses Unix locale name and returns a record with language code and country code. It is useful to parse language identifiers passed e. g. via command-line parameters.
  • Implementation is based on GetLanguageIDs procedure from GetText unit, but is rewritten to have the following properties:
  • Language and country codes are always returned in ISO formats on Windows.
  • Unix locale identifier is properly parsed and language/country codes are properly extracted.
  • Don't assume that language code is always two-letter (ISO 639-1), it can have bigger length (e. g. three letters, like in ISO 639-2).
  • Locale ID is returned in a record type. This will allow to return additional fields in backwards-compatible manner in future. Currently it contains language code, country code and language ID (combination of language code and country code).
  • These functions are used now throughout the Lazarus codebase. This greatly improves automatic language detection and loading of correct translations by Lazarus:
  • Three-letter (ISO 639-2) language identifiers are no more truncated to two letters. Thus, translations for such languages will be correctly loaded when available.
  • Previously on Windows some language and country codes were obtained in non-ISO format, which prevented correct loading of some translations, e. g. Chinese (zh_CN).
  • On Unix translations with country codes, like Brazilian Portuguese (pt_BR) or Chinese (zh_CN) are correctly loaded now.
  • macOS is now handled as any other Unix. This removes dependency on language list in Lazarus bundle (which had to be maintained manually) and thus fixes loading of Czech, Hungarian, Brazilian Portuguese, Ukrainian translations.
  • LazUTF8 unit:
  • Deprecated LazGetLanguageIDs (returns combination of language and country codes) and LazGetShortLanguageID (returns only language code) procedures.
  • Reason: this functionality belongs to Translations unit (calls of these procedures are almost always followed by calls to procedures from Translations unit), and these procedures are now thin wrappers of GetLanguageID function from Translations unit.
  • Remedy: use GetLanguageID function from Translations unit.
  • LazUTF8Classes and LazUTF8SysUtils units:
  • Everything in these units was deprecated for a long time and now they were removed. LazUTF8SysUtils was earlier renamed to LazSysUtils and this deprecated version was left for a transit period.
  • Class TStringListUTF8 can be replaced with TStringList.
  • Class TMemoryStreamUTF8 can be replaced with TMemoryStream.
  • Global procedure LoadStringsFromFileUTF8 can be replaced with TStrings.LoadFromFile.
  • Global procedure SaveStringsToFileUTF8 can be replaced with TStrings.SaveToFile.
  • Functions NowUTC and GetTickCount64 can be found in LazSysUtils.
  • Components incompatibility:
  • LazControls:
  • TSpinEditExBase derived classes:
  • All derived classes form TSpinEditExBase must implement a SameValue method. This method is defined as an abstract method in TSpinEditExBase.
  • Reason: All derived classes used Math.SameValue. This is wrong for comparing integer types (even if is is safe when comparing relative small values).
  • Remedy: unfortunately you'll have to adjust your code.
  • 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.
  • FpVectorial:
  • The Size element in the FPVectorial TvFont record is a floating point value now (type double).
  • Reason: Avoid rounding errors because the drawing coordinates are double already.
  • Remedy: There is rarely a chance that this change will have an effect on user code. Only when the font size is stored in a variable it must be declared as double rather than as integer.
  • TurboPower_ipro:
  • Type declarations and the html nodes were moved from unit IpHtml to separate units, IpHtmlTypes, IpHtmlClasses and IpHtmlNodes. This may break compilation of existing projects.
  • Reason: Improve maintainability of the extremely long unit IpHtml
  • Remedy: Add IpHtmlTypes, IpHtmlClasses and/or IpHtmlNodes to the uses clause of the project unit(s) when an "identifier not found" error referring to this package is reported by the compiler.

New in Lazarus 2.2.0 (Jan 7, 2022)

  • LazUtils Changes:
  • 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
  • Masks unit:
  • An mechanism to disable sets in a specified mask is implemented. For this purpose a new parameter Options: TMaskOptions is introduced. Specifying moDisableSets in the Options parameter will disable interpreting '[' as the begin of a set in the specified mask.
  • Example: MatchesMask('[x]','[x]',[moDisableSets]) will return True.
  • LazFreeType:
  • Freetype font rendering units were moved to a package of its own "components/freetype/freetypelaz.lpk"
  • Reason: Units have grown to an impressive number
  • PasWStr unit removed:
  • The PasWStr unit has been removed.
  • Reason: it contained functional code only if the compiler was pre 3.0.
  • Remedy: remove PasWStr from your uses clause.
  • LCL Interfaces Changes:
  • Internal component registration and TLCLComponent.NewInstance was optimized:
  • LCL components are registered and mapped to a widgetset by TLCLComponent.NewInstance. This is an undocumented implementation detail and should not affect any components outside of LCL itself. However some external components could support widgetsets the same way. Then "class procedure WSRegisterClass; override;" is needed having a call to "RegisterWSComponent()". It was added to component OpenGlContext in trunk r63636. Please use it as an example if needed.
  • Widgetsets:
  • Qt5 widgetset needs libQt5Pas v 1.2.8 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).
  • Qt5 added QLCLOpenGLWidget into libQt5Pas v.1.2.8 for full OpenGL component support.
  • Qt, Qt5 and Gtk2: Form dimensions are accurate now on x11 (frame around form).
  • Solution is provided by creating dummy widget before Application.MainForm.Handle is created. This can be disabled via command line switch "-disableaccurateframe". This feature is used inside WidgetSet.GetWindowRect() only.
  • Qt and Qt5: Form dimensions are accurate now on MS Windows and macOS.
  • This is accomplished by creating winID if form isn't mapped yet inside WidgetSet.GetWindowRect().
  • LCL Changes:
  • 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
  • TValueListEditor:
  • Old behaviour: having the current NameValueSeparator (by default: '=') in the Key column was allowed.
  • New behaviour: you cannot have a NameValueSeparator in the Key column. If you type the NameValueSeparator in the Key column, the focus will move to the Value Column. If you paste it into the column, it will be removed (without any feedback or warning).
  • Reason: By design a Key can never have a NameValueSeparator in it. Having it there causes havoc. See this forum post.
  • Note: This new behaviour is not Delphi compatible (which is a conscious design decision), Delphi raises an exception if you try to type or paste a NameValueSeparator in the Key column.
  • Revision: r64089 and r64090.
  • TShellTreeView:
  • New event OnAddItem gives possibility for finer control over what to add to the tree.
  • Shell icons are displayed automatically in Windows when no imagelist is attached and when UseBuiltInIcons is true.
  • TShellListView:
  • 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.
  • Shell icons are displayed automatically in Windows when no imagelist is attached and when UseBuiltInIcons is true.
  • New Screen temporary cursor:
  • Screen has new methods:
  • BeginTempCursor / EndTempCursor
  • BeginWaitCursor / EndWaitCursor
  • BeginScreenCursor / EndScreenCursor
  • These should be used for temporary cursor changes instead of setting the Screen.Cursor property directly. They ensure that valid cursor values are restored.
  • TMaskEdit:
  • New property ValidationErrorMode to allow not raising an exception when validation fails, but instead firing an OnValidationError event.
  • New property EnableSets to allow specifying sets in the EditMask property.
  • TGroupBox, TRadioGroup, TCheckGroup:
  • Old behaviour Win32: You could set property Color and it was directly displayed.
  • New behaviour Win32: If you want to change the color, you have to set ParentBackground := False;
  • Reason: TGroupBox and TRadioGroup are now transparent like in Delphi (Delphi does not have a TCheckGroup). See Issue #37151
  • TFrame:
  • Old behaviour Win32: You couldn't change the color of TFrame.
  • New behaviour Win32: If you want to change the color, you have to set ParentBackground := False;
  • Reason: Default TFrame is transparent, but you can change the color if you want. See Issue #35229
  • T(Float)SpinEdit:
  • New property EditorEnabled to disable direct user input in the edit. If set to False, users can only change the value by using the spinners or the arrowkeys.
  • TListBox:
  • Old: ScrollWidth always was received from OS.
  • New: If ScrollWidth is set, this value is taken. If default 0 is set, at runtime the ScrollWidth is received from OS.
  • Reason: Enabling of ScrollBar. See Issue #19079
  • IDE Changes:
  • 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
  • Buttons for closing pages on the left, right and others in Search Results window
  • An options page "Environment > IDE Startup" in the IDE Options dialog. Allows selecting a project type to be created when the IDE starts.
  • Object Inspector
  • Keep Expanded/Collapsed states in the component tree after adding or deleting a component or changing Z-order.
  • Remember Expanded/Collapsed states in the component tree when switching between designer forms.
  • Editor window for collections, like Fields, Columns, Params etc. shows now collections of same type when switching between controls of same class.
  • Project Inspector
  • GUI for Min / Max version of a package requirement, similar what the Package Editor has.
  • Editor
  • Added commands (key-shortcut) for
  • Swap line/selection up/down (selection is extended to full lines)
  • Duplicate line/selection (selection is extended to full lines)
  • Copy/Cut append to clipboard (with space separator, unless already present)
  • Copy/Cut (append) line/selection to clipboard (selection is extended to full lines, and also always includes line with caret)
  • Option to prevent Select-All/Paragraph/ToBrace from scrolling
  • Identifier Completion to trigger on any input, not just on dot. (Optional, must be enabled first)
  • 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
  • Reasons:
  • .pot is an '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).
  • 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.
  • Designer
  • Change background color of non form designer to clWindow. Color is now changeable per option.
  • Remove environment option "Reduced designer painting" to prevent painting artefacts. See Issue #23741 or Issue #33781
  • Package Manager
  • When creating new package or component, suggested name is not localized anymore (always 'NewPackage' for every language). This change prevents crashes on attempt to create a new package when IDE interface language has non-latin alphabet.
  • macOS: relocation of the Lazarus IDE "Lazarus > Tools > Options" menu to "Lazarus > Preferences".
  • Debugger:
  • LazDebugger-FP (FpDebug) v1.0 is now the default for new installations on Windows and Linux. Users with existing config should change their settings.
  • GDB(mi): comes now with gdb version 9.2 modified for use with unicode. (for 32 and 64 bit)
  • GDB(mi) Debugger: Stepping from exception to finally/except now works under Win64 SEH. (Requires updated GDB)
  • GDB(mi) Debugger: Updated GDB for Win64 to 8.2
  • GDB(mi) Applying a condition to a breakpoint will now mark the breakpoint as invalid, if gdb does not accept the condition. The breakpoint may still break (or not), but the condition was not set.
  • Debugger Config: The IDE now provides the ability to set up different debugger-configs as named profiles.
  • "Run to Cursor" in addition to the existing "Step over to Cursor", the debugger (gdbmi/fpdebug) now provide "Run to Cursor".
  • Components:
  • OpenGL: full support for Qt5 widgetset
  • AnchorDocking:
  • New button to minimize a docked site.
  • Allow ManualDock for target AnchorDockPanel.
  • New option "Multiline Tabs" for docked pages added.
  • New option "Floating windows on top" added. If there are undocked windows shown, show these on top of main window. In a own application, there can be set DockMaster.MainDockForm, then all floating windows are shown on top of it. If MainDockForm is not set, Application.MainForm is used.
  • AnchorDocking can load layouts HighDPI aware
  • Spotter:
  • New IDE addon, showing a search list of all IDE commands.
  • TAChart:
  • 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.
  • New property "Wordwrap" for chart axis titles as well as chart title and footer.
  • New series type "TPolygonSeries" which draws a filled closed polygon. Can be the basis of GIS and contour plots.
  • Property editor for TSeriesPointerStyle.
  • TBarSeries:
  • New property "BarShape" for drawing alternative shapes (cylinder, hexagonal prism, pyramid or cone) instead of rectangular bar.
  • TPieSeries:
  • 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 chart (donut).
  • 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.
  • New property "AngleRange" to define tha total angular range between first and last 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 and/or titles).
  • New component "TChartLiveView" which represents a scrolling viewport for a large amount of data arriving by and by.
  • TSpinEditEx:
  • New property "ThousandSeparator" to allow displaying the value with thousandseparators inserted.
  • TFloatSpinEditEx:
  • Entering text in scientific notation (e.g. "1.23E3") is now supported.
  • New property DisplayMode that controls in wether or not to use scientific notation. If set to dmAuto the following new properties control how the value is displayed:
  • Property ExponentialFormatLimitPos controls from which positive exponent on scientific notation is used for displaying.
  • Property ExponentialFormatLimitNeg controls from which negative exponent on scientific notation is used for displaying.
  • New property Precision controls the precion used when value is displayed in scientific notation.
  • DockedFormEditor:
  • New package DockedFormEditor added. For more info see DockedFormEditor.
  • Replacement for Sparta_DockedFormEditor. All Sparta packages are now marked as deprecated and will be removed in a future Lazarus version.
  • Optional Anchor Designer included.
  • Jedi Code Format:
  • Various improvement for the parser. It now supports most modern Object Pascal syntax.
  • Changes affecting compatibility:
  • LazUtils:
  • PO files:
  • Trailing lineendings are not forcibly added to multiline strings in PO files anymore. Now multiline strings in PO files match exactly corresponding resource strings.
  • Reasons:
  • 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.
  • LConvEncoding:
  • Global variable ConvertEncodingErrorRaisesException replaced with ConvertEncodingErrorMode
  • UITypes unit is deprecated:
  • The UITypes unit is deprecated in favor of System.UITypes, which is available in FPC 3.2.0 and up.
  • Reason: System.UITypes is a superset of UITypes and contains some additional constants (Delphi-compatible).
  • Remedy: Use System.UITypes unit instead of UITypes unit in your programs.
  • LCL incompatibilities:
  • 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 ''.
  • TMaskEdit: 'C' in EditMask now actually means a character (other than blank) is needed:
  • Old behaviour: both 'c' and 'C' in EditMaks were treated as "any Utf8 char but not necessary".
  • New behaviour: 'C' is now treated as "any Utf8 char, but NOT SpaceChar".
  • Reason: Delphi compatibility.
  • Remedy: use 'c', not 'C', if any character (including SpaceChar) should be accepted.
  • TMaskEdit: Validate takes in account Upper- and LowerCase for 'c' and 'C' in EditMask:
  • Old behavior: upper- or lowercase was checked (if so specified by '>' or '<' in EditMask) for 'a', 'A', 'l', 'L', 'h' and 'H', but not for 'c' and 'C'.
  • New behaviour: upper- or lowercase is now also checked for 'c' and 'C'.
  • Reason: consistency.
  • Remedy: if you need the old behaviour, insert '<>' before 'c' or 'C'.
  • TCanvas.PolyBezier default behavior:
  • The default value of the Continuous parameter was changed because it breaks Delphi compatibility.
  • Old behavior: There are several overloads and optional parameters of the canvas' PolyBezier method. In the Delphi-compatible call having only the points array as a parameter, the Continuous argument has the default value false.
  • New behavior: The argument Continuous has the value true now.
  • Reason: The Delphi PolyBezier behavior is different from the Lazarus behaviour with the same call parameters; it draws the Bezier curve like Lazarus using Continuous = true.
  • Remedy: To obtain the old behavior expand the parameter list by the Continuous parameter set to false.
  • TImageList stores compressed images in LFM:
  • Old: TCustomImageList stored binary bitmap data of the base resolution.
  • New: The binary bitmap data streamed to LFM is compressed with ZLib.
  • Reason: smaller LFM and EXE files.
  • Effects: Lazarus 1.8 cannot open LFMs with a TImageList from Lazarus 2.2. Lazarus 2.0 can open them.
  • Remedy: If you want to open a Lazarus 2.2 project in Lazarus 1.8, you first have to open it in Lazarus 2.0, open all forms containing LFMs with a TImageList and resave them. Then you can open these resaved LFMs in Lazarus 1.8.
  • TCalendar: option dsStartMonday of DisplaySettings replaced by Delphi-compatible FirstDayOfWeek property:
  • Old behavior: Changing the start day of a week to Monday works only in QT and QT5 widgetsets. And even there it does not allow for other weekdays like Saturday as needed for the Arabian world. Moveover the option is not compatible with Delphi which uses a separate property FirstDayOfWeek.
  • New behavior: The option dsStartMonday has been removed, use the property FirstDayOfWeek instead. It allows switching to other weekdays as well. The default option, dowDefault, makes the weeks begin with the day defined by the widgetset/OS - which is the old behavior in those cases where dsStartMonday did not work.
  • Reason: Improved Delphi compatibility, more than two weekdays should be allowed as start of the week.
  • Remdy: In most cases dsStartMonday probaby has not been set because it did not work. If it was set, ignore the property when reading (or remove the line dsStartMondy = true from the lfm file), and set FirstDayOfWeek to dowMonday in the Object Inspector.
  • Note 1: The FirstDayOfWeek property is still not supported by all widgetsets. It is respected only for win32, qt and qt5.
  • Note 2: The name of the default option of FirstDayOfWeek, dowDefault, is not exactly Delphi-compliant (dowLocaleDefault) because a "Locale" does not exist in all widgetsets. Since the default value is not stored anyway this incompatibility may be tolerable.
  • TRadioGroup's OnEnter and OnExit events:
  • Old behavior: The OnEnter and OnExit events are triggered by TRadioGroup when another item is selected. As a consequence, these events fire twice when the control receives or loses focus. This is against Delphi behavior.
  • New behavior: New events OnItemEnter and OnItemExit were added; they fire when the ItemIndex changes and carry the corresponding radiobutton in the Sender parameter.
  • Reason: No logical behavior; Delphi compatibility.
  • Remedy: Ony applications evaluating these events for the internal selection change are affected. The new events OnItemEnter and OnItemExit should be used instead.
  • ShortcutToText / TextToShortcut:
  • Old behaviour:
  • the textual representation of the VK_OEM_PLUS was '+'.
  • the result of TextToShortcut('+') was 187.
  • the result of TextToShortcut('=') was 0.
  • New behaviour:
  • the textual representation of the VK_OEM_PLUS now is '='.
  • the result of TextToShortcut('+') is now 0.
  • the result of TextToShortcut('=') is now 187.
  • Reason: Delphi compatibility.
  • Remedy: change any shortcuts with value '+' to '='
  • TTabControl / x,y in mouse-events (move,down,up,drag) and IndexOfTabAt:
  • Old behaviour
  • When the mouse was over the tab, the x/y params to any mouse event where given relative to the embedded PageControl.
  • For the remaining ClientArea x/y were relative to the TabControl
  • I.e. X/Y over the tabs where: Negative values for tabs on top / 0..20 for tabs on bottom
  • This meant that the same x/y in a TabControl could be received for the mouse over a header (tabs at bottom) and the mouse in the client area. (Y=0 to Y=approx-20 did exist twice)
  • IndexOfTabAt did expect the x/y as given in the event. ScreenToClient(Mouse.CursorPos) could not be used, as it always returned x/y relative to the TabControl, and never relative to the embedded PageControl
  • New behaviour
  • All X/Y are reported relative to the TabControl. There are no longer any negative values for Y.
  • IndexOfTabAt expects coordinates relative to the TabControl
  • Reason:
  • This fixes ambiguity for X/Y value that could occur twice
  • IndexOfTabAt can now accept the event-X/Y as well as the ScreenToClient(Mouse.CursorPos)
  • Remedy:
  • If you called IndexOfTabAt with the event X/Y => all keeps working
  • If you did any amendments to any X/Y (other than calling ClientToScreen), that is if you added/subtracted some constant to "make them work" => remove your workaround
  • See also
  • https://bugs.freepascal.org/view.php?id=38403
  • Cocoa: https://bugs.freepascal.org/view.php?id=38553
  • Conversion of 'n' sequences in LCLTaskDialog.TTaskDialog:
  • Old behaviour:
  • 'n' sequence was converted to linefeed in the following fields: Title, Inst, Content, Verify, Info, InfoExpanded, InfoCollapse, Footer.
  • New behaviour:
  • 'n' sequence is no longer converted to linefeed in these fields.
  • Reason: Conversion of 'n' to linefeed mangled strings like
  • 'Save "c:new_foldernew.work"?'
  • Remedy: replace 'n' sequences which should be converted to linefeeds with LineEnding constants, i.e. instead of
  • 'Line1nLine2'
  • use
  • 'Line1'+LineEnding+'Line2'
  • See also https://bugs.freepascal.org/view.php?id=38676
  • TScrollingWinControl.ScrollInView and successors (e.g. TScrollBox, TForm):
  • Old behavior: Scrolling of a control in view was possible without ScrollBars visible.
  • New behavior: Scrolling of a control in view is only possible when ScrollBar is visible.
  • Reason: A scrolling feature is only with ScrollBars usefull. Also some controls are painted wrong, when no scrollbar is visible.
  • See also
  • https://bugs.freepascal.org/view.php?id=38838
  • https://forum.lazarus.freepascal.org/index.php/topic,54354
  • TColorDialog.Title:
  • Old behavior: On Windows, the Title of the TColorDialog was ignored and painted by the OS as the localized text "Color".
  • New behavior: Now the Title property of the TColorDialog is used like in other widgetsets. The default title is the unlocalized text "Select color" which can be considered to be inconsistent in localized applications.
  • Reason: An unused property is always confusing to the users.
  • Remedy: Enter the Title manually when an application requires the localized native title, or use the translation utilities to translate the LCL resource strings.
  • Components incompatibilities:
  • 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.
  • DataPointDrawTool.OnDraw event 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.
  • TChartAxis.OnMarkToText event deprecated:
  • The event OnMarkToText of the chart's axes will be removed and replaced by the new event OnGetMarkText.
  • Old behavior: The old OnMarkToText event does not have a Sender parameter.
  • New behavior: The new OnGetMarkText event has the affected axis as Sender parameter.
  • Reason: When dealing with multiple charts and/or multiple axes, it is currently required to create an individual handler for each axis because it is not possible to determine the axis for which to create axis marks for. This is not required any more with the new event.
  • Remedy: Copy the old OnMarkToText handler code to the new OnGetMarkText handler.
  • OpenGL-related units moved to separate packge TAChartOpenGL:
  • 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.
  • Chart colors changed:
  • Old behavior and reason: Some chart elements had hard-coded rgb colors, such as Chart.Title.Font.Color = clBlue, or ChartAxis.TickColor = clBlack. Therefore, these elements could hardly be discerned when the system runs in "dark mode".
  • New behaviour: Such critical colors are system colors now which have a decent appearance in both dark and bright mode
  • Remedy: If the old colors are really needed reset them in the object inspector.
  • 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).
  • SynEdit:
  • SynEdits TextView system has undergone some changes. TextViews (TSynEditStrings) map the physical text (as saved/loaded to/from a file) to what is visible on the screen.
  • This also affects the coordinate system. In addition to Logical/Physical SynEdit now also has ViewedXY. "Viewed" also maps the Y coordinate.
  • SynEdit.TextView / TSynEditFoldedView:
  • The protected property SynEdit.TextView is no longer of type TSynEditFoldedView. It may hold any other TextView-class instead.
  • Old behaviour: TSynEditFoldedView was accessible via SynEdit.TextView
  • New behaviour: SynEdit.TextView can be any TextView
  • Remedy: SynEdit.TextViewsManager.SynTextViewByClass[TSynEditFoldedView]
  • Class hierarchy
  • TSynEditFoldedView is now a TSynEditStrings.
  • TSynEditFoldedView.Lines/Count
  • Old behaviour: Lines/Count referred to visible lines only
  • New behaviour: Lines/Count referred to al lines.
  • Remedy: Use ViewedLines / ViewedCount
  • Mapping
  • Old behaviour: TextToViewIndex/ViewToTextIndex => ViewPos was 1 based
  • New behaviour: TextToViewIndex/ViewToTextIndex => ViewPos was 0 based
  • Remedy: Use ToPos() / ToIdx()
  • Old behaviour: TextPosAddLines with 1 based lines/result
  • New behaviour: AddVisibleOffsetToTextIndex with 0 base lines/result
  • Remedy: Rename and use ToPos() / ToIdx()
  • Callbacks
  • Old behaviour: AddFoldChangedHandler was reporting changes to folding.
  • New behaviour: AddChangeHandler(senrLineMappingChanged)
  • senrTextBufferChanging / senrTextBufferChanged:
  • Callbacks on the TextView/TextBuffer were only valid for the current Buffer. If SynEdit shared/unshared the textbuffer, then all handlers needed to be re-registered.
  • This is no longer needed.
  • ScreenRowToRow/RowToScreenRow => ScreenXYToTextXY/TextXYToScreenXY:
  • ScreenRowToRow/RowToScreenRow were deprecated, use ScreenXYToTextXY/TextXYToScreenXY
  • The new functions take a point, instead of just a line/row. This reflects the idea that a single text-line can visible occupy several lines. Or mapping can otherwise relay on the x pos, depending on whatever TextViews are used.
  • RowColumnToPixels => ScreenXYToPixels
  • RowColumnToPixels is deprecated, use ScreenXYToPixels
  • SynEditExport:
  • Old behaviour: TSynCustomExporter.ExportRange raised an EAbort exception when ALines or Highlighter is unassigned, or when the content of the range to be exported was in fact empty.
  • New behaviour:
  • A verbose exception (ESynExport) is raised when either ALines or Highlighter are unassigned.
  • No exception is raised if the range to be exported is empty, it will simply export nothing in that case.
  • Reason:
  • Raising EAbort if the range to be expoterd is empty doesn't really make sense, at least it should not be forbidden.
  • Not having a Highlighter or not having Lines is a critical error, and as such must raise a verbose exception.
  • Remedy: if your code relied on this behaviour (rasing EAbort), you will have to adjust it.
  • T(Float)SpinEditEx.ReadOnly now also disables the use of arrowkeys:
  • Old behaviour: if ReadOnly is True, the value of the control could still be changed using the up or down arrow keys.
  • New behaviour: if ReadOnly is True, the value of the control cannot be changed using the the up or down arrow keys.
  • Reason: internal consistency and consistency with T(Float)SpinEdit.
  • Revision: r64952.
  • T(Float)SpinEdit(Ex) default value for MaxValue changed:
  • Old behaviour: the default value of MaxValue was 100
  • New behaviour: the default value for MaxValue is 0. As a consequence the control is no longer "limited" by default.
  • Reason: compatibility with Delphi's TSpinEdit.
  • Remedy: in Object Inspector set MaxValue to 100 (if so desired) and re-save the form.
  • Revision: r64969, r64972
  • T(Float)SpinEditEx MaxValue is no longer enforced to be >= MinValue:
  • Old behaviour: if you set MaxValue to a value less than MinValue, MaxValue got the same value as MinValue.
  • New behaviour: MaxValue is allowed to be less than MinValue.
  • Reason: old behaviour cased bugs in loading.
  • Remedy: if your code depended on the old behaviour, you'll have to adjust is.
  • Note: since the control is only "limited" if MaxValue > MinValue, it should not really make a difference.
  • Revision: r65065.
  • TSpinEditExBase: call to abstract method SameValue in descendent classes (FPC 3.2.2 only):
  • Old behaviour: The component used Math.SameValue to compare two values. FPC 3.2.2, however, sometimes refuses compilation because it cannot determine which one of the many overloads of Math.SameValue should be used.
  • New behaviour: The component has its own method SameValue now. It had to be declared as abstract to keep compilation with FPC 3.2.0 and older. Therefore, all descendants of TSpinEditExBase must override this method.
  • Remedy: If your descendent class of TSpinEditExBase reports a runtime error "abstract method called" you must implement the method SameValue for it, based on the data type specializing the generic data variable. It is needed only for FPC 3.2.2.
  • Note: This issues only affects third-party components descending from TSpinEditExBase.
  • Introduced by revisions https://gitlab.com/freepascal.org/lazarus/lazarus/-/commit/182cc8b8e6d6a671eb62f7177ff86ee948814de8 and https://gitlab.com/freepascal.org/lazarus/lazarus/-/commit/7f45938388be4b3ee50b2cd1ed1d04d991f92143
  • TLabel: DoMeasureTextPosition removed, added DoDrawText instead:
  • Old behavior: TCustomLabel had the DoMeasureTextPosition virtual method that allowed to set the X/Y position of the text.
  • New behavior: TCustomLabel now has the DoDrawText virtual method that allows to override the whole text painting and automatic sizing of the label.
  • Reason: It is now possible to override the painting/sizing the label with own text drawing routine, which wasn't easily possible before. Now the TLabel is also Delphi-compatible.
  • Remedy: if your TCustomLabel descendant used to override DoMeasureTextPosition, it needs to override DoDrawText now and handle the whole paint process.
  • Note: This issue only affects third-party components descending from TCustomLabel. See more info: https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39523#note_798080430
  • IDE incompatibilities:
  • LPI&LPS project files: XML structure changed:
  • Old behavior: Child elements had an index suffix.
  • New behavior: Child elements have no suffix.
  • Problems: New LPI files cannot be opened in legacy Lazarus installations.
  • Reason: VCS like the new structure better.
  • Remedy: Save your LPI files in compatibility mode. (Project options -> Miscellaneous -> Maximize compatibility of project files). Users of old Lazarus versions can convert the file format by means of the fixlp utility.
  • LPK package files: XML structure changed:
  • Old behavior: Child elements had an index suffix.
  • New behavior: Child elements have no suffix.
  • Problems: New LPK files cannot be opened in legacy Lazarus installations.
  • Reason: VCS like the new structure better.
  • Remedy: Save your LPK files in compatibility mode. (Package options -> Usage -> Maximize compatibility of package file). Users of old Lazarus versions can convert the file format by means of the fixlp utility.
  • Packages incompatibilities:
  • ProjectGroups: LPG XML structure changed:
  • Old behavior: The <Mode?> elements were not placed within the <BuildModes> element. Child elements had an index suffix.
  • New behavior: Child elements have no suffix.
  • Problems: New LPG files cannot be opened in legacy Lazarus installations.
  • Reason: VCS like the new structure better.
  • Remedy: There is no.

New in Lazarus 2.0.12 (Mar 10, 2021)

  • Fixes for 2.0.12 (merged):
  • r61736 Try to minimize (NOT a fix) the risks of TProcessUtf8 crashes. Crash introduced in r50595 for Issue #28991.
  • r63531 lhelp: fixed updating default title after filling content nodes
  • r63563 LazUtils: Delete very old code for TProcessUTF8 that was needed for FPC 2.x.
  • r63564 make install: check if LAZARUS_INSTALL_DIR already set, Issue #37356
  • r63568 make install: added source extension, issue 37364
  • r63584 LazUtils: Don't override TProcess.Execute for TProcessUTF8 starting from FPC 3.2. Issue #35991.
  • r63596 LCL: Prevent DBGrid raising exception after enabled and hiding inplace editor. Issue #37385.
  • r63620 startlazarus: cocoa: do not use open -a, execute bundle exe, else menu is not visible
  • r63627 Codetools: Find form's ancestor also when a generic form is specialized. Issue #37396.
  • r63645 IDE: make lazcontroldsgn a base package, issue 37412
  • r63675 codetools: search unit first in current directory, issue 37466
  • r63708 TUTF8Process: workaround for the poNoConsole->poDetached change. Better hacks for old FPC versions without TProcessClassTemplate. Issue #35991.
  • r63714 Translations: Slovak translation update by LacaK, Issue #37531
  • r63721 fpvectorial: Fix possible word overflow in wmfVectorialWriter.PrepareScaling
  • r63732 LCL-GTK2: Apply DisplaySettings properties of TCalendar also during runtime. Issue #37450.
  • r63788 IDE: Update "search results" scrollbars after filling the tree. Issue #37582.
  • r63795 SpinEx: don't call inherited KeyPress twice in TCustomSpinEx.KeyPress.
  • r63797 IDE, LCL: Fix the search results scrollbar issue in a generic way in TreeView. Issue #37582.
  • r63802 MenuEditor: Prevent assertion failure when separator selected, right click, "Remove all separators". Issue #37595.
  • r63803 MenuEditor: Update menuitems correctly when adding or removing separators. Issue #37595.
  • r63897 LCL-GTK2: Improve setting a shaped form. Issue #30385.
  • r63902 LCL-GTK2: Initialize a record in LCLIntfCellRenderer_CellDataFunc. Prevents a crash. Issue #37781.
  • r63908 IDE: line ending CR call Classic Mac, issue 37800
  • r63926 LCL: Fix ofAutoPreview of TOpenPictureDialog. Issue #37820.
  • r63934 EditButton: implement OnContextPopup.
  • r63935 EditButton: publish OnContextPopup. Patch by Reinhard Kalinke. Issue #0037832.
  • r63939 IDE: Fix a crash if IDE is aborted before updating configuration.
  • r64003 LCL-GTK2: Prevent "critical" messages generated by TabControl Tabs. Issue #37924.
  • r64005 Prevent occational crash in external tool threads with Sleep(1), especially with LazBuild. Issue #37883.
  • r64070 IDE: Don't cut a dotted TargetFilename when adding an extension to it. Issue #34665.
  • r64085 lazwiki: fixed compile with fpc 3.2
  • r64130 LCL-GTK2: Fix drawing of text region in TListView and others. Issue #38062.
  • r64142 LCL: Do not call TTreeView.OnCollapsing and OnCollapsed during clearing the items. Issue #38084.
  • r64165 LCL: Propogate TAction.ImageIndex to TSpeedButton.ImageIndex. Issue #38135.
  • r64167 LCL-GTK2: Paint a form with one color also after scrolling. Issue #16183.
  • r64168 LCL/CheckGroup: Fix items and checkboxes getting out of sync upon Items.Insert. Issue #38157.
  • r64169 Win32: document that setting TComboBox.BorderStyle to bsNone is not supported. Issue #0038126.
  • r64195 LCL/Grids: Fix grids truncating cell height during editing if TitleFont.Size is smaller than Font.Size. Issue #38203.
  • r64199 IDE: Prevent an infinite loop when comparing files. Issue #38185.
  • r64211 LCL/FileListbox: Update selected filename when ItemIndex is set
  • r64267 LCL: Fix selected items of TComboBoxEx and TCheckComboBox not being painted with color clHighlightText.
  • r64307 ProjectTemplates: Use the template.lpi file for a new project. Issue #38244.
  • r64353 TAChart: Fix too thick connection line between stacked bars.
  • r64377 LCL-GTK2: Fix SpeedButton when non-modal form is opened by popup menu. Issue #38345.
  • r64379 TAChart: Fix usage of incorrect drawing backend in OnAfterCustomDrawBackwall (https://www.lazarusforum.de/viewtopic.php?f=18&t=13347).
  • r64403 TAChart: Fix TBarSeries drawing too thick bar border line when Margin is 0.
  • r64414 IDE: Load Desktop options correctly from environment. Issue #38376.
  • r64430 LCL-GTK2: Fix SpeedButton freeze after closing popup menu without choosing menu item. Issue #38401.
  • r64513 Publish OnContextPopup and OnResize for some controls to improve Delphi compatibility or compatibility with related controls. Issue #38453, based on patch by Reinhard Kalinke.
  • r64605 TValueListEditor: raise an exception when setting RowCount < FixedRows.
  • r64617 TMaskEdit: workaround for infinite loop in SetEditText (issue cause by compiler bug). Issue #0038505.
  • r64622 SynEdit: publish OnContextPopup, OnResize. Issue 038511
  • r64625 MaskEdit: only use the workaround for issue Issue #0038505 (r64617) if compiler version < 3.2.2.

New in Lazarus 2.0.2 (Apr 16, 2019)

  • Fixes for 2.0.2:
  • r59037 cocoa-opengl: removing lclIsHandle method override, as no longer used by cocoa ws
  • r59186 LCL: TPageControl: Focus first control on page when page is changed and a control on it was focused. Issue #33991
  • r59338 LCL: wince: cosmetic + small optimization align code to Win32 implementation. Bug #30117
  • r59349 LCL: wince: remove selecting all text when focussing a TCustomEdit, this can be down in the LCL by setting TCustomEdit.AutoSelect := true (same as in win32 in rev. 15588). Bug #23345
  • r59354 LCL: wince: comment about WM_NCDESTROY message which is not supported on WinCE (bug #24452) and commented code which emulates double click (bug #20568)
  • r59355 LCL-WinCE: cosmetic
  • r59676 LCL-WinCE: attempt to fix incorrectly computed window size in GetWindowSize (Borders of window are not correctly subtracted). Bug #25966
  • r60025 TAChart: Fix compilation by FPC trunk after r40785.
  • r60064 LCL-GTK2: Prevent Clipboard.AsText crashing. Issue #34795
  • r60081 LCL: fixed regression from r59186. Issue #34870
  • r60217 LCL: Grids, Fix crashes if rows/cols are reduced and editor was active in removed grid area. Hide the Editor if cell no longer exists (same as in DeleteRow). Issue #0034930
  • r60229 TAChart: Combine {$hints on} and {$warnings on} with {$push} and {$pop}
  • r60309 TAChart: Improvements in TChartAxis.EnsureGuaranteedSpace(). Issue #34896. Patch by Marcin Wiazowski.
  • r60310 TAChart: Fix font scaling of CanvasDrawer.
  • r60311 TAChart: Prioritize Chart.MinDataSpace when plot size is too small. Issue #34896. Patch by Marcin Wiazowski.
  • r60325 LazDebugger(Fp)Lldb: Fix stepping in the correct thread
  • r60326 TAChart: Fix bar series not showing bars with values < 1 Issue #34863.
  • r60333 synedit: fixed CompareBinary for Length(s2) > l
  • r60334 TAChart: Improved initialization of scaling transformation. Issue #34896, patch by Marcin Wiazowski.
  • r60336 TAChart: Publish standard property Constraints Issue #35010
  • r60337 LCL: GTK2: Fixed when hovering the mouse cursor over TMemo component at runtime, mouse cursor wont change to text cursor. Issue #34976
  • r60338 FpDebug, LazDebuggerFpLldb: prevent reading invalid memory (int overflow of Addr+Size) / this fixes crashes due to incorrect cache matches
  • r60340 LCL: TCheckBox: Fixed application crashes before the form is showing. Issue #35018
  • r60342 Debugger: Register Window, fix updating register values. Broken in some cases since r60049
  • r60348 IDE: project version info: fixed CharSetCompare, issue 35021
  • r60351 TAChart: Add property UseZeroLevel to TBarSeries in order to make it behave like TAreaSeries on linear and logarithmic axes Issue #34863.
  • r60352 TAChart: Improved determination of series marks' direction. Issue #35025. Modified patch by Marcin Wiazowski.
  • r60362 LazUtils: Fixed wrong offsets in free type font subclips. Issue #35036. Patch from Ondrej Pokorny
  • r60363 LazUtils: Missing TFPImageFreeTypeDrawer.DrawGlyph added. Issue #35032. Patch from Ondrej Pokorny
  • r60364 LCL: Make IntfGraphics DisableLCLTIFF aware. Issue #35038. Patch from Alexey T.
  • r60365 IDE: SourceEditor: Assigning icons to four items of source editor menu. Issue #34987. Patch from FTurtle
  • r60404 LazDebuggerLldb: Add default lldb exe path (*nix)
  • r60412 LazDebugger(Fp)Lldb: fix thread/frame for watch eval.
  • r60413 LazDebugger(Fp)Lldb: fix stackframe when switching between threads
  • r60419 LazDebugger(Fp)Lldb: fix select correct thread at breakpoint
  • r60431 LazDebuggerFpLldb: fix correct context for eval in thread.
  • r60444 IDE: Parse and update compilation tool commands correctly. Issue #35059
  • r60469 Debugger: PseudoTerminal, do not close the handle while app is still debugged.
  • r60470 LazDebugger(Fp)Lldb: Option to force open a terminal when debugging
  • r60473 LazDebuggerGdbmi: refactor detection of gdb internal error. Move code to main debugger class.
  • r60474 LazDebuggerGdbmi: Detect internal gdb errors, while waiting for run/step to end.
  • r60476 LazDebuggerFp: Prevent crash for unimplemented dwarf-tags (e.g. tag_interface). See issue 35129
  • r60479 codetools: fixed parsing generic class function and generic function after type section
  • r60535 IDE: fixed checking type of compiler (fpc/pas2js), fixed quoting compiler filename, improved error handling
  • r60536 IDE: rescan compiler defines: show default compiler error
  • r60537 IDE: show compiler options: quote compiler filename
  • r60538 codetools: IsCompilerExec: error if neither fpc nor pas2js
  • r60539 IDE: compile package: quote src if needed
  • r60540 lazutils: fixed PrepareCmdLineOption quote if needed
  • r60541 IDE: fixed compiler kind if project/package compiler is set
  • r60543 IDE: use project compiler for codetools even if disabled
  • r60544 lazutils: fixed SplitCmdLine escape chars
  • r60551 IDE/codetools: unified compiler check, fixed testing compiler twice
  • r60552 IDE: fixed fpc version check for resources
  • r60571+60578: LCL/Grids: Fix drawing of user-provided checkboxes in DBGrid. Issue #35085
  • r60577 startlazarus: fixed regression starting lazarus, Issue #35184
  • r60581 IDE: fixed run project without debugger, adapted from 60581
  • r60599 LldbDebugger: Detect if the external exe is wrongly set to gdb.
  • r60601 Installer, Win: added Chinese translation by robsean, bug 35193
  • r60612 IDE: default extension for target browser and nodejs is .js
  • r60635 Packager: Prevent Access Violation when creating a new component. Dependency was wrongly created. Issue #35145.
  • r60642 LazDebugger(Fp)Lldb: terminate debugger, when entering error state
  • r60648 FpDebug: Add property for feedback, when debug info can not be read. Add feedback from macho reader
  • r60649 LazDebugger(Fp)Lldb: Errors during launch may be warnings (e.g. outdated debug info). Report to user, and allow to ignore.
  • r60650 FpDebug: Less debugln
  • r60651 LazDebugger(Fp)Lldb: Cancel watch eval, on receiving run/step request
  • r60652 LazDebugger(Fp)Lldb: improve cancel watch eval (cancel current watch, in mem-reader), on receiving run/step request
  • r60661 codetools: parse fpc output: keep FULLVERSION value
  • r60663 TUpDown: fix bug in GetPosition, reduce number of calls to TCustomUpDown.GetPosition in TUpDownButton.Click. Issue #0035209
  • r60665 SynEdit: fixed gutter bug, when auto-sizing is off. (fixed loaded values are ignored / fixed div-zero for zero width gutter)
  • r60668 IDE: fixed package options FPDoc search path basedirectory, issue 35222
  • r60675 Codetools: Fix function FindNextIncludeDirective when an include file name is quoted.
  • r60677 IdeIntf: Prevent crash when renaming TAction in TActionListEditor. Issue #35226.
  • r60679 LCL-Win32: Call OnClick of a parent menuitem from submenu of a popupmenu. Issue #35219.
  • r60687 IDE: do not save editor content if disk file has changed and MainIDE.CheckFilesOnDiskEnabled disabled, issue 35230
  • r60692 LazDebuggerFp: Prevent crash when watches are freed, after debugger was destroyed
  • r60700 SynEdit: PasHighLighter, fixed highlighting procedure names in interface declaration. Issue 0035238
  • r60707 LazDebuggerFp: Fix range-check / overflow with bad data.
  • r60708 IdeIntf: Fix coordinates for TTIPropertyGrid.OnPropertyHint. Issue #34689.
  • r60712 projectgroups: fixed adding missing targets, bug 35243
  • r60721 IDE: debug messages on run/save project failures
  • r60723 IDE: rename project: keep target file extension
  • r60725 IDE: renameunit: mark project as modified
  • r60730 IDE: rundebug: restore toolstatus on error
  • r60732 Printers, fix GTK printing problem. Issue #34932
  • r60733 IDE, fix form size for NewField dialog.Issue #35249
  • r60735 IDE: package editor: fixed popup menu items
  • r60745 IdeIntf: Allow F12 and other hotkeys in Object Inspector when the selection Combobox is active. Issue #29335.
  • r60748 IDE: Stop an endless loop when saving a unit with invalid name. Issue #35260.
  • r60756 SynEdit: AvlTree, check for nil when searching nodes
  • r60763 IDE: fix IsVersionRequested
  • r60770 IDEIntf: fixed change IDEMacros.Stamps
  • r60798 FpDebug: Fix an overflow in address calculation
  • r60827 LCL-WinCE: trivial: Add wince_7 to GetWinCEVersion()
  • r60844 IDEIntf: added TLazCompilationToolOptions.Parsers
  • r60858 Qt,Qt5: TComboBox.Sorted property implemented. Issue #0028045
  • r60861 Qt,Qt5: fixed action of TSavePictureDialog. Issue #0032540
  • r60866 openglcontrol: fixed double free, issue 35335, from Denis Golovan
  • r60899 LazDebuggerFpLldb: Catch errors during dwarf loading.
  • r60902 IDE: Improve GenericListEditor dialog layout. Issue #35328
  • r60926 LazDebuggerFpLldb: prevent crash in asm window, if dwarf info failed to load
  • r60930 FpDebug: Check char-size for strings. Recognize "UnicodeString", Issue #35340
  • r60932 remove outdated link
  • r60933 IDE: Fix jumping to next/previous error from the Search menu. Issue #35352
  • r60862 TAChart: Fix compilation of additional drawer packages in FPC 3.2+
  • r60863 TAChart: Update package globallinks to changes in r60862
  • r60946 FpDebug: "UnicodeString" workaround for wrong dwarf-highbound fpc issue 0035359, see also issue 0035340

New in Lazarus 1.8.4 (May 23, 2018)

  • Fixes for 1.8.4 (merged):
  • r56048 LCL: GTK2: Don't grab focus for TPanel on mouse messages. Issue #32515
  • r56709 Designer: Prevent an AV after deleting a control with csDesignInteractive in ControlStyle. Issue #32813.
  • r56716 LCL: Remove csDesignInteractive from ControlStyle of TControlBar. Issue #32813.
  • r57405 LCL: Make popupnotifier dpi-aware.
  • r57429 lcl: fixed UCS2LEToUTF8 for 1byte niput, issue 33296
  • r57475 IDE, EditorMacro: fix parsing of arguments. Fix numbers and #123
  • r57483 LCL: Fix keyboard navigation in RadioGroup with disabled items (Issue #33386 patch by Serge Anvarov).
  • r57497 IDE: ObjectInspector: Fixed SHIFT click to select a range doesn't work. Issue #33383. Patch by Rik van Kekem
  • r57511 SynEdit: TLazSynEditNestedFoldsList fix crash with cached data
  • r57569 MenuEditor: Fixed wrong item height when in ObjectInspector caption is set from text to "-" and vice versa. Issue #33415
  • r57571 LCL: TLabel: Fixed TLabel.FocusControl select control without pressing ALT. Issue #33526
  • r57572 LCL: GTK2: TLabel: Accelerating keys will work correct again after revision 57571.
  • r57614 SynEdit, PasHL: fix "helper for" should not generate "foldnode-info" for "for". issue 33551
  • r57623 IDE, EditorOpts: Hide unimplemented "Undo after Save" option
  • r57653 LCL: Fix out-of-range access to Colors array in LazIntfImages.CopyPixels. Issue #27144
  • r57796 TAChart: Fix memory leak related to minor axes (see https://forum.lazarus.freepascal.org/index.php/topic,41151.0.html).
  • r57804 codetools: parsing external const
  • r57674 LCL: toolbar: fix endless align/autosize loop. Issue #33575
  • r57736 LazLogger: Thread safety
  • r57743 GDBMiDebugger: fix range check / used wrong variable
  • r57957 IDE: ObjectInspector: Fixed property filter input: caret jumps to begin. Issue #33585

New in Lazarus 1.8.2 (Feb 28, 2018)

  • r56596 MenuEditor: Fixed access violation on adding from menu templates. Issue #32766. Patch by Serge Anvarov
  • r56600, r56628 Translations: Brazilian Portuguese translation updates by Marcelo B Paula
  • r56605 Translations: Hungarian translation update by Péter Gábor, bug 32764
  • r56609 rpm: fixed showing fpc-src rpm path
  • r56611 rpm: fixed rpm path
  • r56614 rpm: fpc-src: disable debug check
  • r56616 deb: uninstall fpc even if some files are missing
  • r56619 rpm: append linker option --build-id
  • r56621 rpm: omit debug_package
  • r56660 Converter: Fix a crash when converting a single unit. Issue #32785
  • r56661 IDE: Prevent crash in CodeExplorer. AddCodeNode can return Nil. Issue #32786
  • r56684 LCL: GTK2: TPanel DefaultColor should be clBackground, not clBtnFace. Issue #32779
  • r56686 LCL-Win32: Support compilation with FPC 2.6.4.
  • r56685 Contributors: Add "component icons" to Roland Hahn's entry.
  • r56688 IDE: update images/copyright.txt
  • r56689 IDE: Replace some palette icons for better visibility on dark desktop themes (provided by Roland Hahn aka Ally).
  • r56695 Revert incorrect r56398 "SynEdit: Enable operations for an identifier also when caret is at its end."
  • r56703 IDE: run file: fixed running command in working directory, added checkbox to show run output
  • r56705 RTTIControls: Add HighRes palette icons by Roland Hahn.
  • r56726 lazutils: fixed ResolveDots under Windows ..
  • r56729 codetools: debug FindFileAtCursor
  • r56731 IDE: open file at cursor: adjust cursor if cursor is behind word
  • r56746 IDE: view_unit dialog: do not check virtual directory via DirectoryCachePool
  • r56221 LazControls: More consistent component palette icons (by Roland Hahn)
  • r56748 synedit: HiRes component palette icons by Roland Hahn
  • r56753, r56802 IDE: regenerated translations and updated Russian translation
  • r56785 TAChart: New HiRes icons by Roland Hahn
  • r56786 OpenGL: Add new HiRes component palette icon by Roland Hahn
  • r56795 IDE: improved Select Frame dialog i18n, patch from Marcelo B Paula, bug 32841
  • r56811 LCL: TNoteBook: Fixed TNotebook fires OnBeforeShow for destroying pages. Issue #32863. Patch by Rik van Kekem
  • r56836 LazReport: New HiRes palette icons (by Roland Hahn)
  • r55756 SynEdit: PAS highlighter: support NESTEDCOMMENTS mode switch. Issue #32356
  • r56325 IDE: Find/Replace: save options depending on selection availability. Issue #32619
  • r56857: win32: fix double CM_MOUSELEAVE messages. Issue #32844
  • r56880 IDE: Delete CollectionItems correctly, update also OI. Issue #32820.
  • r56886 IDE: Fixed IDE crash after putting a activex control on form. Issue #32375
  • r56900 CustomDrawn: New Hi-DPI palette icons (by Roland Hahn)
  • r56901 dbexport: New Hi-DPI palette icons (by Roland Hahn)
  • r56902 mrumenu: New Hi-DPI component palette icon (by Roland Hahn)
  • r56904 Designer: Do not free component's PopupMenuComponentEditor when deleting a CollectionItem. Issue #32820.
  • r55861 LazReport: Implements flBandKeepChild, from Lutz Mändle, Issue #30466
  • r55871 LazReport: regenerated translations and updated Russian translation
  • r55920 LCL: GTK2: Fixed tab cannot go from combobox to combobox. Issue #32458
  • r55979 LCL: TComboBox: GTK2: Fixed KeyUp and KeyDown react like tab key after revision 55920. Issue #32458
  • r56148 LCL: GTK2: Fixed Cannot hide TBitBtn, TFloatSpinEdit, TListBox, TCheckListBox, TMemo, TListView from TForm.OnCreate after HandleNeeded. Issue #32527
  • r55934 LCL: fixed incosistency in pen when using TLogPen and TExtLogPen. Issue #32465
  • r56942 IDE: PropertyEditor: Fixed components with published properties of type "interface" does not work. Issue #32919. Patch by Andi Friess
  • r56987 Translations: updated all LazReport translations from trunk
  • r56884, 56948 LCL: Alternative fix of Issue #32383 avoiding crash of DBCombobox and regression (Issue #32463) in DBCombobox and DBLookupCombobox
  • 56052, 56160-56161, 56200, 56206, 56210, 56220 Pascalscript: up to date with git
  • r56958 Debugger, GDBMI: fix detecting watchpoint errors
  • r56992 IDE: New Hi-Dpi palette icons for OpenGLControl and TParadox (by Roland Hahn)
  • r57005 Grids: factor out IsEmptyRow function and correctly use the ARow paramter inside the function. Issue #0032965.
  • r56989 SynEdit: allow pasting text in any form known by widgetset. Issue 32581
  • r56581 IDE: HiRes icons for palette PascalScript (by Roland Hahn).
  • r57030 TAChart: Fix TDateTimeIntervalChartSource supressing minutes in hour steps
  • r57042 IdeIntf: Prevent crash in DBGridColumnsPropertyEditorForm with "Delete All". Issue #33000.
  • r57053 TAChart: Fix incorrect clipping of area series segments.
  • r57058 SynEdit: fixed pas HL for uses block. Issue 0032976
  • r57060 LCL: Fix unbound use of DBLookupCombobox (broken by r55911)
  • r57066 SynEdit: Fix crash in FoldNodeInfoList, due to Pas-HL hack attempting to alter fold info for "class of" Issue #32940
  • r57067 SynEdit: Fix fold gutter, after r 57066 / Issue #32940
  • r57078 SynEdit: fix ecDeleteEOL with multi codepoint utf8. Issue #32838.
  • r57079,57081 SynEdit: fix issue with longest line info (cached line num was not updated). Horiz scrollbar sometimes disappeared after line was deleted
  • r57089 Debugger: Do not always auto adjust the stackframe when stopping. (temp fix) Issue #32978.
  • r57101 IDE, Debugger: fixed name for "step to cursor". Two different names where in use for this.
  • r57103 Debugger: Allow pause button to abort auto-continue of breakpoint
  • r57198 Debugger, GDBMI: fix range check, when comparing qword for min() Issue #33106.
  • r57113 TAChart: Fix crash if multi-valued lineseries is displayed in legend using styles.
  • r57141 Examples: In translation_demo provide ukrainian selection in language combo in correct language.
  • r57147 LCL-Win32: Fix hints in mainmenu's submenus. Issue #33070.
  • r57200 LCL-Win32: Prevent a range error when assigning a menu handle. Issue #33102.
  • r57152 IDE, EditorOpts: Fix stringcompare for color-names
  • r57181 IDE: updating EditorOptions.res for new lazarus_dci_file from rev 53111
  • r57182 IDE: Config for SynEdit outline colors. Issue #32930.
  • r56909 LCL: TListView: fix setting column width. Issue #32920
  • r56910 LCL: TListView: store column widths on handle destruction. Issue #32922
  • r56946 LCL: revert r50942. Issue #28654
  • r56947 LCL: fix autosizing for not-aligned controls. Issue #28654
  • r56962 LCL: High-DPI: fix font scaling and design-time scaling. Issue #32882 and Issue #32944
  • r57082 LCL: fix regression in autosize after r56947. Issue #28654
  • r57156 LCL: form: scale form with parent. Issue #33002
  • r56974 IDE: IDEImagesIntf: support transparent bitmaps. Issue #32947
  • r57238 TAChart: Fix brush style bsClear not working in TClearBrush
  • r57239 TAChart: Fix ZoomDragTool ignoring its Frame.Visible setting.
  • r57252 Opkman: Bug fix: Updating package from the maintainers webpage in some special cases failed.
  • r57265 LCL:fix scaling of font size set to <>0 in design time. Issue #33132, regression after r56962
  • r57272 TAChart: Fix DatapointCrosshairTool ignoring its CrosshairPen.Visible setting.
  • r57318 lcl: lcltranslator: FindLocaleFileName: fixed checking if dir is absolute
  • r57321 lcl: translations: fixed getting duplicate msg from .mo file, issue 33173
  • r57339 codetools: parse built-in function concat in constant, issue 33201
  • r57351, 57362 Translations: LCL Polish translation update by Jacek Kruszniewski, bug 33200
  • r57355 LCL/ValuelistEditor: Change column titles from "Key"/"Name" to "Key"/"Value"
  • r57361 SynEdit: Completion box, respect space for taskbar. Use screen.WorkArea. Issue 033180

New in Lazarus 1.8.0 RC 1 (May 17, 2017)

  • LCL INTERFACE CHANGES:
  • Qt5: new widgetset based on Qt5 libraries.
  • LCL CHANGES:
  • TApplication:
  • Scaled property: the LCL is DPI-aware. Please see High_DPI#High_DPI_in_Lazarus_1.8_and_above for more information.
  • TCustomForm:
  • new position poWorkAreaCenter - center form on working area (depends on DefaultMonitor)
  • new compiler define LCLRealFormBounds. If you compile your application with LCLRealFormBounds on, the TCustomForm bounds (Width/Height) will be real outer bounds and not client bounds. Also constraints will affect real bounds. For now, it is supported only by win32.
  • Scaled property: the LCL is DPI-aware. Please see High_DPI#High_DPI_in_Lazarus_1.8_and_above for more information.
  • TToolButton:
  • new style tbsButtonDrop - paints a drop down arrow on the right side of the button. In contrast to tbsDropDown the button has only single clicking area that invokes the DropDownMenu if assigned.
  • new event OnArrowClick. It is called if Style=tbsDropDown when the user clicks the arrow button area of toolbutton. Breaking change: OnClick was called in 1.6!
  • TToolBar:
  • new DropDownWidth property to setup the width of the toolbutton arrow area for Style=tbsDropDown.
  • ClipBoard:
  • The ClipBoard now supports copying and pasting text in HTML format by means of the methods GetAsHtml and SetAsHtml.
  • Menus (TPopupMenu, TMainMenu, TMenuItem):
  • Menus now support OwnerDraw with (almost) Delphi's approach. If you set TMenu.OwnerDraw to true the OnMeasureItem and OnDrawItem from TMenu and TMenuItem will be called. OnDrawItem from Lazarus has the same parameters as OnAdvancedDrawItem from Delphi. You can use the events also from TMenu, which is an LCL addition to Delphi. For now only win32 is supported.
  • Dialogs:
  • TTaskDialog added
  • IDE CHANGES:
  • lazbuild:
  • new option --add-package-link to register given lpk files without building.
  • Quick Fixes:
  • new QuickFix for any fpc hint, note or warning: add compiler directive {$warn id off}
  • Code creation:
  • new shortcut Ctrl+⇧ Shift+X that shows a CodeCreation dialog with more options. Ctrl+⇧ Shift+C never shows a dialog now.
  • You can choose the default visibility of the methods in Tools / Options / Codetools / Class Completion / Default section of methods.
  • Word+Identifier completion: If the option Codetools / Identifier Completion / Replace whole words is enabled, pressing Return replaces the whole word at cursor, pressing Shift+Return replaces only the left side. If the option is disabled it works the other way round: Return replaces left side, Shift+Return replaces whole word.
  • "case ofall" code template indentation change:
  • Old behavior: the created case-list was always flat
  • New behavior: by default it is now indented according to source editor options.
  • Reason: the indented case-list is Delphi-standard
  • Remedy: edit the ofall template and use the WithoutExtraIndent parameter: "$OfAll(WithoutExtraIndent)"
  • Ctrl-Enter alias "Open file at cursor" was improved when cursor in a Pascal file: It now recognizes properly $I and $R directives, uses nodes, string literals and comments.
  • DPI awarness: the IDE is DPI-aware (it's ongoing work, so expect issues). Please see High_DPI#High_DPI_in_Lazarus_1.7_and_above for more information.
  • Editor:
  • New colored outline of source structure. (like cnpack, if then block outline)
  • Support for Win98/WinNT has been dropped.
  • IDE Interfaces Changes:
  • New function LazarusIDE.FindUnitsOfOwner listing all units of a project/package
  • COMPONENTS:
  • LazControls:
  • Added T(Float)SpinEditEx, a widgetset independant implementation of T(Float)SpinEdit with some extended capabilities:
  • NullValue property.
  • Configurable behaviour when the text inside the control is not a number.
  • ToDoListLaz:
  • Now searches all used units of projects. Excluding used packages, including all units listed in the project inspector.
  • TAChart:
  • New component TChartCombobox
  • Improved data point tools (property Target)
  • New demos (runtime demos, datapointtools)
  • CHANGES AFFECTING COMPATIBILITY:
  • LazUtils:
  • Wrappers for string functions are disabled:
  • Various units in LCL, LazUtils and Codetools have wrappers for string functions in LazUTF8 and LazFileUtils. They are now disabled. They can still be enabled by defining "EnableWrapperFunctions".
  • The wrapper functions were already deprecated in Lazarus 1.6 with a proper hint about where to find the actual function. This allowed a transition period for everybody who updates to every major Lazarus version.
  • FindDefaultExecutablePath searches on Windows in BaseDir:
  • Applies: Non Unix systems.
  • Old behavior: BaseDir was only searched if '.' was in %PATH% - same as Unix shells.
  • New behavior: BaseDir is always searched (if set) on non Unix.
  • Reason: Windows console searches in current directory so Windows users expect to find executable in base directory.
  • Remedy: Use instead SearchFileInPath(Executable,BaseDir,GetEnvironmentVariableUTF8('PATH'),PathSeparator,[sffDontSearchInBasePath]);
  • LCL INCOMPATIBILITIES:
  • TLCLPlatform definition was moved:
  • TLCLPlatform was moved from InterfaceBase to a new LCLPlatformDef unit in r53711. Also a related LCLPlatformDisplayNames was moved from LazConf to the same unit.
  • Old behavior: Unit InterfaceBase was used for TLCLPlatform type.
  • New behavior: Unit LCLPlatformDef must be used for it. InterfaceBase may still be needed for other types.
  • Reason: The GUI independent parts of LCL definitions will be needed for command line programs (LazBuild).
  • Remedy: use the right units in your uses-sections.
  • TToolButton.OnArrowClick added:
  • Applies: event called if Style=tbsDropDown when the user clicks the arrow button area of toolbutton.
  • Old behavior: OnClick was called.
  • New behavior: OnArrowClick is called.
  • Reason: there was no easy way to detect click on the arrow sub-button.
  • Remedy: use the same event handler for OnArrowClick and OnClick.
  • TCustomAbstractGroupedEdit descendants must override GetRealText/SetRealText methods:
  • Old behavior: TCustomAbstractGroupedEdit reintroduced the Text property
  • New behavior: TCustomAbstractGroupedEdit uses TControl.Text
  • Reason: unnecessary 2 different properties with the same name and function
  • Remedy: override GetRealText/SetRealText instead of GetText/SetText.
  • TFontStyle enum item order is changed to match with Delphi:
  • Old behavior: the last item was fsUnderline
  • New behavior: the last item is fsStrikeOut
  • Reason: Delphi compatibility.
  • Remedy: check code if it depends on Ord(TFontStyle) - like "StyleStrings: Array[TFontStyle] of string = ('Bold', 'Italic','StrikeOut','Underline');" or saving/retrieving font style as ordinal value.
  • More info: It does not affect LFM streaming. It can make a difference when iterating items.
  • THintWindow transparent for mouse messages by default:
  • Old behavior: THintWindow received mouse messages
  • New behavior: THintWindow passes mouse message through itself to the underlying form/control.
  • Reason: Delphi compatibility.
  • Remedy: to make THintWindow clickable again, add a LM_NCHITTEST message handler to your hint window descendant and return HTCLIENT as message result
  • TCustomTabControl setting TabIndex or PageIndex by code:
  • Old behavior: setting TabIndex or PageIndex by code caused an OnChange event to be fired
  • New behavior: setting TabIndex or PageIndex by code no longer causes an OnChange to be fired
  • Reason: Delphi compatibility.
  • Remedy: set nboDoChangeOnSetIndex in Options (this option is not available in Delphi), call OnChange in you own code when changing TabIndex/PageIndex, or move the code in OnChange to another event if applicable.
  • TCustomControlFilterEdit.UseFormActivate deprecated:
  • Old behavior: setting UseFormActivate to true, the filter edit got focus on Form.Activate
  • New behavior: UseFormActivate does nothing and will be removed after 1.8
  • Reason: it globally misused the TForm.OnActivate event.
  • Remedy: set ActiveControl in Form.DoCreate or use correct TabOrder or similar.
  • TDateTimePicker.OnCheckBoxChange Sender parameter change:
  • Old behavior: Sender was the TCheckBox object within TDateTimePicker
  • New behavior: Sender is the TDateTimePicker object
  • Reason: Do not expose private field TCheckBox to public methods.
  • Remedy: If you need the TCheckBox object in OnCheckBoxChange handler, you can get it from the Controls array property.
  • Several autosized properties changed the default value to 0:
  • This incompatibility is present in RC1 but will be/was removed for RC2 and won't be in 1.8.0
  • Affected properties: TCustomGrid.DefColWidth, TCustomGrid.DefRowHeight, TToolBar.ButtonHeight, TToolBar.ButtonWidth, TToolBar.DropDownWidth, TCustomTreeView.ExpandSignSize, TCustomTreeView.Indent.
  • Old behavior: The constructor assigned a valid (>0) value to the above properties but the value was OS+WS+DPI dependent. A default hard-coded value (typically default for Windows at 96 DPI) was not stored in the LFM.
  • New behavior: The default (system) auto-generated "placeholder" value is 0.
  • Reason: 1.) When designing at higher DPI the default value was saved in LFM. 2.) Because the default value was not saved in the LFM at 96 DPI, the default property value was scaled twice if designed on 96 DPI and run on higher DPI.
  • Remedy: If you need the real value, use the GetReal* public functions. E.g. TCustomGrid.DefaultColWidth -> TCustomGrid.GetRealDefaultColWidth.
  • COMPONENTS INCOMPATIBILITIES:
  • easylazfreetype: TCustomFreeTypeFontCollection.AddFile:
  • Old behavior: return Boolean
  • New behavior: return TCustomFontCollectionItem
  • Reason: there was no easy possiblity to work with the added item.
  • Remedy: don't check the result for True, but for "<>nil"
  • IDE INCOMPATIBILITIES:
  • Form resource strings table LRT format support is dropped, LRJ format introduced instead:
  • Old behavior: Form resource strings were extracted into LRT file when saving form.
  • New behavior: Form resource strings are extracted into LRJ file with format unified with RSJ files which are emitted by FPC 3.0.0 and up. LRT support is dropped.
  • Reason: LRT file format was broken by design, e.g. it didn't handle multiline captions properly (see bug 26553 for details).
  • Remedy: Open your project and click "Project" -> "Resave forms with enabled i18n" menu item, then rebuild your project. After this you can safely remove LRT files.
  • DateTimeCtrls:
  • DateTimeCtrls split into DateTimeCtrls and DateTimeCtrlsDsgn packages
  • Old: one run/design time package DateTimeCtrls
  • New: runtime package=DateTimeCtrls, designtime package=DateTimeCtrlsDsgn
  • Reason: Consistency, separate run and design time code
  • Remedy: DateTimeCtrls components get unregistered. You have to install DateTimeCtrlsDsgn into the IDE.
  • Info: Don't link DateTimeCtrlsDsgn into your application.
  • LazControls:
  • Register procedures moved into LazControlDsgn package
  • Old: register procedures were in the LazControls package although there was a LazControlDsgn package
  • New: moved register procedures into LazControlDsgn package
  • Reason: Consistency, separate run and design time code
  • Remedy: the components get unregistered. You have to install LazControlDsgn into the IDE.
  • Info: LazControlDsgn is a designtime package.

New in Lazarus 1.6.4 (Mar 1, 2017)

  • Fixes for 1.6.4 (merged):
  • r53250 LCL: destroy menu handle on remove. Issue #30806
  • r53251 LCL: headercontrol: implement ChangeScale, Issue #3081
  • r53252 lcl: controlcanvas: fix TControlCanvas.CreateHandle debugln, Issue #30003
  • r53253 LCL: TGraphicControl: always call FreeHandle - HandleAllocated doesn't take FDeviceContext into consideration. Issue #30003
  • r53254 LCL: destroy TGraphicControl.Canvas.Handle when control is removed from parent. Issue #30003
  • r53274 LCL: controlcanvas: protect TControlCanvas.CreateHandle debugln with an IFDEF
  • r53306 LCL Fix access violation when deleting a TMainMenu after r53250. Issue #0030882.
  • r53324 lcl: win32: ignore keyup without keydown at program start. Issue #30836
  • r53325 IDE: project options: more values for Win Vista DPI awarness. Issue #30170, modified patch
  • r53357 Translations: Hungarian translation, bug 30919
  • r53341 IDE: Regenerated translations and updated Russian translation
  • r53364 LazUtils: lazutf8sysutils: use GetTickCount32 from FPC 3 if available. Issue #30927
  • r53376 LCL-GTK2: Remove trailing zero when copying to clipboard. Issue #21453, Issue #30071
  • r53485 LCL-GTK2: Use AIndex param for column width. Fix off by 1 (ANewIndex-1) error in TGtk2WSCustomListView.ColumnMove. Issue #31024.
  • r53421 Packager: Open a loaded package also by pressing Return key.
  • r53422 LCL: Fix the display string of shortcut "+". Issue #30973
  • r51947 TurboPower_iPro: Fix browser example crashing at program end. Issue #0031019
  • r53471 TurboPower_iPro: Register TIpHtmlDataProvider. Issue #0031020
  • r53475 TurboPower_iPro: Fix HotURL containing Content-Type instead of URL (patch by Sei Lisa, Issue #31030).
  • r52829 IDE: Set top position of Form Designer below MainIDEBar. Depends also on Object Inspector. Issue #27638
  • r51601 TAChart: Clean up.
  • r53027 Carbon: fixed hang with save dialog. Issue #29911
  • r51631 lcl: TCustomForm.ShowModal: recreate handle only if handle was allocated, don't use HandleNeeded Issue #0031028.
  • r51731 LCL: must call RecreateWnd() when modal finishes so next CreateHandle() can provide correct params on win32. Issue #29744
  • r53722, r53739 LCL: TMemo: Fix for flickering on Windows. Issue #0016140.
  • r53746, r53757 LCL: TListView: Win32: use stored width, if there are no items to calculate the correct autosize width. Issue #29132.
  • r53590 LCL-Gtk2: Simplify TGtk2WSCustomListView.ItemSetState. Nil as Path param does not work for old GTK versions.
  • r53099, r53653 LCL-GTK2: Fix a cursor move error with backspace key and replacing selected text in TEdit. Issue #30596.
  • r53705 GTK2/GTK3: Fix TOpenDialog.Files if ofAllowMultiSelect is not in Options. Issue #0031133.
  • r53648 TAChart: Set Canvas.Textstyle.Workbreak to false to avoid linebreaks in printer output under Linux
  • r53659 LazUtf8: Fix UnicodeToUtf8 for CodePoint = 0. Issue #0031103.
  • r53736 win32: group box: invalidate after caption change. Issue #25868.
  • r53790 LCL: TWinControl: refreshing RawImage data after painting on canvas. Issue #25448
  • r53812 IDE: Restore visual components in component palette always when needed. Issue #30488.
  • r53895 TAChart: Improved layout of toolsdemo
  • r53904 TAChart: Fix extent of side-by-side bar series being calculated incorrectly if an x axis transformation is active.
  • r53905 TAChart: Fix stacked bar series being incorrectly painted if a y axis transformation is active.
  • r53944, r53947: LCL: Try to derive Time from the text in the control in TTimeEdit.GetTime, if DirectInput is True Issue #0031227.
  • r53950 LCL: TPageControl: fixed TabIndexAtClientPos page index after invisible tab. Make IndexOfTabAt Delphi compatible Issue #30343.
  • r53890 Converter: Prevent the IDE freezing when cancelling the conversion. A non-started thread was waited for.
  • r53835 LazReport: lrCodeReport: Fix: procedure TextOutXY. Use scale values, from Julio Jiménez B., Issue #31155
  • r53978 LCL: TTabControl: make mouse messages working in tabs. Issue #27467
  • r53981 LCL: TTabControl: make tabs drag- and dropable. Issue #24022
  • r54045, r54053, r54054, r54055, r54056 LCL: TComboBox: Make keys Delphi compatible with AutoDropDown = True. Issue #31247, Issue #31331
  • r54100 IDE: Compiling aborted, if missing events not removed or ignored.
  • r54005 win32: fix WideChar -> UTF8 conversion in GetLocaleStr with fpc 2.6.4. Issue 31272.
  • r51260 LazReport: Include new PrinterIndex property in frPrintGrid for using PrinterSetupDialog. Issue #0029373, patch from Jean Patrick.
  • r52448 LazReport, fix designer gdi leak on deleting objects
  • r52454 LazReport, fix Cairo PDF exporting of reports with checkbox objects
  • r52465 LazReport, force repaint of preview once report has been exported
  • r52467 LazReport, fix exporting to postscript with CairoExport (file extension was right, but content was pdf)
  • r52503 LazReport, fix duplicates in filter list for some Export filters (htm and csv)
  • r54023 TAChart: Fix expected behavior of Axis.Marks.AtDataOnly if series does not set its AxisIndexes (http://forum.lazarus.freepascal.org/index.php/topic,35606.0.html)
  • r54034 TAChart: Fix painting of bracket pointer symbols.
  • r52568 CairoCanvas: implement default values for default font (fix fonts on exporting LazReport grid using cairo export)
  • r54173 fpvectorial: Fix memory leak due to document styles not being destroyed, patch by Andrzej Kilijanski. Issue #0031356.
  • r54010 LCL: TDateEdit: fix not calling OnEditingDone (bug introduced in r53938 by me). Issue #0031278.
  • r54025 FileListBox: do not display normal files if ftNormal is not specified in FileType (Delphi compatibility). Do not display filenames if FileType only includes ftDirectory or ftVolumeID. Issue #0031281
  • r54070 TDateEdit: Don't change empty Text when toggling DirectInput in designer. Part of Issue #0030425.
  • r54071 TStaticText: publish properties Enabled, ParentShowHint and PopupMenu. Issue #0031313, Issue #0031315 and Issue #0031333.
  • r54072 TTimeEdit: publish properties ButtonCaption, ButtonCursor and ButtonHint. Issue #0031338.
  • r54073 EditBtn: publish property Contstraints for TFilenameEdit, TDirectoryEdit and TCalcEdit. Issue #0031327.
  • r54074 FileListBox: publish properties Color, ParentColor and Enabled. Issue #0031328 and Issue #0031329.
  • r54086 TProgressBar: publish properties Font and ParentFont. Issue #0031330.
  • r54087 EditBtn: publish property Contsraints of TCustomControlFilterEdit. Issue #0031345.
  • r54164 LCL: TPen.Assign copies pattern now.
  • r54172 LCL: Fix grid's ButtonStringEditor ignoring cell text alignment. Issue #0031402.
  • r54215 Debugger: fix for gdb 7.12 issue 0031386

New in Lazarus 1.6.2 (Nov 15, 2016)

  • Fixes:
  • r51634 Designer: Support also (False) and (True) as Boolean values in Undo operation.
  • r51639 ShellTreeView: make PopulateWithBaseFiles public. Makes it possible to populate a ShelltreeView that was created at runtime.
  • r51643, r52312, r52325, r52922 Translations: French translation update by Gilles Vasseur
  • r51654 Examples, translation: allow to select any of available translations, patch by wp, bug 29662
  • r51658 Qt: fixed TQtMemoString.Insert() and TQtTextEdit.insertLine(). Issue #29670
  • r51679 Qt: fixed bug with returning from TQtWidgetSet.GetWindowSize() with fpc-3.0
  • r51597 lcl: use active form as parent for pmNone and modal windows. Issue #29635
  • r51675 LazUtils: Revert r51038. Fixes bug in CopyDirTree. Issue #0029695
  • r51680 Carbon: remove system-wide stay-on-top window style for windows with defined WndParent. Issue #29694
  • r51681 Carbon: remove wrong code from SetRealPopupParent and add a ToDo.
  • r51682 PoChecker: added Portuguese translation support, regenerated translations and updated Russian translation
  • r51683 LCL: added Portuguese translation by Pedro Albuquerque, bug 29712
  • r51688 LazUtf8: fix Utf8LowerCase for #$E2#$B1#$AD (LATIN CAPITAL LETTER ALPHA)
  • r51772 fpcunit: updated po files
  • r51796 FPCUnit: updated Russian translation
  • r51692 LazUtils: Prevent CopyDirTree copying to a subdirectory of source: handle unicode characters.
  • r51693 ide: register debugmanager commands for toolbars
  • r51699 ide: fix smart hint window not receiving mouse messages. Issue #29726
  • r51894 IDE, packager: added dots for 'Find in files' menu item, bug 29800
  • r51742 LCL: Don't use PassWordChar when showing TextHint. Patch by riderkick. Issue #0029748.
  • r51045 LCL: Reduce warnings by replacing deprecated TField's "Lookup" with "FieldKind=fkLookup"
  • r51677 lcl: using process Executable instead of CommandLine
  • r51813 Examples: Fix resource loading in TestAll project.
  • r51814 Examples: Re-enable "Win32 GUI application" of TestAll project (accidentically introduced by me in r51813).
  • r51820 Examples: Fix crash in TForm1.ApplicationIdle of TestAll project.
  • r51847 Carbon: document TListBox.ItemHeight as restricted.
  • r51896 Packager: Fix a crash when adding a package dependency which already is there. Issue #29680.
  • r51494 LazReport, fix list of functions provided by lrAddAddFunctionLibrary not being listed in function list if LazReport compiled with FPC r31941 or newer, patch from Aleksey Lagunov
  • r51659 gtk2: fix hints clipped by 200x200 rect on KDE, Issue #28973
  • r51972 LazUtf8: implement Utf8TryFindCodepointStart. -- needed for r51973
  • r51973 LazUtf8: Refactor UTF8FindNearestCharStart. Resolves Issue #0029851
  • r51970 docs: add fugue icons to acknowledgements
  • r51983 Win32: first attempt to implement TWin32WidgetSet.FontIsMonoSpace. Issue #0028898.
  • r51798 lcl: disable windows on system dialog execute, win32: fix parent window handle for system dialogs, Issue #28631
  • r51808 lcl: restore focus after system dialog. Issue #28631
  • r51810 lcl: better bullet-proof LCL approach for r51808, Issue #28631
  • r51811 lcl: remove stay-on-top window flags on ShowModal because they can block the application from input. Issue #27148
  • r51812 lcl: remove/restore stay-on-top windows in Application ModalStarted/ModalFinished, fix default methods with a counter. Issue #27148
  • r51676 TAChart: Remove hints and warnings Issue #0029709
  • r51977 LazUtf8: firts attempt to rewrite Utf8CompareStr and Utf8CompareText so that it's results will be more consistent with AnsiCompareStr/WideCompareStr and AnsiCompareTex/WideCompareText.
  • r51978 LazUtf8: In UTF8CompareStrCollated only call AnsiCompareStr is ACP_RTL is defined
  • r52004 LazFileUtils: fix uninitialized result in ChompPathDelim. Issue #0029866.
  • r52009 SynEdit, Examples: fix syn hl example / register attributes
  • r52008 IDE: Fix not showing Chars > Chr(127) in ANSI Tab of CharactermapDlg. Improve ANSI charater map. Patch by wp, minor modifications by me. Issue #0029856 (separately patched in fixes_1_6 in r52016)
  • r52007 lcl: add copyright info for LCL images, Issue #29869
  • r52010 lcl: images: update copyright info for dbnavdelete.png
  • r52014 lcl: images: updated Tango icons copyright info. Issue #29869
  • r52015 LCL: replace DBNavigator images for "undo" and "delete" with images from Tango, which are public domain. Part of Issue #0029869.
  • r52017 LCL: update images/copyright.txt
  • r52019 TurboPower_IPro: Fix ineffective "align" attribute in and tags.
  • r52022 lcl: images: use tango icons with alpha channel, Issue #29869
  • r52023 lcl: images: replace all Silk icons by public-domain Tango icons, Issue #29869
  • r52025 lcl: images: cleaner tick images, Issue #29869
  • r52026 lcl: images: better btnseldir.png
  • r52027 lcl: images: update copyright policy with info about Tango icons.
  • r52028 Turbopower_iPro: In PrintPreview form, remove usage of hardcoded MS Sans Serif font.
  • r52034 TurboPower_iPro: Improved text rendering in print preview by antialiasing.
  • r52048 LazReport: Czech translation update by Jirí Vejda, bug 29881
  • r51767 Gtk2: fixed resizing form with constraints applied. Issue #29563
  • r52036 lcl: images: update tango url
  • r52038 lcl: images: replace handpoint and hourglass cursors (unknown origin) with public domain cursors. Issue #29869, handpoint: converted from https://commons.wikimedia.org/wiki/File:Cursor_Hand.png, hourglass: modified cur_17.cur
  • r52039 lcl: images: replace dock images with Tango (some modified by myself). Issue #29869
  • r52040 lcl: images: hourglass cursors: better hotspot (in the middle of hourglass)
  • r52042 TurboPower_iPro: Activate scrollbar tracking of print preview
  • r52083 LazReport: Czech translation update by Jirí Vejda, bug 29897
  • r52077 LCL: ImageList: call DestroyReference in Clear. Resolves Issue #0029905.
  • r51760 codetools: prevent endless loop in TFindDeclarationTool.GetSmartHint. Issue #29754.
  • r52020 IDE: Show action methods when clicked also when in another unit/form. Issue #25954.
  • r52066 IDE: Sort a category list in "All options" parser. Issue #29907.
  • r52110 IDE: Export/Import also package options properly. Worked only for project. Issue #27709.
  • r52054 Qt: fixed crash with TPreviewFileDialog.Issue #29896
  • r52085 Qt: do smooth transformation on argb32 image format. Issue #0029883.
  • r52086 Qt: use smooth transformation when scaling an QImage. Issue #0029883.
  • r52055 Win32: Return cpDate in TWin32WSCustomCalendar.HitTest when user clicks on "Today". Issue #0029895.
  • r52117 Win32: fix TWin32WSCustomCalendar.HitTest if application does not use a manifest on Vista and up. Issue #0029975.
  • r52057 TurboPower_iPro: Improved print preview form.
  • r52060 TurboPower_iPro: New IpHtmlPanel property ScrollDist. Scroll is a function now returning false if view rect was not changed.
  • r52061 TurboPower_iPro: Control scrolling by optional parameter instead of new property.
  • r52062 TurboPower_iPro: Property ScrollDist is back (for controlling built-in scrolling). Add German translation file of iphtmppv.
  • r52064 TurboPower_iPro: Fix size selection of preview form.
  • r52078 TurboPower_iPro: Avoid some duplicate lines around page break when printing. Avoid horizontally clipped last line on some pages of preview (first line on next page may still be clipped).
  • r52079 TurboPower_iPro: Fix showing of long tables at the beginning of a document.
  • r52082 Turbopower_IPro: regenerated translations and updated Russian translation
  • r52100 TurboPower_iPro: Fix clipped lines in print preview
  • r52101 TurboPower_iPro: Fix list index error if ENTER is pressed and no TabItems are present
  • r52069 Gtk2: workaround for openbox wm wrong reading of geometry structure. Issue #29884.
  • r52076 LazUtils: PasWString: fix infinite recursion in WideCompareText.
  • r52090 TAChart: Fix crash of GUI when TChartStyles is deleted.
  • r52129 IDE: regenerated translations and updated Russian translation
  • r52133, r52315, r52635, r52947 Translations: Hungarian translation updates by Péter Gábor
  • r51694 LCL: Implement TCustomCalendar.GetCalendarView. Patch by Zoran Vucenovic.
  • r51695 LCL: Try not to close CalendarDialogs if CurrentView cvMonth. Partly resolves Issue #0029646.
  • r52095 LazReport, fix text width calc on rotated memos, issue Issue #29890
  • r51791 LazReport, Decouple flHideZeros and flBandPrintChildIfNotVisible, modified patch by Luiz Americo, fix issue Issue #29313
  • r52135 add 32 bit windres in 64bit build. issue 29698
  • r52148 Qt: fixed geometry resize of mdiarea handle widget. Issue #29978
  • r52149 Qt: small optimisation when calculating mdiform area geometry.
  • r52150 Qt: unify TScrollBar Max value and position with winapi. Issue #20127
  • r52151 Qt: do not pass maximum value by triggering scrollbar actions. Issue #20127
  • r52154 Gtk2: unify TScrollbar behaviour with win32 and qt. Issue #20127
  • r52155 Qt: unify scrollbar behaviour with win32.Let position pass max - lcl will decide about new pos. Issue #20127
  • r52156 LCL: unified behaviour of win32,qt and gtk2 TScrollbar. Issue #20127
  • r52175 LazReport, fix AV on changing band height
  • r52204 MaskEdit: don't remove the mask in FormatMaskText regardless of the "MaskSave" value in the specified EditMask.
  • r52206 MaskEdit: do replace SpaceChar with #32 in FormatMaskText.
  • r52239 Educationlaz: Use FileExists instead of FileExistsUTF8. Fix compilation.
  • r52240 Educationlaz: Fix crash caused by missing 'tbStandard' and 'tbViewDebug' toolbars. New IDE Coolbar must be supported later. Issue #30043.
  • r52242 Educationlaz: Restore FileExistsUTF8 back, changed in r52239.
  • r52246 Win32: fix scrolling issue in ListBox with huge amount of items. Patch by Michl. Issue #0023914.
  • r52254 LazReport, Normalize ReportCreateDate and ReportLastChange on saving, patch from Simone Giacomelli, Issue #0027008
  • r52265 LCL-Win32: Fix flickering in Listview during scroll. Issue #30076.
  • r52267 lcl: fix default TabStop value for TNotebook, publish TabStop for TPage. Issue #21943
  • r52275 IDE: Ukrainian translation update by Olexandr Pylypchuk, bug 30086
  • r51930 wince: disable PopupParent on WinCE because it is not supported. Issue #29807
  • r52306 IDEIntf: assign OnClick events in RegisterIDEButtonCommand. Issue 30137
  • r52335 TAChart: Add missing declaration of PutPixel to TOpenGLDrawer.
  • r52339 TAChart: Remove path to TADrawerOpenGl from opengl demo.
  • r52340 TAChart: Fix pen style and pen width in OpenGL drawer.
  • r52346 TAChart: Set "AddToUsesPkgSection" flag of TADrawerOpenGL to false (had been changed in r52340, resolves Issue #0030169)
  • r52347 TAChart: Fix missing initialization of glut library in opengl demo.
  • r52389 TAChart: Publish event OnContextPopup
  • r52391 TAChart: Avoid chart popup menu opening at the end of a pan-drag operation with right mouse button.
  • r51383 TAChart: Fix compiling for the coming TRect advanced functions in FPC 3.1.1 (see Issue #29479 and Issue #30199)
  • r52405 LCL: Fix default implementations of Arc, Chord and Pie functions. Issue #30194
  • r52406 Qt: fixed TQtWidgetSet.AngleChord(). Issue #30194
  • r52407 Qt: proper string conversion.
  • r52410 IDE, SourceEditor: fixed hints. Mouse can move into hint area. Issue Issue #30077 / broken by revision 49872
  • r52417 ide: Normalize path delims of resource items
  • r52442 LazUtils: Use cwstring always on unix systems. WideCompare* functions require it.
  • r52393 POChecker: fixed typos which prevented loading of window state from config for Results and Graphical Statistics forms
  • r52450 POChecker: fixed loading of master files selection state on Linux/GTK2
  • r52453 POChecker: unify height of buttons in Result Dialog on Linux/GTK2 ("Close" button can be higher than others because of bigger default glyph)
  • r52463 Translations: Ukrainian translation update by Olexandr Pylypchuk, bug 30250
  • r52471 POChecker: fixed "Ignore fuzzy translations" option.
  • r52475 LCL, Translations unit: there is no need to check for badformat flags in CleanUp procedure anymore, they are now set/cleared in all cases in CheckFormatArguments procedure.
  • r52476 LCL, Translations unit: improved comments.
  • r52479 lazutils: fix GetFormatSettingsUTF8, make it public
  • r52480 use GetFormatSettingsUTF8 in TApplication.IntfSettingsChange. Issue #30253
  • r52481 lazutils: fixed compilation on non windows
  • r52486 lazutils: fix comment from r52480
  • r52487 lcl: fix conditional define (all windows) in TApplication.IntfSettingsChange
  • r52488 lazutils: fix compilation with DisableUTF8RTL after r52480
  • r52489 Fix spelling errors. Issue #0030258. Patch by Paul Gevers.
  • r52490, r52491 Fix some more spelling errors.
  • r52492 fpdebug: Add package DebuggerIntf as dependency to asmtest program.
  • r52494 lcl: TControlCanvas: don't allow to empty handle if there is a pre-allocated FDeviceContext handle. Solves issue 30003
  • r52500 lcl: destroy canvas handle of TGraphicControl when parent is removed. Issue 30003
  • r52527 LCLTranslator: Fix FindLocaleFilename failing if optional directory is absolute or ends with a path delimiter.
  • r52546 IDE: fixed "Enable/Disable I18N for LFM" context menu items enabling logic in project inspector (it didn't allow to disable i18n actually due to typo)
  • r52549 LazDataDesktop: removed 'pt'->'pb' substitution hack for Brazilian Portuguese translation, it is not needed for a long time.
  • r52598 IDE: improved toolbar command captions i18n
  • r52618 IDE: Replace Combobox with Listbox+Filter to add package dependencies for projects and packages.
  • r52621 IDE: Make the order of IDE Coolbar items more logical.
  • r52628 IDE: Prevent an occasional crash after BuildModes are added and deleted.
  • r52643 SynEdit: Diff Highlighter fix endless loop. Issue #30338
  • r52649 Win32: fix error in TFontDialog if fdLimitSize is set. Issue #0030340. Patch by Rik van Kekem. (Separately patched in fixes_1_6 in r52737)
  • r52674 IDE: set modified flag after resource name change. Issue #30351. Patch by Anton
  • r52692 Packager: Don't add unit or include search path '.' when adding a file to a package.
  • r52703 revert r52494, r52500: they caused crashes in Carbon interface. Issue #30003
  • r52704 win32: initialize PS (TPaintStruct) in paint message handling when ControlDC 0. Issue #30275
  • r52750 TAChart: Fix printer canvas pen mode remaining at pmXor after printing (https://stackoverflow.com/questions/35024329/after-printing-tchart-i-cant-draw-lines).
  • r52756 ApplicationProperties: fix setting ExceptionDialog in OI. Issue #0030210.
  • r52760 EditBtn: remove obsolete properties TDateEdit.OKCaption and TDateEdit.CancelCaption (they pollute .po files). Issue Issue #0030031.
  • r52777 EditBtn: allow to clear TDateEdit.Text at designtime when DefaultToday=True and DirectInput=False. Issue #0030425.
  • r52837 MaskEdit: check if control can be focussed before focussing when validation fails in DoExit. Issue #0030482. Patch by Lutz Mändle.
  • r52839 MaskEdit: fix pasting text with spaces when maskchar is cMask_AlphaNum, cMask_Letter and cMask_Number or cMask_NumberPlusMin. Issue #0030481.
  • r52862 CaculatorForm: fix TCalculatorPanel.FindButton for buttons after the Square root button.
  • r52863 LazHelpHtml: UnQuote the result of FinddefaultBrowser. Issue #0030502.
  • r52877 IDE: Support ENTER also in FilterEdits of ProjectInspector and PackageEditor. Issue #30523
  • r52912 Grids: fix wrong result of TCustomGrid.GetEditorBorderStyle when FEditor = FPickListEditor. Issue #0028782.
  • r52913 IDEIntf: fix wrong Dutch translations of GraphicPropertyEditorForm.
  • r52925 IDEIntf: fix typo in r52913 of Dutch translations of GraphicPropertyEditorForm.
  • r52926, r52946 IDEIntf: update Dutch languagefile.
  • r52940 IDE: Don't close a modified file in sourceeditor when user cancels the "File ... has changed. Save?" dialog by pressing Escape key. Issue #0030582.
  • r53045 Win32: fix Win32: SetComboMinDropDownSize. Issue #0030526.
  • r53046 LCL: In TPen.ReferenceNeed the elpWidth member of the TExtLogPen structure must be 1 (not 0) if the pen is not Geometric. Resolves Issue #0022646.
  • r53047 IDE: When reading lazarus.cfg file, change from Windows codepage to UTF8 when needed (the file is written by the Windows installer). Fixes Issue #0029494.
  • r52764 lcl: TCustomForm needs Application.RemoveAsyncCalls, Issue #30281 and Issue #8576
  • r52141 ide hints: Fixes them with FPC 2.6.4 see Issue #29982
  • r53061 FindDialog: fix reading actual position the finddialogform for Left and Top. Issue #0030668.
  • r53085 TNoteBook: fix deleting pages. Issue #0030688.
  • r53133 SynEdit: fix space-trimmer, incorrectly sending 0-based x pos. fixes issue 0030684 (crash in ifdef lowlighter)
  • r53122 Finnish translation for jsonviever and tachart by Seppo Suutarla.
  • r53298 Qt: keep current ItemIndex. Issue #0028597
  • r53301 LCL: Setting TControl.Color must set TControl.ParentColor to false incl sending CM_PARENTCOLORCHANGED (Issue #0030854, based on patch by Pascal Riekenberg).
  • r53292 lcl: Do not check for Text property directly in TextChanged. Part of issue 30851.

New in Lazarus 1.6.0 (Feb 18, 2016)

  • r51087 IDE: Prevent crash when clicking button "Change Build Mode" and Cancel in dialog. BackupBuildModes is not called always. Issue #29292
  • r51114 Qt: do not restore hints which are not visible by lcl.
  • r51166 Revert r51068 and r51087 + cleanup. Issue #28059 and Issue #29292.
  • r51229 ide: fix Options changed through "Change Build Mode" CoolBar button isn't respected by the compiler. Issue #28059
  • r51264 Qt: fixed compilation with QTOPIA define. Issue #0029379
  • r51302 QT: Fix T(Float)SpinEdit OnChange. Issue #0029343.
  • r51231 Revert r50906. Prevented docking the Search Results window.
  • r51261 IDE: Support dotted unit names in FilenameIsPascalSource. Issue #29363.
  • r51267 IDE: Fix moving up/down in ListFilterEdit. Also don't use Listbox.ItemHeight when = 0. Issue #29385.
  • r51275 IDE: Move the InvertAssignment from Refactor to Source submenu in source editor's popup menu. Already moved in main menu earlier.
  • r51284 IDE: fix source editor tab popup menu AV. Issue #29394
  • r51318 IDE: update commands on source editor popup
  • r51232 fpvectorial: Support rotated linear gradients. Support entity- and page-relative coordinates for gradient vectors.
  • r51257 fpvectorial: Rectangle, circle and ellipse entities support all linear gradients, translation and rotation.
  • r51262 fpvectorial: Complete rotation and translation for all 2d segments of TPath
  • r51297 fpvectorial: Fix rendering of rotated text
  • r51255 DBNavigator: restore the icons for "delete" and "cancel" that got lost in r32029. Issue #0029359.
  • r51256 Components, sqlitecomponenteditor: less hints.
  • r51266 TAChart: Add "ResetFont" to drawing interface to fix issue 27163 without interfering with nogui widgetset.
  • r51269 (r51270) codetools: CleanCodeFromComments added parameter KeepDirectives
  • r51273 (r51274) IDE,lazbuild: update package main source file if directives changed, bug 29391
  • r51307 TAChart: Add missing "ResetFont" for TAggpasDrawer forgotten in r51266. Issue #29421
  • r51286 LCL: grids: partially revert r49016 that prevents OnSelectEditor when entering cell by keyboard. Issue #29191
  • r51317 grids: Do not reset Offset in keyboard Events. Issue 29420, patch by Michl
  • r51287 TListFilterEdit: removed LCLQt workaround, Qt: unset selection when itemindex is changed. Issue #29385
  • r51303,r51304 Fix IFDEF + OI: Use normal CheckBox as Boolean editor until problems with CheckBoxThemed are solved. Issue #29406 and Issue #29412.
  • r51312 lazcontrols: prevent AV in TTreeFilterEdit.RestoreSelection if treeview is nil. Issue #29441
  • r51316 debugger: check GetTextMetrics result in TAssemblerDlg.DoEditorOptsChanged. Issue #29429
  • r51334 LCL: don't prevent AutoSizeDelayedHandle for minimized windows. Issue #29445
  • r51359 LCL: TCustomForm: fixed crash with sparta docked , added check for Target nil in SetFocusedControl.
  • r51361 LCL: Don't turn TScrollBar.Visible False when changing Kind property. AScrollBar.Show did not work due to flag tests. Issue #29422.
  • r51337 IDE: fix WM_SIZE loop when restoring maximized IDE and using AnchorDocking. Issue #28096
  • r51338 IDEIntf, AnchorDocking: make ResetSplitters public and use it in TMainIDEBar.InitPaletteAndCoolBar. Related to Issue #28096
  • r51345 anchordocking: check HostDockSite in TAnchorDockMaster.CloseUnneededControls
  • r51346 IDE: fix InitPaletteAndCoolBar for non-docked IDE. Regression from r51338. Issue #28096
  • r51347 anchordocking: really find MainIDE site in AdjustMainIDEWindowHeight.
  • r51360 IDE: fixed crash when IDE is closing
  • r51362 IDE: Prevent component selection on startup in ComponentList. Issue #29454.
  • r51358 Qt: fixed painting on TGroupBox. Issue #28155
  • r51381 Qt: fixed hint changing of TTrayIcon. Issue #29478
  • r51443 Qt: proper resize QMDIArea if any of LCLObject child wincontrols are aligned alTop,alLeft,alBottom or alRight. Issue #29529
  • r51444 Qt: fix activate/deactivate signal on mdichild forms without any control. Issue #29528
  • r51476 Qt: fixed mouse events in TQtGroupBox. Issue #0029572
  • r51378 Converter: Do not convert to UTF8 functions any more. Not needed with the new Unicode system.
  • r51379 Converter: Change global procedures into methods of TConvertSettings.
  • r51380 Converter: Refactor code for loading and saving settings into procedures. Don't save when Cancel was clicked.
  • r51385 codetools: fix unused units feature broken by r50266. Issue #29486
  • r51451 IdeIntf: Make a freed BitMap Nil.
  • r51389 fpvectorial: Fix compilation error with fpc 2.6.4
  • r51402 favorites: use IncludeTrailingPathDelimiter for config path
  • r51403 packagetabs: use IncludeTrailingPathDelimiter for config path
  • r51415 LazControl: Show multiline caption of TCheckBoxThemed correctly. Issue #29504.
  • r51454 LazControls: Fix TThemedCheckBox.KeyUp. Issue #0029406.
  • r51387 Turbopower_ipro: New files for Iphttpbroker and its example from Silvio Clécio. Issue #29483.
  • r51388 Turbopower_ipro: Update package for Iphttpbroker. From Silvio Clécio. Issue #29483.
  • r51429 Turbopower IPro: Fix default color for HTML inputs on Windows. Issue #29483, patch from Silvio Clécio.
  • r51430 Turbopower IPro: Fix bg color for CSS style in TCustomEdit and TRadioButton. Issue #29483, patch from Silvio Clécio.
  • r51431 Turbopower IPro: Added functions FindNode, FindNodeByElemId and FindNodeByElemClass. Issue #29483, patch from Silvio Clécio.
  • r51432 New example for IPro FindNode functions. Issue #29483, from Silvio Clécio.
  • r51434 Turbopower IPro: Fix compilation with FPC 2.6.4. Issue #29483, patch from Silvio Clécio.
  • r51439 TurboPower_ipro: Fix background color of html input controls, based on patch by Silivo Clecio (Issue 0029483). Fix typo.
  • r51441 TurboPower_iPro: Script to add component icons to res file. Add icon to new TIpHTTPDataProvider (provided by Péter Gabor).
  • r51442 TurboPower_iPro: Slightly modify icon of TIpHttpDataProvider to distinguish it from TIpFileDataProvider.
  • r51447 TurboPower_iPro: Final fix of issue Issue #29483 - Use correct default of input node background color, assign it to the control's color.
  • r51457 (r51458) fpc rpm: clean up /usr/share/doc/fpc-*
  • r51472 lcl: lclstrconsts slovak translations from Slavo Gbúr. Issue 29570 Patch from Denis Kozlov
  • r51512 LCL: regenerated translations
  • r51513 Translations: French translation update by Gilles Vasseur, bug 029586
  • r51528 Translations: Hungarian translation update by Péter Gábor, bug 29551
  • r51526 Qt: fixed modal stack under qt-win32. Issue #29602
  • r51531 LazControls: Fix alignment of caption for TThemedCheckBox.Alignment = taLeftJustify. Issue #0029603.
  • r51556 TurboPower_IPro: Fix notification procedure when DataProvider is destroyed.
  • r51557 Translations: improved Russian translation
  • r51562 Keymap: fix cache / update on remove
  • r51563 Keymap: fix, remove deleted entries from category.
  • r51564 Gtk2: fixed bsToolWin sizing. issue #29553
  • r51569 Fix memory leak in HtmlHelp_IPro example project. Issue #29611.
  • r51574 SynEdit: fix scroll pos after folding. issue 0029534
  • r51576 SynEdit: fix invalidate (repaint) on line selection through gutter click / issue 0029490
  • r51578 SynEdit: fixed (un-)indent selection in linemode (select via gutter). Issue 0029591
  • r51583 LazControls: Fix a regression in ListFilterEdit caused by r51267, affecting Win32 widgetset. Arrow key in filter did not select list items.
  • r51585 TAChart: Fix mouse-wheel-zooming with fixed chart center.
  • r51588 LCL: Pass the PartStart parameter of TCustomListView.FindCaption forward. It was ignored.
  • r51605 Translations: improved Russian translation
  • r51619 GTK2: Fix TFloatSpinEdit not being unconstrained when MinValue = MaxValue. Issue #0029645.
  • r51620 QT: Fix TFloatSpinEdit not being unconstrained when MinValue = MaxValue.

New in Lazarus 1.6 RC 2 (Jan 23, 2016)

  • LCL INTERFACE CHANGES:
  • LCL Changes:
  • Added TFlowPanel in ExtCtrls.pp
  • The TreeNodes of TShellTreeView are now of type TShellTreeNode. In order to access the nodes as such, you need to explicitely cast the node to TShellTreeNode. The TShellTreeNode class provides the following functions and properties
  • ShortFilename: returns the filename without path
  • FullFilename: returns the fully qualified filename
  • IsDirectory: returns True if the node represents a directory
  • BasePath: returns the basepath of the node
  • Added 'iscancel' parameter to QuestionDlg. If no cancel button is explicitely set, mrCancel is returned in case the dialog is closed with ESC or system close button
  • Added support for TCustomEdit.TextHint
  • Added TTimeEdit in editbtn.pas
  • IDE Interfaces Changes:
  • Quick fix for fpc message Local variable "i" does not seem to be initialized inserts an assignment.
  • Local variable completion (e.g. Complete Code on "i:=3;") now groups variables of same type. You can get the old behaviour in Tools / Options / Codetools / Code Creation / Group automatically defined local variables.
  • IDE Changes:
  • Editor:
  • Basic multi-caret mode
  • Option for multi-line notebook-tabs
  • line-number part of gutter now allows to select the current line, or several lines.
  • Project:
  • Additions and Overrides are now added as last. Formerly they were added after the inherited and before the custom compiler options.
  • Messages Window:
  • The IDE now warns when there are duplicate units or include files in packages.
  • Success line. New option to show compiler message "n lines compiled. m sec". Tools / Options / Messages Window / Show FPC message "lines compiled"
  • Desktops:
  • See Desktops
  • Multi-monitor screen layouts are supported by the IDE.
  • IDE CoolBar and Editor Toolbar:
  • A new configurable IDE CoolBar replaces the static Toolbar. It shares settings GUI with EditorToolbar which was moved to IDE's codebase. The command set that can be selected was refined. Earlier only IDEMenuCommands could be selected, now a limited selection of all IDECommands.
  • EditorToolbar package is empty and deprecated. It's functionality is now part of the IDE. Please uninstall it from the IDE because it will be removed from the 1.8 release.
  • Object Inspector:
  • The Boolean property editor now uses a CheckBox by default. A ComboBox with "False", "True" can still be selected in options.
  • Environment:
  • new Environment setting "Multiple Lazarus instances" to set up what happens if Lazarus is started with a file in command parameter.
  • lazbuild:
  • new option --verbose-pkgsearch to show what packages are searched and found.
  • lazarus:
  • new option --force-new-instance to force opening a new instance and ignoring the "Multiple Lazarus instances" option.
  • Code navigation and completion for class helpers, record helpers and type helpers.
  • COMPONENTS:
  • LazControls:
  • Added TListviewFilterEdit, having the same idea as other FilterEdits but working on TListview. This is still very basic and will be improved later.
  • All FilterEdits now use TextHint property for the grey '(Filter)' text which is shown when not active.
  • Added TCheckBoxThemed, a custom drawn CheckBox. It is in development for use as OI Boolean property editor.
  • Codetools:
  • Support for type, record and class helpers
  • Support for operator type evaluation "I := A + B;"
  • Improved support for ObjCCategory
  • Class completion of properties can use prefixed variable name and const parameter. See Options / Codetools / Class Completion.
  • New option Options / Codetools / Code Creation / Insert new event methods to section
  • New option Options / Codetools / Identifier Completion / Miscellaneous / Jump to error
  • It now finds sources of units installed via fppkg.
  • Project Groups:
  • New IDE package to manage projects, packages and Pascal files
  • Docked Form Editor:
  • The package implementing a docked form editor can be found in components/sparta/dockedformeditor/sparta_dockedformeditor.lpk. It makes the most sense with AnchorDocking but can be used also without it
  • Package Tabs:
  • New IDE package to replace source notebook tabs/pages with buttons sorted by package and name, see Package Tabs
  • Favorites:
  • New IDE package to add projects to favorites and keep them up in the "Open" button drop-down menu, see Favorites
  • Debugger / win 32:
  • The version of gdb shipped with the win32 installer was updated to 7.7.1
  • PRO:
  • solves some gdb crash issues for all current window versions (7 and up)
  • solves a bug, that environment changes were not passed on
  • CHANGES AFFECTING COMPATIBILITY:
  • LazUtils:
  • Unit LazUTF8 now sets UTF8 as default codepage when compiled with FPC 2.7+ making programming with Unicode easier, but there are some incompatibilities. Read more.
  • There are wrapper functions around LCL, CodeTools and LazUtils for some string functions defined in LazUtils. The wrappers are now deprecated. They can be compeletely disabled by defining "DisableWrapperFunctions". They will be removed in the next release (after 1.6).
  • LCL incompatibilities:
  • LazUtils CopyFile behaviour changed
  • QuestionDlg modal result on close by ESC key and system close button changed
  • IDE incompatibilities:
  • SynMemo is now Deprecated
  • TSynEditExporterHtml behaviour has changed
  • TSynCustomHighlighter.GetIdentChars implementation has changed
  • EasyDocking isn't supported in the IDE anymore

New in Lazarus 1.4.4 (Oct 22, 2015)

  • r47800 TDateEdit: refactor GetDate/SetDate; reduce the need for parsing Text for GetDate; force valid text in control when DirectInput = False
  • r49078 ToDo List: Fix column widths, was wrong in OSX. Issue #27866.
  • r49543 LazFileUtils: FileIsReadable on Windows should only return True if the file actually exists.
  • r49559 Examples: fix memoryleak in ResExplorer
  • r49560 Examples: ResExplorer: clear contents of the pagecontrol if ther is nothing to be shown or when opening another file.
  • r49321 LCL: Fix wrong ListBox painting in WinXP. Issue #28275.
  • r49561 LCL-Win32: Take care of standard style painting when reducing flicker in TListbox. Issue #28146.
  • r49587 IDE: Include compatibility information for compatibility with W8/W81/W10. Issue #0028435.
  • r49589 TAChart: Fix missing minor ticks #28466 Issue #issue #28466.
  • r49595 LCL: in TMaskEdit.RestoreMask only clear the control if it is actually masked. Issue #0028477.
  • r49599 IDE: In "Needs building" dialog prevent a crash when text was typed in Combobox. Layout improvements. Issue #28456.
  • r49686 TShellTreeView: publish properties StateImages, OnGetImageIndex and OnGetSelectedIndex. Patch by wp. Issue #0028539
  • r49695, r49849 Translations: Hungarian translation updates by Péter Gábor
  • r49703 IdeIntf: Use ShortCompareText in both compare functions for Clasnames. Issue #28546.
  • r49711 LCL: Prevent "Abstract method called" also with FPC 3.0.0. Issue #27754.
  • r48689 LazUtils: Implement abstract methods for classes TXMLObjectWriter / TXMLObjectReader. Issue #27817, patch from Vojtech Cihak.
  • r49712 LazUtils: Prevent "Abstract method called" for TXMLObjectWriter / TXMLObjectReader also with FPC 3.0.0. Issue #27817.
  • r49480,r49489 OI: Update text value also when the control is changed but property remains the same. Issue #23918.
  • r49726 LCL: Make TUpDown.ArrowKeys work. Issue #28537
  • r49730 Qt: fixed font assignment when parentFont=false and font is default one. Issue #28437.
  • r49731 Qt: fixed IndexOfTabAt() when bidiMode of TPageControl is RTL. Issue #28591.
  • r49741 TShellTreeView: fix populating the tree when FileSortType at designtime is not fstNone. Issue #0028565.
  • r49750 IDEIntf: fixed DBGrid column deletion prompt, Issue #28611
  • r49751 LCL: Publish TEditButton.ParentShowHint (Issue #0028492).
  • r49733 TAChart: Publish OnResize event.
  • r49760 LazReport: lrCodeReport RunReport procedure now takes an argument for optionally showing the report after run
  • r49763 LazReport, lrCodeReport: add missing layout text property, from Frans van Leeuwen. Issue #28609.
  • r49764 LazReport, lrCodeReport: sample for testing text layout.
  • r49766 TFloatSpinEdit: don't "eat" Copy/Cut/Paste keyboard shortcuts (Issue #0028626).
  • r49768 Qt: avoid Qt assertions when setting minimum width of statusbar panels.
  • r49769 Qt: fixed clientrect sync between lcl and qt for TCustomControls. Issue #28596
  • r49839 LCL: do not call DoCallKeyEventHandler() inside TWinControl.KeyDown() if Key = 0, since it might be that our control is destroyed inside OnKeyDown event. Fixes regression of Issue #28537
  • r49856 LCL, fix crash on inserting record in multiselect dbgrid, from Luiz Americo. Issue #28688.
  • r49860 LCL: TFileNameEdit - use TOpenPictureDialog if kind of dialog is dkPicture.
  • r49889 SynEdit, Highlighter: more html5 tags. Issue 28547 patch by Janusz
  • r49890 SynEdit, Highlighter: more css3 tags. Issue 28548 patch by Janusz
  • r49891 SynEdit: invalidate if Markup.enable changes. Issue 0028729
  • r49892 SynEdit: fix drag and drop selection-text, drop (move) after multi-byte chars. Issue 0028724
  • r49893 IDE: Fix 2 stage key-combos issue 0027992
  • r49896 LCL, grids: fix range check error on pasting empty cells, fix by wp, Issue #28747.
  • r49885 LCL, grids: make ClearSelections public, from wp, Issue #27437
  • r49904 tools: updatemakefiles: using only lazutils instead of lclbase
  • r49905 tools: updatemakefiles: fixed calling it from inside tools
  • r49906 IDE+lazbuild+makefiles: on darwin use -gw instead of -g

New in Lazarus 1.4.2 (Jul 30, 2015)

  • r48777 Qt: unset taskbar button only when showintaskbar=stNever.
  • r48782, r48812, r48819, r48834, r48838, r48883, r48901, r48945, r49035, r49144 Translations: updated French translation by Gilles Vasseur
  • r48784 IDEIntf: regenerated translations
  • r48785 IDEIntf: deleted file, which was committed by accident
  • r48786 SynEdit: regenerated translations
  • r48787, r49272 Translations: Hungarian translation updates by Péter Gábor
  • r48796 IDE: In BuildMode config dialog, prevent hiding Name in the grid when InSession is not shown. Issue #27881.
  • r48809 IDE: Update project inspector after renaming a unit. Issue #27909.
  • r48795, r48811 translations: German: updates from Swen Heinig
  • r48824 TAChart: Fix ParentColor not being stored in lfm file. Patch by Balázs Székely (Issue #0027787).
  • r48840 Qt: do not report stalled focus changes if widget is invisible. Issue #27960
  • r48842 Qt: cleanup unused local variables, removed one warning. Issue #27951
  • r48843 Gtk2: fixed menu item separator. Issue #27905
  • r48847 EditorToolBar: regenerated translations
  • r48848 LazReport, AddFunction addon: regenerated translations
  • r48849 SynEdit: regenerated translations
  • r48850 LCL: regenerated translations
  • r48851, r48866, r48877, r48881, r48896, r48897 Translations: Spanish translation update by José Martínez with some help of Jesus Reyes, bug 27803
  • r48854 LazUtils: TFileSearcher.Search: if SearchPath is empty, search current directory.
  • r48858 LazUtils: TFileSearcher.Search: do not remove directories that are subdirectories of another directory from ASearchPath, when ASearchSubDirs is False. Issue #0027965.
  • r48885 LHelp: i18n-ed Open Dialog (bug 27977) and updated Russian translation
  • r48892 lazbuild: save lpk list after compiling an lpk, bug 27991
  • r48868 IDE: fix alt-modifier in dutch translation for main menu. Issue #0027967.
  • r48870 Dialogs: Add another overloaded version of MessageDlg (Delphi compatibility). Issue #0027964
  • r48874 Packager: Don't hide selection in the ListView of Open Installed Package dialog.
  • r48875 Qt: fixed regression with focus of controls on mdichild forms. Issue #0027982
  • r48878 Packager: When adding a new component, update palette page only if there is one. Issue #27985
  • r48879 Qt: do not assume that parent of TQtPage is TQtTabWidget.
  • r48768 IDE, fieldsEditor: show a message if a field cannot be created, Issue #26867.
  • r48871, 48872 LCL, grids: make sure the grid is notified about text is changed on pressing the first char, Issue #27955.
  • r48887 Printers, win: check for PDev.DevModeSize that prevents error 204, from DaLiv, Issue #27970.
  • r48888 LazReport, fix image exporter filename, from willians cleyton, Issue #27986.
  • r48889 IDEIntf, dbpropedits: check when retrieving fields definitions, Issue #27962.
  • r48899 IDEIntf: fixed typo
  • r48900 IDEIntf: regenerated translations and updated Russian translation
  • r48941 Win32: fixed range check error.Patch by Petr-K. Issue #28039.
  • r48956 Packager: improved i18n, bug 28021
  • r48957 IDE: regenerated translations and updated Russian translation
  • r48963 IDE: improved layout and i18n by replacing separate buttons with ButtonPanel, bug 27966
  • r48964 IDE: improved wording in several dialogs ('Where' -> 'Search scope' etc.), bug 27966
  • r48965 IDE: Improved layout and i18n of Conditional Defines dialog, bug 27966
  • r48966 Packager: improved Package Links dialog i18n, bug 27652
  • r48967 IDE: regenerated translations and updated Russian translation
  • r48988 Qt: implemented TMemo.Caret.Y position.
  • r49001 IDE: improved external tool editor dialog layout, bug 28067
  • r49002 IDEIntf: improved i18n, regenerated translations and updated Russian translation, bug 28067
  • r49003 IDE: improved component palette pages list i18n, bug 28061
  • r49004 IDE: regenerated translations and updated Russian translation
  • r49007 LCL: Fix a ChangeBoundLoop-Detected-Error with TControlBar. Issue #27855
  • r49019 TAChart: Fix crash of IDE if TPieSeries is linked to a TUserDefinedChartSource
  • r49020 TAChart: Fix crash of IDE if TFitSeries is linked to a TUserDefinedChartSource
  • r49026 Qt: change kind of focuspolicy when controlstyle contains csNoFocus. Issue #28090
  • r49091 SynEdit: Highlight colon in lfm. Issue 0028112
  • r49069 MaskEdit: fix RestoreMask.
  • r49081 Qt: create properly sized device context in GetDC(). Issue #28106
  • r49121 LazReport, when formatting numbers check that value is really numeric Issue #28114
  • r49154 LazReport, fix loading of old binary reports (older than version 28), modified patch from Tsvetoslav, Issue #27179
  • r49165 EditButton: fix responding to Shift-Tab (Issue #0028161).
  • r49167 MaskEdit: implement FormatMaskText function (Issue #0028167).
  • r49170 LCL-Win: Prevent flicker in TListbox. Issue #28146
  • r49171 IDE: Ask 'Continue search from the beginning?' only when not already in beginning. Issue #28177.
  • r49172 Menueditor: Fix error when moving menu items. Issue #27849.
  • r49187 Win32: handle ofDontAddToRecent option in TOpen/SaveDialog (Issue #0027682).
  • r49192 SynEdit: Fixed Option for MouseLink (when not using MouseActions)
  • r49197 MaskEdit: fix FormatMaskText.
  • r49217 IDE: improved Code Browser i18n, bug 28204
  • r49218 IDE: regenerated translations and updated Russian translation
  • r49211 Qt: better check if variant is really valid handle.
  • r49214 LCL: fix TDBRadioGroup value not set when not in editmode, from Erwin van den Bosch, Issue #25754.
  • r49222, r49210 SynEdit: Fixed Option for MouseLink (when not using MouseActions) / ssMeta on MAc
  • r49283 SynEdit: Fixed overflow error
  • r49289 IDE: Don't select the first component in ComponentList at startup. Issue #28260
  • r49295 IDE: fixed Version Info dialog stringgrid title i18n and made some fixes/improvements to Russian translation, Issue #28251
  • r49299 Qt: more safe delete of viewport. Issue #28264
  • r49302 IDE: improved 'Show files to be deleted' dialog i18n, bug 28251
  • r49303 IDE: regenerated translations and updated Russian translation
  • r49312 Debugger, CallStack window: localized initial 'Max 10' button caption, shortened 'Goto' button caption and changed source column caption ('Source' -> 'Location')
  • r49313 IDE: regenerated translations and updated Russian translation
  • r49310 TabOrder dialog: Prevent an extra item under EditButton. Issue #28191
  • r49317 IDE: Respond to Enter in SearchResultsView when focus on FilterEdit. Issue #28277
  • r49361 Qt: proper clear of message in QStatusBar. Patch by David Jenkins. Issue #28307
  • r49362 Qt: fixed items sizing in TListView.Also, added center alignment of text for vsIcon viewstyle.Patch by David Jenkins, modified by me. Issue #28212
  • r49368 MaskEdit: Fix loading text. Issue #0028328.
  • r48606, r49401 Prevent "Abstract method called" with FPC 3.0. Issue #27754.
  • r49420 Gtk2: fixed show/hide of TListBox. Issue #28341
  • r49398 LazDataDesktop: improved 'Connect to database' form layout
  • r49399 LazDataDesktop: cleanup
  • r49400 LazDataDesktop: only show submenu for 'New connection' menu item, do not show dialog with rougly the same content, bug 28337
  • r49413 LazDataDesktop: fixed 'New connection' main menu item i18n, also made sure that 'New connection' dialog is accesible with Ctrl+Alt+N shortcut, bug 28337
  • r49422 LazDataDesktop: disabled 'New connection' dialog also in context menu, bug 28337
  • r49476 Debugger, GDBMI: leave idle, if dbg is stopped, errored or destroyed. Issue #0028335
  • r49301 LCL: TCustomMaskEdit, do not set selection if control isn't focused. Issue #17942
  • r49512 LCL: fixed TMaskEdit left arrow does not move cursor. Issue #28385
  • r49513 TAChart: Fix incorrect usage of infinity values, patch by Vít Ondruch Issue #0028386

New in Lazarus 1.4.0 (Apr 27, 2015)

  • LCL Changes:
  • Added methods and utilities to load objects from FPC resources: TGraphic.LoadFromResourceName(), TPicture.LoadFromResourceName(), TCustomImageList.AddResourceName(), LoadGlyphFromResourceName().
  • Changed all LCL resources from LRS to RES. As a result they can be edited in executables using resource editors on Windows platform.
  • DBImage changes versus 1.2: DbImage implements loading stream directly if it doesn't have a known header, WriteHeader property. This makes writing image header optional improving compatibility with Delphi controls - see revision 43779.
  • Translations unit: SetFuzzy (boolean with default value false) parameter was added to TPOFile.Add method. It allows to mark PO entry as fuzzy (when true). As this parameter has default value (false), the current code which uses this method is not affected.
  • TDateTimePicker and TDBDateTimePicker components were added. They are Delphi compatible and are installed by default, but have their own package instead of being part of LCL.
  • TComboBoxEx and TCheckComboBox components were added. They are Delphi compatible and are part of LCL.
  • IDE Interfaces Changes:
  • Easier hint windows in IdeIntf
  • Unit IdeHelpIntf has a new THintWindowManager class. It was collected from similar code from many places and refactored into a class. It is also used by Object Inspector which already is part of IdeIntf. The class uses THintWindow (Forms unit) internally and support the traditional text hints and also external hint renderers.
  • In Lazarus IDE, the external renderer now is the TurboPowerIProDsgn package. This refactoring was related to fixing a long time nasty crash bug which prevented including TurboPowerIProDsgn by default in BigIde. Now it is included.
  • IDE CHANGES:
  • Resources:
  • All IDE resources are stored in RES files now.
  • Component images can be loaded from resources stored in RES files now.
  • LazRes and LrsToLfm have been improved to assist in resource migration process.
  • Project options has a 'Resource' section which allows to add any user resources which are stored in the project .RES file together with project icon, manifest and version information.
  • Project version information was extended to allow saving build-related attribute information.
  • Editor:
  • Auto-Indent now supports "tab only". If a new line is started, the indent of the previous line is recreated using tabs. And then either spaces or cut off.
  • Keyword-pair/triplet highlight (matching begin,end) can be turned on/off for each pair/triplet
  • Keyword-pair/triplet supports if/then/else
  • Compiler message marks. Each compiler message shows an icon in the left gutter, a wavy underline in the text and a mark on the right gutter. You can right click on the left icon to get context actions, e.g. Quick Fixes.
  • Refactoring tool Show Abstract Methods now supports class interfaces.
  • Identifier completion box (Ctrl+Space) has now options to disable sorting for scope and to disable putting the recently used identifiers top. If you disable both the list is sorted alphabetically.
  • Debugger:
  • Attach: List available processes (Windows/Linux/OSX only)
  • Debug-Inspector: Select member values (class/record/(dyn)array/pointer-deref) by double click on row
  • Allow single step from exception to except/finally block (includes stepping through implicit except blocks, at then end of some methods).
  • Also fix single step now works, if it steps over an ignored exception.
  • BETA: Alternative debugger fpdebug [blog]
  • Designer:
  • New Undo feature supports component moving, resizing and deleting. Also property changed by Object Inspector can be undone.
  • Component palette:
  • Palette is fully configurable. Pages can be added, pages and components can be reordered and components can be moved between pages freely. The difference between default layout and user layout is stored in environment options. Layouts can be exported/imported, too.
  • Help:
  • The Help/Help menu starts the lhelp help viewer and shows all CHM files (if present and configured, as done by e.g. the Windows installer)
  • lhelp supports diagnostic output to a log file (using e.g. --debug-log=)
  • Project:
  • The target processor option (don't confuse this with the target CPU) now uses the -Cp option instead of the -Op option. This is required by ARM processors.
  • The compiler in the project's compiler options is used to setup codetools. Formerly the IDE asked the default compiler from the Tools / Options using the project's target OS and CPU. That means you can now use build modes to switch between different compiler versions and code navigation will use the right settings.
  • When target OS/CPU are not given (aka empty or default) the IDE/lazbuild now queries the compiler for its default target platform. In other words: For cross compiling it is now enough to select the compiler. Formerly the defaults were taken from the IDE's OS/CPU.
  • The IDE now parses the -Xp and -V options in the custom compiler options to find the right compiler.
  • Project Option "Main unit has uses section containing all units of project": Formerly the main source was only updated when it was enabled. Now: Only additions are affected by this option. Renames and removes always updates the main source if it is Pascal.
  • Under Unix/Linux the IDE now opens always a project (lpi) in its physical path (i.e. all symlinks are resolved). This is compatible with FPC, which always uses the physical directory as working directory.
  • Project Inspector:
  • The Inspector now supports multi selection. For example delete multiple files or set properties.
  • You can drag files from other applications and drop them on Inspector to add files to the project.
  • You can drag files to other directories (drag the files onto a file or directory in the package editor).
  • New menu item: Move/copy selected files to a directory. This makes it easy to split a big package into several sub directories.
  • Packages:
  • Packages now use by default the project compiler. This comes from a change to the macro $(CompPath), which now resolves to the project compiler.
  • The target processor option now uses the -Cp option instead of the -Op option. This is required by ARM processors.
  • Under Unix the IDE now opens always a package (lpk) in its physical path (i.e. all symlinks resolved). This is compatible with fpc, which always uses the physical directory as working directory.
  • Package Editor:
  • The package editor now supports multi selection. For example delete multiple files or set properties.
  • You can now copy or move files via drag and drop between package editors and to/from project inspector.
  • You can drag files from other applications and drop them on package editors to add files to the package.
  • You can drag files to other directories (drag the files onto a file or directory in the package editor).
  • New menu item: Move/copy selected files to a directory. This makes it easy to split a big package into several sub directories.
  • Packages are now compiled in parallel.
  • Messages:
  • This window was completely rewritten. Every tool output is now clearly separated by a header line.
  • Each external tool (e.g. the compiler) now runs in a thread. The same for the biggest part of the parser.
  • The IDE now passes -vbq (message ids and full file names) to the compiler.
  • The window can handle much bigger outputs, so you can compile with more verbosity
  • The IDE now knows where each message came from and what tool has created them. For example you can see the reason why a package was compiled and the parameters via the "About" menu item.
  • Switch between English and translation at any time
  • The fpc message parser uses the message ids, the errore.msg file and the translated error*.msg file. The -Fr compiler option (pass custom fpc message file) on Project/Package Options / Compiler Options / Messages was removed.
  • Search in Messages window
  • Filter for message types and urgency (hint, note, warn ...)
  • Choose file names styles (short, relative, full)
  • Change the colors in Tools / Options / Messages
  • when you insert/delete text in the source editor the messages are now updated in line *and* column number.
  • The Compile Info window was removed because it had no maintainer. This includes the options "Show compile dialog" and "Autoclose compile dialog".
  • Quick fix for fpc message "No implementation for interface method found", shows abstract methods dialog
  • Miscellaneous:
  • new IDE macros $(LazVer) and $(FPC_FULLVERSION), see here
  • Compiling for x86-64 Linux, *BSD and Solaris now passes -Cg (Generate PIC) code to the compiler. Use -Cg- if you don't want that.
  • Plugins:
  • Leakview now supports GDB stack traces without source file names and only mangled identifiers.
  • TurboPowerIProDsgn is installed by default (is part of BigIde). It means all hints and info panels have a nice HTML formatting with colors and links for sources. The package could be installed also earlier for the same effect but there was a crash bug which prevented it from being included by default.
  • EditorToolbar is installed by default (is part of BigIde). It can be hidden from View menu, thus uninstall is not necessarily needed for anyone. Lots of bugs in EditorToolbar were fixed.
  • CHANGES AFFECTING COMPATIBILITY:
  • TEditButton was rewritten:
  • TEditButton has been redesigned as a "grouped control". It now inherits from a different ancestor (it is no longer derived from TCustomMaskEdit). The new design now properly aligns and anchors.
  • Effects:
  • Derived components can no longer override (or use) all of the (protected) methods of TCustomMaskEdit. Most of the commonly used methods have been propagated with new names reflecting the new design e.g.:
  • Change -> EditChange
  • DblClick-> EditDblClick
  • When the component has focus, then checking if (ActiveControl is TButtonEdit) will be False, since ActiveControl in this case is the internal edit control (of type TEbEdit). (Code that checks for (ActiveControl is TCustom(Mask)Edit) will still evaluate to True.)
  • Remedy:
  • Use EditChange, EditDblClick etc. in derived controls.
  • Use (ActiveControl.Parent is TEditButton), or alternatively (ActiveControl is TEbEdit)
  • TControl.GetChildsRect renamed to TControl.GetChildrenRect:
  • Effect: compile error: There is no method in an ancestor class to be overridden: "TYourControl.GetChildsRect(Boolean):;"
  • Reason: Incorrect English
  • Remedy: use GetChildrenRect instead.
  • DateEdit.DialogTitle prop
  • TControlScrollBar.AutoCalcRange was removed:
  • Effect: compiler error: There is no method in an ancestor class to be overridden: "TYourControlScrollBar.AutoCalcRange;"
  • Reason: Code for calculating the AutoScroll ranges was moved from the two scrollbars to the new proteced method TScrollingWinControl.CalculateAutoRanges. This prevents an endless loop when the two scrollbars depend on each other, it simplifies the code and reduces some overhead.
  • Remedy: Override TYourControl.CalculateAutoRanges instead.
  • TDateEdit.DialogTitle property was removed:
  • Effect: Compile error if the property was set in code. LFM loader removes it from form files.
  • Reason: Unused and thus misleading and confusing.
  • Remedy: Remove it from your code.
  • TMemo, TTextStrings and TCustomStringGrid: changed behaviour of LoadFromFile/SaveToFile:
  • Effect: LoadFromFile/SaveToFile respectively LoadFromCSVFile/SaveToCSVFile now take strings in UTF8-encoding (was: system encoding) as their parameter.
  • Reason: LCL uses UTF8 internally; consistency with e.g. TSynEdit.
  • Remedy: do not use Utf8ToSys() anymore in the calls to these procedures.
  • IDE INCOMPATIBILITIES:
  • Changed parameters:
  • LazarusIDE.DoJumpToCompilerMessage: changed Line integer to TMessageLine
  • CompilerOptions.ShowAllProcsOnError: was removed, option -vb is now always passed
  • CompilerOptions.ShowNothing: was removed, not needed
  • LazarusHelp.ShowHelpForMessage: removed parameter Line. The IDE now always shows help for the currently selected line.
  • IDE Macro CompPath:
  • Effect: IDE uses the project compiler instead of the default compiler set in the IDE options.
  • Reason: The macro $(CompPath) now resolves to the project compiler. Packages are now compiled with the project compiler.
  • Remedy: Use $CompPath(IDE)
  • Old IDE does not reopen first file when opening a project:
  • Effect: When a project saved with a new IDE (1.3+) is opened with an old IDE (e.g. 1.2), the first file in the source editor is not reopened automatically.
  • Reason: The default value for Editor position is now "0", which is not stored in the lpi, creating smaller lpi files.
  • Remedy: Open the file manually.
  • IDE does not show Compile Dialog:
  • Effect: Compile Info window does not appear when compiling. Options Show compile dialog and Autoclose compile dialog are missing.
  • Reason: The code that runs the compiler was completely rewritten. The dialog needed a big rewrite too, but it had no maintainer.
  • Remedy: You can abort a compile via Run / Abort Build or its shortcut Ctrl+Alt+Shift+G. You can change the shortcut in Tools / Options / Editor / Key Mappings. The number of errors, warnings and hints are shown in the Messages window.
  • IDE/lazbuild cross compiles for different target OS/CPU:
  • Effect: When the target OS/CPU are not set (i.e. empty or default) the 1.4 IDE/lazbuild compile for a different target than Lazarus 1.2.
  • Reason: Formerly the IDE took as default its own OS/CPU. Now it queries the project's compiler and uses its default target OS/CPU.
  • Remedy: Specify target OS/CPU in Project options / Compiler options or for compiling the IDE set Tools / Configure build Lazarus.

New in Lazarus 1.4 RC 2 (Mar 4, 2015)

  • r47793 LCL: TShellCtrl: fixed slow checking for duplicates, bug 27473
  • r47782 TDateEdit: fix GetDate when DateOrder is doNone and Text has literal day- or monthnames. Issue Issue #0027454.
  • r47794 TDateEdit: Remove method DateFormatChanged: it exposes a private field that is only meant for internal use, and should not be changed by user.
  • r47790 Qt: fixed segfault when setting image list on TListView with OwnerData:=True. part of (Issue #0027469)
  • r47804 Qt: dramatically improved OnData event of TListView. (Issue #0027475)
  • r47805 Gtk2: fixed drawing images when TListView.OwnerData := true. (Issue #0027469)
  • r47812, r47817, r47818 IDE: append -dWIN9XPLATFORM when building IDE on win9x for win32
  • r47814 LCL: added a listener for CM_CURSORCHANGED in TGraphicControl (Issue #0014257)
  • r47841 LCL: fix to *r47814 for the control being in a scrolled window.
  • r47815 TShellTreeView: if Selected is a file then set the associated ShellListView.Root to the parentfolder (instead of to the file itself).
  • r47820 Qt: fixed regression with design time forms from r47674.
  • r47827 Converter: Fix converting DFM form files. Last char was left out. Issue #27446.
  • r47839 LCL: regenerated Russian translation
  • r47840 LCL: French translation update by Gilles Vasseur, bug 27478
  • r47842 LCL, ShellTreeView: improved i18n, patch by Péter Gábor with some changes, bug 27474; regenerated translations and updated Russian translationLCL: regenerated Russian translation
  • r47850 IdeIntf: Show Meta- menuitem shortcuts in Object Inspector only for Mac. Issue #27456
  • r47861 IDE: compare compiled file: ignore spaces between options
  • r47863 IDE: checking Makefile.compiled: ignore -Cg on Linux
  • r47866 TAChart: Less compilation hints and notes Issue #274884
  • r47869 LCL: gtk2: GetPreferredSize: subtract client area
  • r47871 IDE: project options: version: disable unneeded AutoSize
  • r47873 LCL: TScrollingWincontrol: GetLogicalClientRect: independent of AutoScroll to avoid cycle, GetPreferredSize: independent of AutoScroll, added extra checks if LCL clientrect is not in sync with widgetset, improved debugging preferredsize
  • r47875 LCL: TCustomGrid: disable default preferred size, because grid moves controls and change scrollbars, bug 27095
  • r47879 lazutils: fixed compilation on win64
  • r47877 IDE: Workaround for a missing DirectoryEdit event in Carbon. Issue #23063
  • r47886 LCL: win32: do not start timer when application terminated
  • r47887 IDE: editor color option: fixed layout, bug 27434
  • r47890 lazutf8: GetFormatSettingsUTF8: map common multibyte chars to ASCII
  • r47895 LCL: TTreeView: mousedown: fixed select on click on state icon
  • r47897 LCL: gtk2: GetGTKDefaultWidgetSize: ignore client area with child controls
  • r47898 IDE: designer: initialize FIsNonVisualComponent, bug 27502
  • r47900 IDE: designer: resize multiple controls: round mathematically instead of always down, needed for increase size by 1
  • r47905 IDE: Change default mouse settings for left gutter clicks
  • r47908 lcl: TCustomListView: show editor on dblclick via QueueAsyncCalls, bug 27505
  • r47913 LCL: carbon: do not use GetBestControlRect if there are child controls
  • r47920 IDE: auto create application bundle for IDE on darwin for all widgetsets
  • r47922 IDE: build laz: when clean option is on, clean up fallback directories too
  • r47924 LCL: MessageBox: default parameter Flags = MB_OK, bug 27510
  • r47928 Package editor: Prevent collapsing all tree nodes when changing file type. Issue #26188
  • r47930 codetools: fixed directive WriteableConst, bug 27512
  • r47932 codetools: identifier completion: updated list of directives
  • r47950 IDE: messages: fixed showing commandline
  • r47952 IDE: messages: about: use wordwrap
  • r47954 IDE: messages: linker errors: fixed finding them even without info message (9015) Linking
  • r47956 IDE: external tools: added TAbstractExternalTool.ReadStdOutBeforeErr, changed default to read stderr before out, needed by FPC linker errors
  • r47958 IDE: always pass -vi to FPC, needed to resolve file names without path
  • r47960 IDE: compiler options: verbosity: one column
  • r47964 IDE: compiler options: verbosity: removed -ve, IDE needs this to jump to errors
  • r47965 IDE: compiler options: removed obsolete option show summary, summary are now always shown in header
  • r47973 IDE: added TargetCPU a64
  • r47990 codetools: method jumping, class completion: support having an overload that differ only in class keyword, issue 25130
  • r47881 TShellTreeView: SetPath: take value of ObjectTypes into account.
  • r47889 Gtk2: new function Gtk2_PixBufFromBitmap(), simplified usage. patch by theo. Issue #27477
  • r47906 Qt: fixed TListView.OnData when we use TQtListWidget (vsList).
  • r47907 Qt: fixed selection behaviour of TListView.vsList when OwnerData = true.
  • r47923 Qt: fixed getting displaysize of TListView.Item drIcon. part of Issue #27509
  • r47939 Qt: do not send resize event on restore of minimized mdichild form. Issue #27518
  • r47941 LCL: TCustomListView: use drLabel instead of drBounds for listview editor bounds. Issue #27509
  • r47942 Qt: fixed TListItem DisplayRect for drLabel & drIcon. part of Issue #27509
  • r47944 Gtk2: fixed TListView displayRect for drLabel.Issue #27509
  • r47946 Qt: return correct displayrect(drLabel, drIcon) for TListView.vsList. Issue #27509
  • r47959 LHelp: Speedup communication between Lazarus and LHelp and speedup the chm search. LHelp is rebuilt if BeginUpdate is not supported.
  • r47970 IDE: Fix "All Options" parser for FPC 3.x output.
  • r47975 LHelp: Lazarus tries to save the old LHelp executable if compilation fails.
  • r47979 IDE: Take care of component palette page names that differ only by character case. Issue #27516.
  • r47982 LCL: Horizontal and Vertical Spacing for TCoolBar. Issue #27523
  • r47987 Help/LHelp: Don't scan directories in search path recursively to look for chm files
  • r47992 TCheckListBox: when user presses spacebar: if ItemIndex = -1: set it to 0 and fire OnClick; fire OnClickCheck. Issue #0024695.
  • r47993 TCheckListBox: fix possible crash introduced in r47992.
  • r47983, r47994 TI Grid: Fix and publish CheckboxForBoolean. Issue #27521.
  • r47971, r47995 IDE: Improve ComponentList window. Issues #27527, #27539
  • r48017 lcl: TWinControl: apply framewidth/height only to preferred clientarea, not to widget, bug 27538
  • r48024 LazReport: Polish translation update by Paweł Dmitruk, bug 27548. While at this, regenerated all other translations.
  • r48025 IDE: French translation update by Gilles Vasseur, bug 27546
  • r48013 Fixed Finnish translation.
  • r48014 IdeIntf: Use CheckBox as boolean editor also for Set elements.
  • r48022 Add Balazs Szekely to contributors list.
  • r48023 IdeIntf: Support restoring default value in Object Inspector for Set types. Issue #18734.
  • r48039 IDE: fpc msg parser, use console or system codepage depending on compiler version, bug 26623

New in Lazarus 1.4 RC 1 (Feb 18, 2015)

  • LCL INTERFACES CHANGES:
  • LCL CHANGES:
  • Added methods and utilities to load objects from FPC resources: TGraphic.LoadFromResourceName(), TPicture.LoadFromResourceName(), TCustomImageList.AddResourceName(), LoadGlyphFromResourceName()
  • Changed all LCL resources from LRS to RES. As a result they can be edited in executables using resource editors on Windows platform
  • DBImage changes versues 1.2: DbImage implements loading stream directly if it doesn't have a known header, WriteHeader property. This makes writing image header optional improving compatibility with Delphi controls - see revision 43779
  • Translations unit: SetFuzzy (boolean with default value false) parameter was added to TPOFile.Add method. It allows to mark PO entry as fuzzy (when true). As this parameter has default value (false), the current code which uses this method is not affected
  • TDateTimePicker and TDBDateTimePicker components were added. They are Delphi compatible and are installed by default, but have their own package instead of being part of LCL
  • TComboBoxEx and TCheckComboBox components were added. They are Delphi compatible and are part of LCL
  • IDE INTERFACES CHANGES:
  • Easier hint windows in IdeIntf
  • Unit IdeHelpIntf has a new THintWindowManager class. It was collected from similar code from many places and refactored into a class. It is also used by Object Inspector which already is part of IdeIntf. The class uses THintWindow (Forms unit) internally and support the traditional text hints and also external hint renderers.
  • In Lazarus IDE, the external renderer now is the TurboPowerIProDsgn package. This refactoring was related to fixing a long time nasty crash bug which prevented including TurboPowerIProDsgn by default in BigIde. Now it is included.
  • IDE CHANGES:
  • Resources:
  • All IDE resources are stored in RES files now.
  • Component images can be loaded from resources stored in RES files now.
  • LazRes and LrsToLfm have been improved to assist in resource migration process.
  • Project options has a 'Resource' section which allows to add any user resources which are stored in the project .RES file together with project icon, manifest and version information.
  • Project version information was extended to allow saving build-related attribute information.
  • Editor:
  • Auto-Indent now supports "tab only". If a new line is started, the indent of the previous line is recreated using tabs. And then either spaces or cut off.
  • Keyword-pair/triplet highlight (matching begin,end) can be turned on/off for each pair/triplet
  • Keyword-pair/triplet supports if/then/else
  • Compiler message marks. Each compiler message shows an icon in the left gutter, a wavy underline in the text and a mark on the right gutter. You can right click on the left icon to get context actions, e.g. Quick Fixes.
  • Refactoring tool Show Abstract Methods now supports class interfaces.
  • Identifier completion box (Ctrl+Space) has now options to disable sorting for scope and to disable putting the recently used identifiers top. If you disable both the list is sorted alphabetically.
  • Debugger:
  • Attach: List available processes (Windows/Linux/OSX only)
  • Debug-Inspector: Select member values (class/record/(dyn)array/pointer-deref) by double click on row
  • Allow single step from exception to except/finally block (includes stepping through implicit except blocks, at then end of some methods).
  • Also fix single step now works, if it steps over an ignored exception.
  • BETA: Alternative debugger fpdebug [blog]
  • Designer:
  • New Undo feature supports component moving, resizing and deleting. Also property changed by Object Inspector can be undone.
  • Component palette:
  • Palette is fully configurable. Pages can be added, pages and components can be reordered and components can be moved between pages freely. The difference between default layout and user layout is stored in environment options. Layouts can be exported/imported, too.
  • Help:
  • The Help/Help menu starts the lhelp help viewer and shows all CHM files (if present and configured, as done by e.g. the Windows installer)
  • lhelp supports diagnostic output to a log file (using e.g. --debug-log=)
  • Project:
  • The target processor option now uses the -Cp option instead of the -Op option. This is required by ARM processors.
  • The compiler in the project's compiler options is used to setup codetools. Formerly the IDE asked the default compiler from the Tools / Options using the project's target OS and CPU. That means you can now use build modes to switch between different compiler versions and code navigation will use the right settings.
  • The IDE now parses the -Xp and -V options in the custom compiler options to find the right compiler.
  • Project Option "Main unit has uses section containing all units of project": Formerly the main source was only updated when it was enabled. Now: Only additions are affected by this option. Renames and removes always updates the main source if it is Pascal.
  • Under Unix/Linux the IDE now opens always a project (lpi) in its physical path (i.e. all symlinks are resolved). This is compatible with FPC, which always uses the physical directory as working directory.
  • Project Inspector:
  • The Inspector now supports multi selection. For example delete multiple files or set properties.
  • You can drag files from other applications and drop them on Inspector to add files to the project.
  • You can drag files to other directories (drag the files onto a file or directory in the package editor).
  • New menu item: Move/copy selected files to a directory. This makes it easy to split a big package into several sub directories.
  • Packages:
  • Packages now use by default the project compiler. This comes from a change to the macro $(CompPath), which now resolves to the project compiler.
  • The target processor option now uses the -Cp option instead of the -Op option. This is required by ARM processors.
  • Under Unix the IDE now opens always a package (lpk) in its physical path (i.e. all symlinks resolved). This is compatible with fpc, which always uses the physical directory as working directory.
  • Package Editor:
  • The package editor now supports multi selection. For example delete multiple files or set properties.
  • You can now copy or move files via drag and drop between package editors and to/from project inspector.
  • You can drag files from other applications and drop them on package editors to add files to the package.
  • You can drag files to other directories (drag the files onto a file or directory in the package editor).
  • New menu item: Move/copy selected files to a directory. This makes it easy to split a big package into several sub directories.
  • Packages are now compiled in parallel.
  • Messages:
  • This window was completely rewritten. Every tool output is now clearly separated by a header line.
  • Each external tool (e.g. the compiler) now runs in a thread. The same for the biggest part of the parser.
  • The IDE now passes -vbq (message ids and full file names) to the compiler.
  • The window can handle much bigger outputs, so you can compile with more verbosity
  • The IDE now knows where each message came from and what tool has created them. For example you can see the reason why a package was compiled and the parameters via the "About" menu item.
  • Switch between English and translation at any time
  • The fpc message parser uses the message ids, the errore.msg file and the translated error*.msg file. The -Fr compiler option (pass custom fpc message file) on Project/Package Options / Compiler Options / Messages was removed.
  • Search in Messages window
  • Filter for message types and urgency (hint, note, warn ...)
  • Choose file names styles (short, relative, full)
  • Change the colors in Tools / Options / Messages
  • when you insert/delete text in the source editor the messages are now updated in line *and* column number.
  • The Compile Info window was removed because it had no maintainer. This includes the options "Show compile dialog" and "Autoclose compile dialog".
  • Quick fix for fpc message "No implementation for interface method found", shows abstract methods dialog
  • Miscellaneous:
  • new IDE macros $(LazVer) and $(FPC_FULLVERSION), see here
  • Compiling for x86-64 Linux, *BSD and Solaris now passes -Cg (Generate PIC) code to the compiler. Use -Cg- if you don't want that.
  • Plugins:
  • Leakview now supports GDB stack traces without source file names and only mangled identifiers.
  • TurboPowerIProDsgn is installed by default (is part of BigIde). It means all hints and info panels have a nice HTML formatting with colors and links for sources. The package could be installed also earlier for the same effect but there was a crash bug which prevented it from being included by default.
  • EditorToolbar is installed by default (is part of BigIde). It can be hidden from View menu, thus uninstall is not necessarily needed for anyone. Lots of bugs in EditorToolbar were fixed.
  • COMPONENTS:
  • TOpenGLControl: works now under Linux/QT/X
  • CHANGES AFFECTING COMPATIBILITY:
  • LCL incompatibilities:
  • TEditButton was rewritten:
  • TEditButton has been redesigned as a "grouped control". It now inherits from a different ancestor (it is no longer derived from TCustomMaskEdit). The new design now properly aligns and anchors. Effects:
  • Derived components can no longer override (or use) all of the (protected) methods of TCustomMaskEdit. Most of the commonly used methods have been propagated with new names reflecting the new design e.g.:
  • Change -> EditChange
  • DblClick-> EditDblClick
  • When the component has focus, then checking if (ActiveControl is TButtonEdit) will be False, since ActiveControl in this case is the internal edit control (of type TEbEdit). (Code that checks for (ActiveControl is TCustom(Mask)Edit) will still evaluate to True.)
  • Remedy:
  • Use EditChange, EditDblClick etc. in derived controls.
  • Use (ActiveControl.Parent is TEditButton), or alternatively (ActiveControl is TEbEdit)
  • TControl.GetChildsRect renamed to TControl.GetChildrenRect:
  • Effect: compile error: There is no method in an ancestor class to be overridden: "TYourControl.GetChildsRect(Boolean):;"
  • Reason: Incorrect English
  • Remedy: use GetChildrenRect instead
  • TControlScrollBar.AutoCalcRange was removed:
  • Effect: compiler error: There is no method in an ancestor class to be overridden: "TYourControlScrollBar.AutoCalcRange;"
  • Reason: Code for calculating the AutoScroll ranges was moved from the two scrollbars to the new proteced method TScrollingWinControl.CalculateAutoRanges. This prevents an endless loop when the two scrollbars depend on each other, it simplifies the code and reduces some overhead.
  • Remedy: Override TYourControl.CalculateAutoRanges instead.
  • TDateEdit.DialogTitle property was removed:
  • Effect: Compile error if the property was set in code. LFM loader removes it from form files.
  • Reason: Unused and thus misleading and confusing.
  • Remedy: Remove it from your code.
  • TMemo, TTextStrings and TCustomStringGrid: changed behaviour of LoadFromFile/SaveToFile:
  • Effect: LoadFromFile/SaveToFile respectively LoadFromCSVFile/SaveToCSVFile now take strings in UTF8-encoding (was: system encoding) as their parameter.
  • Reason: LCL uses UTF8 internally; consistency with e.g. TSynEdit.
  • Remedy: do not use Utf8ToSys() anymore in the calls to these procedures.
  • IDE INCOMPATIBILITIES:
  • Changed parameters:
  • LazarusIDE.DoJumpToCompilerMessage: changed Line integer to TMessageLine
  • CompilerOptions.ShowAllProcsOnError: was removed, option -vb is now always passed
  • CompilerOptions.ShowNothing: was removed, not needed
  • LazarusHelp.ShowHelpForMessage: removed parameter Line. The IDE now always shows help for the currently selected line.
  • IDE Macro CompPath:
  • Effect: IDE uses the project compiler instead of the default compiler set in the IDE options.
  • Reason: The macro $(CompPath) now resolves to the project compiler. Packages are now compiled with the project compiler.
  • Remedy: Use $CompPath(IDE)
  • Old IDE does not reopen first file when opening a project:
  • Effect: When a project saved with a new IDE (1.3+) is opened with an old IDE (e.g. 1.2), the first file in the source editor is not reopened automatically.
  • Reason: The default value for Editor position is now "0", which is not stored in the lpi, creating smaller lpi files.
  • Remedy: Open the file manually.
  • IDE does not show Compile Dialog:
  • Effect: Compile Info window does not appear when compiling. Options Show compile dialog and Autoclose compile dialog are missing.
  • Reason: The code that runs the compiler was completely rewritten. The dialog needed a big rewrite too, but it had no maintainer.
  • Remedy: You can abort a compile via Run / Abort Build or its shortcut Ctrl+Alt+Shift+G. You can change the shortcut in Tools / Options / Editor / Key Mappings. The number of errors, warnings and hints are shown in the Messages window.

New in Lazarus 1.2.6 (Oct 15, 2014)

  • IDE:
  • prevent crash when pressing F5 while source editor is closed. CONFLICT !
  • fixed enclose block starting with empty lines
  • Gtk2:
  • fixed form resizing at design time (by mouse).
  • fixed returning font height from TGtk2WidgetSet.GetObject().
  • implemented OnMouseMove() for TTrayIcon. Patch by AlexL.
  • include scrollbars offset in TGtk2WSCustomListView.getItemAt().
  • LCL:
  • Prevent IniPropStorage wiping configuration if collection is used
  • TControlScrollBar - fixed range check
  • gtk2 - fixed QuestionDlg showing custom buttons
  • Fix range check error in SetCaretPos in Memo. Issue #26396
  • TFloatSpinEdit - fix updating control in SetValue
  • Implement optional parameter TopForm: Boolean, for GetParentForm (Delphi compatibility)
  • Implement ValidParentForm function (Delphi compatibility)
  • minor string correction
  • TPairSplitterSide - published Constraints property.
  • TCheckListBox - dissallow check state change by keyboard VK_SPACE if item is disabled
  • fixed bug where OnSelectionChanged() isn't called in some circumstances.
  • TCustomMemo should not trigger OnEditingDone when return is pressed and WantReturns=True.Patch by wp.
  • Fix AutoAddRow when deleting the last row
  • fixed PolyBezierArcPoints in graphmath for negative values
  • added qtsystemtrayicon unit into LCL.lpk (related to r46229 which is blocked in trunk).
  • LazLogger:
  • Support setting *_debuglog environment variable I
  • Masks:
  • fix TMask.Matches() when converting the case alters UTF8Length.
  • PoChecker:
  • make CompareFormatArgs a little smarter, so it does not give false errors for strings like e.g. "Hide message at %s by inserting IDE directive {%H-}"
  • Qt:
  • unset clip only when transform of QPaintEngine is dirty.
  • use QPixmap instead of QImage for QBrush constructor.
  • fixed crash of dangling qt pointer from viewportWidget mouse event.
  • fixed crash when handle is recreated inside mouse release event (drag and drop control operation). Issue #26466
  • fixed transparency for controls without csOpaque in control style.
  • fixed color changing of TCustomPanel.
  • do not trigger shortcuts if menu item is disabled.
  • implemented TQtWSComboBox getItemHeight() and setItemHeight().
  • fixed crash with popup window when form is maximized.
  • do not trigger OnDropDown if combobox is disabled.
  • do not trigger OnItemClick when enabled state is changed.
  • fixed extracting stock icon for dialog icons.
  • fixed windowstate mismatch between LCL and Qt when QTSCROLLABLEFORMS define is on.
  • enclose BeginEventProcessing & EndEventProcessing pairs with try finally block.
  • fixed wrong states of themed checkboxes.Patch by Gabor Boros.
  • implemented OnMouseMove and OnPaint for TTrayIcon under X11.
  • fixed CopyRect() regression.
  • implemented TTrackBar.LineSize
  • implemented TQtWSListView.SetImageList. Issue #0026770
  • better patch for imageList changes in TQtListWidget.
  • fixed build under haiku.patch by olivier, modified by me.
  • SynEdit:
  • Make IsBackwardSel public
  • fixed wrong const in syneditkeycmds
  • fixed highlighting 1.02E-5 and similar.
  • fixed compilation, bug 26371
  • TAChart:
  • add properties "Font" and "UseFont" to TChartStyle
  • initial implementation of BiDiMode
  • introduce TChartArrow.Inverted for correct R2L drawing
  • publish TChart.ParentBiDiMode
  • Fix package compilation error due to missing tagraph.lrs
  • Add property SuppressPrevUnit to TDateTimeIntervalChartSource. Respect FormatSettings.DecimalSeparator for milliseconds display.
  • Publish TChartArrow.Inverted. Respect Arrow.Inverted when painting a TConstantLine series.
  • source code for chart background tutorial
  • Add Notification method to TChartListbox
  • extend TOHLCSeries for display as candlesticks. Add demo "financial" with OHLCSeries in OHLC and candlestick mode.
  • Add event OnHintLocation to TDataPointHintTool which knows the size of the hint window. Update "financial" demo to show hint window above data points.
  • Fix wmf drawer ignoring size of destination rectangle
  • Implement a windows-only solution to copying a chart to the clipboard as windows metafile. Update wmf demo.
  • Introduce class helper for saving charts as metafiles and for copying them as metafiles to the clipboard.
  • Modify candlestick plot to allow for same color of body and tails
  • TCustomEdit:
  • Dont set Modified to True in TextChanged when text is set by code
  • TControl.ChangeScale :
  • do not adjust Top and Left if Control is (topmost) ParentForm.
  • Take caption of an autosized GroupBox into account when calculating width, 3 widgetsets
  • Win32:
  • fix Edit SelStart/SelLength for MBC charsets
  • fix Win32MemoStrings Insert/Delete/SelStart/LineStart/LineLength for MBC charsets
  • fixed too many OnChange() events.
  • lazutils:
  • fixed empty result
  • regenerated translations; updated Russian translation

New in Lazarus 1.2.4 (Jun 16, 2014)

  • LCL:
  • TCustomGrid: fixed range check error when scrolling editor control
  • Grids, redraw grid on changing TitleFont where there are no Custom Columns,
  • fix (grid's) cell hot-tracking regression
  • implementation of TCoolBar Issue #25026
  • fixed TTextStrings.Exchange
  • ShellTreeView: fix SetPath (Issue #0026088)
  • QuestionDlg: fix wrong ModalResult if dialog has buttons with both mrCancel and mrAbort as ModalResult (Issue #0026094)
  • patch for align controls on TCoolBar Issue #26096
  • TCustomComboBox: call inherited (Utf8)KeyPress before changing the case (when CharCase ecNormal)
  • ensure that reset is Modified in TFieldDataLink.UpdateData even if an exception occurs (Issue #26081)
  • TToolButton: fix using AccelleratorChars (Issue #0024817).
  • LclStrConst Fix rsFixedColsTooBig and rsFixedRowsTooBig so they match current behaviour (Issue #0018590)
  • TCustomComboBox: remove redundant KeyPress method. All this is already done in Utf8KeyPress.
  • fixed TCustomListView.GetNextItem.Patch by errno.Issue #26033
  • fixed typos in comments ("extention" -> "extension"), patch by Reinier, Issue #26154
  • TControlScrollBar.ClientSizeWith(out)Bar: include space between bar and client area
  • grids, fix range check error on some GTK2 (fix also editor appearing regression introduced in r44870)
  • Translations:
  • Hungarian translation update by Péter Gábor, Issue #26144
  • Czech translation update by Vaclav Valicek, Issue #26151
  • add parameter Full: Boolean (default True) to constructor. When setting this to False it allows method ReadPOText to work correctly when reading from an internal resource (Issue ##0026021)
  • IDE:
  • component palette: no scrollbars on Carbon, layout buttons with floating layout
  • Hide CodeContext hint on tab-change, minimize and app-deactivate
  • fixed TPropertyEditorHook compiling with -CR
  • In ComponentList, set ReadOnly flag in the first TreeView showing a list of components.
  • fixed typo in Code Observer options page, Issue #26101
  • Improvements for Components dialog
  • Do not move source editor, on tab changes, codetool completion or similar actions.Issue #26051
  • Fixed ShowForm, broken in rev 44801
  • component palette: disabled scrollbars for LCL carbon widgetset
  • Debugger:
  • add option to disable loading library symbols (auto-solib-add = off)
  • Fixed crash in Asm dialog (dialog closed, while running (F9) from dlg)
  • TAChart:
  • add sources of bar series tutorial
  • fix wmf drawer crashing due to missing canvas in TADrawerWMF
  • Add event OnDrawLegend to TChart
  • add code to legenddemo to demonstrate the ownerdrawn legend, fix some layout issues.
  • Fix TFitSeries not working correctly in demo/distance/distancedemo.lpi
  • fix divide-by-zero error in demos/distance/distancedemo project, minor layout changes.
  • initial implementation of Calculate(x) for TBSplineSeries
  • fix rare arithmetic overflow in logarithmic axis labeling
  • LazReport:
  • Patch for lr_desgn.diff attached to bug report Issue #25896MISSING REVISION NUMBER !
  • Report does not respect Orientation (poLandscape) when printed, Issue #25802
  • codetools:
  • findunusedunits: check generic types, Issue #26085
  • fixed parsing nested directives in plain sources
  • ipro:
  • fixed buffer overflow
  • FpcUnit, GuiTestRunner:
  • show green balls for ignored tests (Issue #25921)
  • SynEdit:
  • publish OnUtf8KeyPress for TSynEdit and TSynMemo.
  • remove double calling of iherited in TCustomSynEdit.WMKillFocus.
  • Fixed double width chars $3000-$303E which were not detected correctly.
  • leakview:
  • fixed typo
  • LeakView:
  • updated Russian translation
  • jsonviewer:
  • fixed string formatting argument
  • PoChecker:
  • fix crash caused by passing not enough parameters to Format() Issue #0026167
  • LazReport:
  • check variable existence before trying to show it's composition (variables editor form), from Michel Tournay, Issue #0026281)
  • implements Zoom in/out using CTRL+MouseWheel, from Michel Tournay, Issue #0026280)
  • Carbon:
  • added TStatusBar.Color to the issues.xml.Issue #21302
  • Gtk2:
  • fixed linespacing in DrawText().Patch by Boris.Issue #26090
  • fixed wrong events if key is changed in UTF8KeyPress.Issue #26103
  • Qt:
  • fixed wrong resize event from lineedit of combobox.Issue #26040
  • remove a useless test for AWinControl.HandleAllocated in TQtWSWinControl.GetPreferredSize.
  • one more minor optimization for TQtBitBtn.preferredSize.
  • cancel application hint when app is minimized or when virtual desktop is switched via pager.
  • allow build qt on arm machines (disable QTOPIA define). Issue #22456
  • return correct size of QScrollBar when widget isn't mapped yet.Issue #26084
  • do not call unnecessary invalidate in TQtScrollingWinControl.ScrollBy()
  • win32 correctly set default button in TWin32WidgetSet.AskUser().
  • fixed crash and wrong events if key is changed in UTF8KeyPress.Issue #26103
  • TQtWidgetSet.GetClientRect: added check for handle.
  • return correct clientRect from TQtWSCustomTabControl.GetDefaultClientRect
  • fixed tabwidget calculation when it's not mapped yet.
  • added QTCOCOA define for qt 64bit cocoa build, also fixes crashes with forms when using QTCOCOA.
  • fixed precendence of focus when csNoFocus and TabStop=true.Issue #0024735
  • fixed order of kill/set focus messages sent to LCL.Issue #0026106
  • reduced number of paint events in case of TCustomForm, now only FCentralWidget process paint events.
  • apply FormStyle and BorderIcons to the fsMDIChild form.Available only during handle creation.Issue #0023821
  • fixed crash if stylesheet is used.
  • fix not triggering OnKeyDown/On(Utf8)KeyPress when typing diacritics using "dead keys" in several controls. Issue #0026115
  • disable focus ability on mdiarea handle.
  • set color to mdiArea if we are fsMDIForm in case when color clDefault.
  • Allow color change on TQtStatusBar.part of Issue #0021302
  • stop assertions from Qt lib if lcl proposed minimum widget size < 0.
  • refactored TQtCustomControl and TQtTabWidget size messages.Issue #26120
  • let TQtTabWidget send delayed resize event, instead of waiting QStackWidget resize event.
  • send delayed resize event from TQtPage too.
  • reduce resize events in case of TCustomForm with menu (return correct clientRect when form with assigned Menu isn't mapped yet).
  • fixed compilation with -dVerboseQtResize
  • removed TBitBtn.Layout and TForm.AutoScroll from issues.xml,since they're implemented.
  • more debug info for -dVerboseQtResize over TQtGroupBox.
  • fixed groupbox preferredSize and added workaround for scrollbar policy change in TQtCustomControl.Issue #26174
  • fixed wrong clientRect & clientOffset result when TQtWidget have assigned FOwner.Issue #26175
  • fixed StretchMaskBlt bug when dstRect position is not inside clipRegion.Issue #26004
  • simplified and corrected clientrect handling of TQtAbstractScrollArea, especially in case of TScrollBox.
  • implemented SM_CXDRAG,SM_CYDRAG.
  • implemented SM_SWSCROLLBARSPACING
  • removed workarounds for TScrollingWinControl after introducing SM_SWSCROLLBARSPACING.
  • fixed result of TQtAbstractScrollArea.getClientBounds when widget isn't mapped yet.
  • simplified scrolled widgets resize code since controlscrollbar now respects scrollview extent.
  • proper setBounds of controls when parent is scrollable TCustomForm and scrollars have values > 0.
  • set offset for embedded form into scrollable form too.
  • do not destroy QWidget of ScrollArea, it will be destroyed by it's parent later (problem on MacOSX).
  • use QWidget_geometry() when calculating default clientrect of TCustomForm while it's not mapped.
  • fixed crash with QTSCROLLABLEFORMS define under MacOSX.
  • fixed problem with casts under 64bit.
  • another fix for StretchMaskBlt.related to Issue #26004
  • do not allow negative client rect.
  • fixed behaviour of clientRect when we are scrollable form. Issue #26200
  • paint event should go to the viewport of TQtWindowArea on scrollable form. Issue #26207
  • fix for wrong widget passed to painter constructor in SlotPaintBg(). Issue #26207
  • send repaint to the proper widget under X11 when we are splash form, so no more grey splash form.
  • process noninput events after calling repaint of splash form.Needed on slower machines to avoid gray splashscreen.

New in Lazarus 1.2.2 (Apr 29, 2014)

  • Carbon fixed crash with overrided InsertItem() with fpc > 2.6.2
  • Carbon fixed duplicate strings in TListBox with fpc 2.7.1
  • Codetools fixed typo
  • Codetools Prevent a wrong error message about ancestor having same name
  • Debugger GDBMIDebugger: fix watchpoints
  • Debugger GDBMI, fix range check
  • Debugger Allow to add RunError to ignored exceptions
  • Debugger Ask to add RunError to ignored exceptions
  • Docs added Peter Gabor to contributors list
  • Gtk2 sync scrollbars positions of form when using mouse wheel
  • Gtk2 fixed returning correct result from TGtk2WSCustomTabControl.GetTabRect
  • Gtk2 fixed TScrollingWinControl positions update
  • Gtk2 do not report syskey for AltGr+Shift+Key for TCustomControl
  • Gtk2 fixed crash because of uninitialized object
  • Gtk2 fixed scim-bridge doubled chars input
  • Gtk2 fixed setting imageindex in gtkcolumn in runtime, when there's no images in column during design time
  • Gtk2 fixed mess with form sizes while being designed under compositing manager
  • IDE code explorer: catch codetool exception when fetching params
  • IDE EditorOptions, user colors fixed frame init
  • IDEIntf set free notification for TPropertyEditorHook.LookupRoot, changed TPropertyEditorHook to TComponent, set freenotification for TCustomPropertiesGrid.TIObject
  • IDE designer: fixed change parent for TControl
  • IDE, Setup search debugger (gdb) according to path in gdbmidebugger class "ExePath()"
  • IDE designer: snap to nearest grid, instead of form grid
  • Installer, Win French translation update
  • Installer, Win Display name for add on installer
  • LCL fix stringgrid autoedit on pressing RETURN key
  • LCL TCustomListView.OnDeletion must trigger even when destroying component since we might have assigned objects in data property of item
  • LCL, grids fix cbsEllipsis editor not allowing focus change
  • LCL make TCustomButton.Click public.
  • LCL Fix Sigsegv when assigning images to Tlistview columns
  • LCL PageControl, set tab index to widgetset. This was skipped if handle-creation was forced (by other controls) during csLoading.
  • LCL Reset TFieldDataLink when a key field changes
  • LCL, ValEdit Fix InsertRow
  • LCL Prevent an out of bounds error in ValueListEditor when adding rows automatically in Value-column
  • LCL TCustomComboBox: fixed AddHistoryItem and case sensitivity
  • LazReport fix preview's find button always visible
  • LazReport at lazarus design time fix datafields not available if report is not on same form
  • LazReport DefaultCopies should be set to 1 by default
  • LazReport fix compilation with FPC 2.6.5
  • LazUtils fixed TrimFilename
  • Qt fixed crash with fpc-2.6.4
  • Qt fixed wrong scaling result in drawImage()
  • Qt fixed bad behaviour of Linux Mint 16 window manager called Mutter
  • Qt fixed visibility of TQtTreeWidget.ItemDelegatePaint
  • Qt Scrollable forms enabled by default.Registered TScrollingWinControl in wsfactory
  • Qt do not scroll scrollable form if scrollbars aren't visible
  • Qt set proper text palette when control is disabled and regular font.color clDefault
  • Qt fixed extra mousewheel events on TQtAbstractControl based widgets
  • Qt cleanup
  • Qt fixed clipping in stretchDraw.issue
  • Qt, Gtk2 fixed showing of popup window over fsStayOnTop form.issue
  • Qt set focus policy to QtNoFocus if ControlStyle contains csNoFocus for TQtMainWindow class too
  • SynEdit Markup-IfDef; fix crash
  • SynEdit Fixed current line highlight, for use of synedit outside the IDE
  • SynEdit publish MouseTextActions
  • SynEdit fix designer (correct inherited)
  • SynEdit, IDE Fixed crash in "Class/Proc Hint"
  • SynEdit, IDE Fix phys/logic char pos in autocomplete
  • TabControl Set FTab's internal NoteBook.TabStop to False, otherwise TTabControl can always be tabbed into
  • Translations, IDE Code changes for Hungarian translation of Lazarus IDE
  • Translations Regenerated translations; updated Russian translation
  • Translations Components, compilers: added Russian translation
  • Translations Components, LeakInfo: translations cleanup
  • Translations Hungarian translation update
  • Translations improved Russian translation
  • Translations improved Russian translation
  • Translations Improvements for Finnish translation
  • win32 fixed pixelated TCheckListBox at 120 ppi

New in Lazarus 1.2.0 (Mar 7, 2014)

  • ActiveX: localized, improved dialog layout and added Russian translation
  • CHMHelp: added Russian translation
  • Codetools: read var postfix modifiers without first semicolon
  • Converter: Convert also function SameStr. For some reason SysUtils does not have it.
  • Debugger:
  • improved localization, updated Russian translation
  • Add timeout on kill
  • Fixed and improved: Stop/Kill GDB when debugger stops
  • resourcestring typos and minor improvements
  • regenerated translations; updated Russian translation
  • Fixed potential crash with writing (system.move) to empty string
  • fixed wrong timeout detection on Mac during startup
  • fix updating watches, after changing a variable in the target
  • Examples:
  • translation fix compilation on Linux, comment out old BiDi workaround, patch by wp, Issue #25541
  • Grid Columneditors, added Option goTabs for convenience.
  • Grids:
  • correct shorctut keys for Copy/Paste/Cut. Issue #0025708.
  • Gtk2:
  • Fixed TGtk2WidgetSet.Polygon overwriting points array. Issue #25507
  • fixed regression in TGtk2WidgetSet.InvalidateRect() for GtkFixed widgets (TGroupBox, TTabSheet).issue Issue #25572
  • IDE:
  • In compiler options -> Other -> Defines, catch an exception when parsing an invalid option.
  • Prevent AV with typing a non-existent file name for Convert Delphi Unit. Issue #25538
  • In all compiler options, allow one char options combined like -Criot.
  • All compiler options, remember and synchronize with original user options when generating options from GUI.
  • In All Compiler Options, improve the order of generated options when original data was on the same line.
  • Fixed crash due to fpc optimizer issue Issue #0020827 / Lazarus issue Issue #0025588
  • disable optimization stackframe for units with for..in
  • EditorMacros: Fix saving macro, after editing in source-editor
  • package links: show missing lpk as invalid
  • install pkg dialog: fixed updating available list if lpk cache already valid on start and update on idle
  • In All compiler options parser, add a 'NO'-variation for options that support it.
  • TProjectIcon: do not set icon twice when loading
  • check if project icon on disk needs update
  • check if project needs build: check if file is in unit/include path
  • reading environment options: omit window layouts with invalid names
  • allow adding to inherited form and to child-controls on inherited forms (but not frames)
  • IDEIntf:
  • TOIPropertyGrid: distinguish calling property Edit and changing the value
  • Installer, Win:
  • do not append lazarus do user chosen install dir. issue Issue #0025796
  • LCL, DbGrids:
  • fixed compilation with FPC 2.7.1, bug Issue #25647
  • LCL, grids:
  • check for changes in ClientRect, issue Issue #24724, Issue #25489
  • LCL, gtk2:
  • fixed parameter type, bug Issue #25670
  • LazBuild: read pcp from lazarus.cfg file
  • LazUtils: fix DebuglnEnter with list of 1 argument
  • LazReport: removed PowerPDF and Cairo export requirements from editor sample
  • LazLogger: fixed logfile with relative path
  • MacroScript:
  • improved resourcestrings
  • enabled i18n; added Russian translation
  • improved layout; now using default cursor
  • MaskEdit:
  • fix possible crash in PasteFromClipBoard.
  • PascalScript: fix crash when compiled for 64 bit
  • PoChecker:
  • Textual fixes.
  • do not increment WarningCount in CheckStatistics.
  • Qt:
  • fixed conversion of QImage::RGB32 without mask. issue Issue #25590
  • fixed copy-paste between TSynEdits in different applications. issue Issue #0025692
  • draw rotated text on buttons via Themes. Second part of issue Issue #25253.
  • fixed triggering contextmenu event when widget is hidden and shown on mousedown under mswindows.issue Issue #22943
  • SynEdit: clean up ifdef debug code
  • TAChart:
  • make TChart GetChartHeight return height and GetChartWidth return width, note vice versa
  • don't crash when making legend for PolarSeries visible, patch from wp, Issue #25456
  • don't eat OnMouseMove event when AllowZoom = false, patch from wp, Issue #25439
  • fix checkboxes drawing in TChartListbox on Linux and Mac OS X, patch from wp, Issue #25452
  • Fixed crash due to fpc optimizer issue Issue #0020827 / Lazarus issue Issue #0025681
  • Translations:
  • German: updates from Swen Heinig; removed invalid listemplateeditparamcellhelp translation from lazaruside.de.po (last POChecker error in this file)
  • German: updates from Swen Heinig
  • Improvements for Finnish translation. Patch from delfion.
  • New Finnish translation for ActiveX. Patch from ocean.
  • LazReport: German: bug Issue #25699
  • Win32:
  • update combobox dropdownlist (nr. of items displayed) when using AddStrings. Issue #0025556.
  • lazchmhelp creating po files
  • lazchmhelp added po files
  • lazbuild: fixed listing build modes

New in Lazarus 1.0.14 (Nov 20, 2013)

  • Debugger:
  • Set LANG env, to prevent localisation of gdb
  • force exit, on destroy.
  • Ensure queue lock during gdb communications (possible race condition)
  • Filenames (for line-info) must be case-sensitive
  • Do not crash IDE, if gdb.exe is invalid
  • fixed getting callstack (could go into an endless loop)
  • fixed crash in callstack (when stop debugging while waiting for stack info)
  • callstack, fix goto source, if viewing bottom of large stack (viewing from startindex > 1)
  • lock queue while handling breakpoint
  • Fix Debugger locking in SourceEdit (protect SynEdit during Paintlock). Calls were unbalanced if method was recursively invoked.
  • Options, disable add/remove buttons on signal opts. Not implemented
  • Options, mark project as modified, when exceptions are enabled/disabled. Issue #25074
  • Spelling
  • fix disassembler, check if offset can be used
  • Fix handling of single quote in strings returned by gdb
  • Fix handling of backslash in strings returned by gdb (used for classname resolving)
  • Try filename in app bundle for newer gdb
  • parse version / mac file encoding depends on version
  • fix adding watch via dialog. Open watch view window
  • Fix mem leak in disassembler
  • prevent messing up the environment on windows, due to gdb bug (gdb not setting debuggee environment) / introduced in rev 42419
  • IDE:
  • clean up build files: omit packages that are compiled "manually"
  • package editor: enable compile button: check if there are commands
  • initial setup dialog: translate captions and lcl
  • LCL, dbgrid :
  • fix backspace on editing number fields, from Aleksey Lagunov, issue 21584
  • workaround for datasets(?).filtered wrong behaviour, from Luiz Americo, issue 22304
  • LCL:
  • EditBtn, Change name of parameter Action into Accept in TAcceptValueEvent. Resolves issue 0024906.
  • r42548,r42550,r42557,r42558,r42568 LCL Attempt to fix TabControl extra spacing (w32) issue 0023069
  • fix TabControl TabPosition and MultiLine issue
  • fix TabControl invalidation
  • TabControl forward style
  • TabControl fix borderwidth initialization
  • TabControl fix paint border
  • fix TabControl spacing / qt
  • fixed OpenURL if URL is invalid, bug 24958
  • TWinControl.ChildSizing with controlstyle csAutoSize0x0, bug 24986
  • fixed GetDesignerForm outside IDE
  • Qt:
  • fixed focus policy of TQtTabWidget. issue 23238
  • do not crash in TQtPage if parent is TTabControl
  • return clBackground as default color for TPanel. issue 24946
  • show icons on menus if menuitem.bitmap is assigned and there's no imagelist.issue 24770
  • PageControl: check if page or tab control
  • fixed TPageControl ActivePageIndex.issue 24972
  • use new SlotAboutToShow() to send LM_ACTIVATE to TMenu, instead of using QEventShowToParent. issue 24979
  • TQtComboBox fix for call IntfGetItems when we are non-editable combobox.
  • call OnDropDown imediatelly after IntfGetItems, so our events are in expected order and there's no disturbing of QListWidget while showing.issue 25032
  • fixed TQtCheckListBox double click event duplication.Issue #25089
  • change current row of TQtCheckListBox for Qt >= 4.8 since it does not change ItemIndex when checkbox is clicked.
  • SourceSynEdit: top-info hint and scrolling, calculate the correct amount of top lines
  • StartLazarus: Fix finding PCP, if it contains spaces.
  • SynEdit:
  • do not crash the IDE, when failing to read config
  • AutoComplete, fix GetPreviousToken use Logical pos
  • Pas HighLighter, recognize new &keyword for identifier style
  • Win-Installer:
  • Changed image

New in Lazarus 1.0.12 (Aug 27, 2013)

  • codetools - on variable only valid in the on block, bug 24494
  • Debugger - Fix IDE does not end debugger state (processdebugger / dbg=none), if exe can not be started. issue 0024809
  • IDE - environment option single taskbar button apply after change, bug 24623
  • IDE - ctrl+enter: stop at spaces only if no quotes in front, bug 24042
  • IDE - save session, changin folding in editor marks session as changed
  • Gtk2 - fixed itemheight with lbOwnerDrawFixed style of listbox. issue 24629
  • LCL - TTextStrings: fixed TTextStrings.Insert, bug 24718
  • LCL - reset hintwindow region after color change
  • LCL - TSpeedButton: do not eat DialogChar when disabled, bug 24742
  • LCL - fixed AV on TCheckListBox when key space is pressed to check/uncheck item, and itemindex=-1. issue 24627
  • LCL - getmousecapture: check if handleallocated, reducing overhead and fixing crash on carbon
  • LCL - added capfHasScrollOffset into ControlAtPos in WMContextMenu so offset is ok when control is inside scrolled control. issue 23584
  • LCL - dbctrls.pp: Publish BorderStyle and CharCase for TDBComboBox. Issue 22295, patch from LacaK
  • LCL, docs - build_lcl_docs: add --css-file parameter for setting chm css files (Issue 0024823)
  • LCL - made codepage conversion 852,874,1250,1251,1252,1253,1255,1257,1258 to UTF8 and back lossless
  • LCL - TMaskList: Don't split masks on space (Issue 0024771).
  • ShellTreeView - Publish draw events of ShellTreeView (Issue 0024732)
  • SourceSynEdit - fix scrolling with top-info hint. Issue 0024505
  • SynEdit - pas highlighter: fixed "packed class"
  • SynEdit - Mouse Selection and scroll-by-wheel. Issue 0022072, 22090
  • TAChart - Do not fill polylines in SVG export. Fixes 23982
  • TSelectDirectoryDialog - also show editbox for directory selection. Issue 23521
  • TCustomTreeView - use Utf8CompareStr for default sorting instead of AnsiCompareStr (Issue 0024740).
  • ValEdit - use Strings.NameValueSeparator instead of hardcoded '=' (Issue 0024779)
  • ValEdit - fix crash in TValueListEditor.AdjustColumnWidths (Issue 0024779)
  • ValEdit - fix crash in TValueListEditor.AdjustColumnWidths when resizing a parent form. (Issue 24827)
  • SqlDb - Allow compiling SQLite3 components on Win64 version of Lazarus. Issue 22951
  • Qt - fixed LCLIntf.Frame3D. When FillBrush isn't filled then draw shaded box without brush (applies painter brush).issue 24445
  • Qt - fixed problem with TCustomPanel.Color, when panel is painted via Frame3d.Problem raised with r41291 while fixing 24445
  • Qt - return correct lfHeight inside TQtWidgetSet.GetObject. issue 24613

New in Lazarus 1.0.10 (Jun 15, 2013)

  • fpc source scores: unit fileinfo on target non wince, bug [24070]
  • removed old fpc 1.0 defines, biting 2.7.1 sources
  • fix crash in PrepareCellHints when DataLink is not Active (issue [0024028]).
  • utf8 content for event-log (warnings/OutputDebugString). Issue [24353]
  • Improved shortstring detection. strings with utf8 content in locals and some in watches
  • more utf8 for strings in watches
  • itmEditUndo\itmEditRedo is almost always Enabled, even when it is impossible to Undo\Redo in source Editor, issue [22633]
  • Autocheck radiobutton when you enter a value in the HeightEdit / WidthEdit, issue [23398]
  • test compiler settings: show message when busy
  • fixed showing broken dependencies
  • help for fpc messages: fixed crash when no help found, search for message file in compiler directories
  • project resource file version: do not set modifie is the same and initialize it after read
  • package editor: extend unit/include path: shorten paths that are not sub directories, bug [24272]
  • remove & from key map resourcestrings
  • fixed caption Free Pascal in highlighter
  • add example projects to recent menu only once
  • register TBoolPropertyEditor for WordBool, LongBool and QWordBool, needed since fpc 2.6.0
  • TCollectionPropertyEditor: fixed unselecting if owner is freed
  • add French translation. Patch by ChrisF. Issue [24171]
  • cleaned up OldInOtherFolder1 string as per ChrisF's comment in bug [24171]
  • gtk, fix LazReport designer sometimes presented as a thin vertical or horizontal band that runs from center of screen under gtk2/64-bit, related to issue [21634]
  • navFocusableButtons doesn't work in TDBNavigator, modified patch from Éderson Cássio, issue [24191]
  • use UTF8Length instead of Length on calc dbgrid column field width, from Rumen Gyurov, issue [24491]
  • fixed conditionals for default LCLWidgetType
  • TreeView: clear cache when adding node
  • prevent change in dbcombobox when autoedit is false. Issue [24207]
  • TFilterComboBox: freenotification for ShellListView, bug [24512]
  • gtk2 fixed AskUser,QuestionDlg escape key result
  • MaskEdit: respect AutoSelect if control is masked. Issue [0024311]
  • do not trigger scroll events while calling SetScrollInfo, fix issue 23815
  • fixed default text color of QTabBar. issue [23985]
  • fixed determination of string content (RightToLeft vs. LeftToRight). issue #24340
  • fixes for buggy xfwm4 window manager under X11 formatting
  • fixed visibility of THintWindow class when virtual desktop is switched or application minimized.issue #24363
  • fixed bad behaviour of popup windows under metacity window manager.
  • fixed problems with modal and popup windows over modal windows with Mint's Marco window manager (Mate desktop)
  • fixed bug with AltGr key handling under windows.We are using winapi directly as workaround for bug in Qt library. issue [23808]
  • implemented getKeyState for caps lock and numlock under x11 and win32 targets
  • rework fixes for metacity like wm's. Now marco and gnome shell are mapped as metacity.
  • use QPolygonH to draw poly regions in FillRgn()
  • workaround for Qt lib bug (QStyle) where disabled button doesn't have activated disabled colors palette. issue [24413]
  • declare property ViewStyle of TShellListView as "default vsReport" (issue [0024226]).
  • Trim spaces - position only: Do not mark buffer as modified, if pressing space at EOL. Follow up revision 40680
  • Fixed gutter resizing. Issue [0023990]
  • fixed trim-space (mode "position only") would corrupt text on certain undo. Issue [24101]
  • Fixed folding in "library" code. Issue [0024370]
  • Pas Highlighter: recognize {$IFOPT}
  • Pas Highlighter: Completed the list of Ifdef, ifopt, elseif directives
  • Fixed folding in "label" code. Issue [0024417]
  • reverted Arabic translation. Reason is poor quality/machine translation, which makes hard to use translated IDE.

New in Lazarus 1.0.8 (Mar 28, 2013)

  • Fix coordinate calculation in Pixels and Colors properties of TAggFPImage
  • Fix TLazIntfImage descriptor for 32-bit pixel format
  • codetools fixed parsing #0, bug [23906]
  • Debugger Fixed range-check on linux. Issue [23993] Patch by C Western
  • Designer Use a record of signed SmallInts to prevent range check errors. Still about issue [22760]
  • Gtk2 Gtk2WSCustomPanel respect TCustomPanel.Visible property when creating handle. issue [23940]
  • IDE prevent debugger from entering invalid state, if started again before completely stopped. For info see issue [0023800]
  • IDE fixed restoring designed form when HideIDEWindowsOnRun = true. issue [22535]
  • IDE register HTML help for LCL
  • IDE: SourceEdit fixed word (word from text, not identifier) completion
  • Installer, Win strip lhelp.exe
  • Installer, Win fixed typo
  • LazReport Band.name patch from Giuliano Colla
  • LCL, dbgrids checks for keydown while dataset is inactive, issue [23598]
  • LCL, grids+gtk2 when pressing somekeys like shift introduces '?' in cell, relaed to issue [22056] (fixes issue [23924])
  • LCL, Utils Don't HTML-escape spaces in OpenURL, it breaks OpenDocument()
  • LCL Prevent an error with Pg Up/Down in DbGrid on empty Dataset. Issue [22474], patch from Stefano
  • LCL Revert Changes from 31132 (and partly 31577) which replaced TGraphicControl.Update by Invalidate
  • LCL: gtk2 fixed registering callback LM_CONTEXTMENU for TCustomControl
  • Qt keep state of forms hidden from taskbar under X11. Fixes issue [23825].
  • Qt fixed item caption in TListView vsIcon style. patch by DCelso. issue [23879]
  • Qt show images when with TListView.vsIcon style when we have more > 1 column. issue [23923]
  • SynEdit Separator-Gutter, fixed painting
  • TAChart Call inherited constructor from TBGRABitmapDrawer.Create
  • TAChart Call inherited constructor from TSVGDrawer.Create
  • TAChart Fix chart margins calculation for axises with ZPosition > 0
  • TAChart Fix SIGFPE while drawing very narrow slices in 3D pie chart
  • TAChart Workaround for range check when using TFitSeries with more than 20000 points. See also issue [23816].
  • ValEdit add ItemProps to ValueListEditor
  • ValEdit implement method TValueListEditor.InsertRow
  • ValEdit Make button and picklist cell editors work in TValueListEditor
  • Valedit Fix a bug in ValueListEditor when reading / writing value by key (Values['Key'])
  • ValEdit free TValueListStrings.FItemProps in TValueListStrings.Destroy (issue [0023841])
  • Valedit delete also ItemProps when deleting strings
  • Valedit also release the memory of the TValueListStrings.FItemProps array itself, not only the items
  • ValEdit fix not updating active cell contents when changing Strings property
  • ValEdit Fix FItemProps getting out of sync with Strings (issue [0023851])
  • ValEdit Remove unnecessary calls to Changing and Changed in overridden methods
  • ValEdit Fix bug in SetOptions
  • ValEdit remove unused redeclared OnEditButtonClick property
  • ValEdit Publish On(Edit)ButtonClick
  • ValEdit don't hide/show editor inside TValueListStrings.Put
  • ValEdit Fix not updating cell in TValueListStrings.Put when goAlwaysShowEditor in Options (issue [0023875])
  • ValEdit Refactoring. Store ItemProps in TFPObjectList
  • ValEdit Implement CustomSort so it keeps ItemProps in sync
  • ValEdit Update Modified when Strings are changed
  • ValEdit do not store '=' in Strings if "key" and "value" cell is empty
  • ValEdit Ignore epmty cells when validating
  • ValEdit Remove unneeded overridden SetTextStr
  • ValEdit Fix not updating cell in TValueListStrings.Exchange when goAlwaysShowEditor in Options
  • ValEdit Rename some private fields to improve readability and avoid ugly constructs like FOwner.FOwner
  • ValEdit fix strange focus swapping
  • ValEdit: Refactoring remove SelectValueEditor and override SelectEditor instead
  • ValEdit: TValueListStrings.Assign Assign also ItemProps if Source is TValueListStrings
  • ValEdit: TValueListStrings.GetItemProp return nil when strings are updating

New in Lazarus 1.0.6 (Feb 5, 2013)

  • reapply brush and pen after the DC restore
  • fixed TEventsCodeTool.FindMethodTypeInfo when type is an alias
  • Fixed eval of watches with class-typecase and dyn-array (stabs only)
  • fixed changing of font color on GtkCheckBox.
  • fixed keeping of SelStart() and SelLength().issue
  • Invalidate, if top-info-hint changes
  • Keymap: missing entries for select+cursor-keys
  • extract proc: stop if identifier is invalid
  • find prompt: shorten texts
  • check Project1 in UpdateHighlighters
  • IDE prevent a crash in designer "Change Class" if new name does not exist / designer: change class dlg: disable ok button
  • Display info while installing
  • published property KeepAspect and Centered for Picture Object
  • published WordBreak property on Memo object plus some refactoring
  • avoid duplicated export filters
  • two additional export filters - TfrImageExportFilter, TfrHtmlDivExportFilte
  • clip image when it's bigger than picture object and not stretched
  • fix off by one error in calculation of PictureView size. This avoids unnecessary stretch whew pictureview size = image size
  • apply scale when drawing not stretched image. This fixes the size of image in printed report
  • cleanup. remove unused code in TfrPictureView.Draw
  • fix moving/resizing objects when using keyboard under QT (and carbon)
  • fix PreviousClipRgn on image drawing, was not valid and it worked fine by coincidence
  • fix export filters registering multiple filter extensions are listed only once, issue
  • renamed argument to really check for matching classref
  • xmlreader: handle non existing property list
  • Don't publish FixedRows in ValueListEditor, allow only 0 or 1
  • make ValueListEditor work also when ColumnTitles are not shown
  • add WM_ACTIVATE to messages.pp
  • scroll before updatedata in DBLookup
  • Use PopupMenu getter instead of cached FPopupMenu, so GetPopupMenu can be overrided
  • make ValueListEditor work also when ColumnTitles are not shown
  • override TValueListStrings.SetTextStr: Don't show editor while changing values. Edited cell would not be changed
  • Start implementing validating: don't accept duplicate Key names
  • Fix crash in TValueListEditor.ShowColumnTitles when TitleCaptions.Count = 1
  • Only allow FixedCols := 0 or 1
  • Do not use Columns.Add, it interferes with setting FixedCols := 1 (by adding an extra column in front)
  • Implement TValueListEditor.AdjustColumnWidths and override OnDoResize.
  • fixed range check errors under 64bit
  • fixed events when month and year are changed in TCalendar
  • fixed getClientBounds for TQtPage and TQtGroupBox. It should use QWidget_contentsRect() of underlaying widget or parent
  • reverted TQtPage.getClientBounds to use TQtWidget.getClientBounds, it wasn't good solution since it produces a mess in eg. in build lazarus form.
  • fixed topmargin of groupbox when caption text is empty
  • make LCL happy when changing caption of groupbox from empty to some string or viceversa.part of
  • fixed SetCapture() and GetCapture() for TQtCustomControl on qtwin32 targets
  • fixed preffered size of autosized groupboxes
  • trial to fix Qt bug when dialog is shown with QtTool as parent
  • Fixed , make TAction regard ReadOnly state
  • LineOverviewGutter, do not cause overflow error on 64 bit
  • fix highlighting "i6"
  • Fix problems with resizing GutterParts. (Noticeable in right gutter)
  • Fixed Matching bracket, for very long lines
  • FoldHighlighter (Html, XML): fix invalid fold node on last line.
  • LineNumber-Gutter: update digit-count when setting to visible (Digits where cut off)
  • Add TChart.IsZoomed property
  • Hide legend if exception happened while attempting to fill it
  • Copy HorizSize and VertSize in TSeriesPointer.Assign
  • Fix SIGFPE while drawing mark labels for series with NaNs
  • Fix exception on destroying clones series
  • Set TChartTool.Chart = nil after calling OnAfterXXX event, not before
  • Fix SIGFPE in TChartSeries.Add when the last data item is NaN
  • Force recalculation of the full extent for linked charts
  • Fix TBoxAndWhiskerSeries.Assign to correctly assign class properties
  • Make TChartDataItem advanced record instead of object to reduce memory footprint
  • Fix drawing of line series with number of points above 1000000
  • Call inherited constructor from TCanvasDrawer.Create

New in Lazarus 1.0.4 - FPC 2.6.0 (Dec 4, 2012)

  • make timer related functions 64-bit safe (fixes similar to r39164), patch from bug [23052]
  • Inspect-Dialog, prevent crash, due to nested updates
  • Do not treat "&" as accel-char when displaying exceptions. Issue [0023321]
  • Fix updating Inspect dialog, if triggered via source-editor (pop-up menu)
  • Fix range check in disassembler (64 bit debuggee). Issue [0023355]
  • Disable "run to cursor" when debugger is stopped. This command is limited to the current frame (function). It can not be used to start a project. (also disable dcJumpTo, dcStepOut)
  • fixed an endless loop in watch eval (eval typecast pointer to record)
  • fixed TGtk2WSCustomListView.GetDisplayRect, also fixed cell renderer which sent wrong item id to owner drawn list view.issue [23094]
  • do not render listbox item by default if we are customdrawn. issue [23093]
  • fixed crash with TListView introduced with r39032.
  • LineTo and MoveToEx must take hdc offset into account.issue [23057]
  • fixed assertion from gtk2 library. issue [23099]
  • do not apply devctx offset into penPos, regression of r39034.issue [23057]
  • completely fixed LineTo() and MoveToEx() regressions from r39034
  • fixed clientRect of GtkTreeView, new routine GetWidgetClientRect() in gtk2proc to simplify gtk2winapi, fixed offset for custom drawn listview.
  • use better approach for RecreateWnd in TGtk2WSCustomListView, fix rendering of icon view. issue [23171]
  • added TGtk2DeviceContext class as deprecated. part of issue [23168]
  • fixed cursor position behaviour on GtkEntry focus/unfocus. issues [21897], [23182].
  • remember selection when edit looses focus.Also preselect test when AutoSelect is true
  • check if scrollbar handle is allocated when setting params.
  • trial to fix freezing of TFloatSpinEdit when we don't use clocale unit since gtk2 takes info from $LANG and our DecimalSeparator could be different. issue [23190]
  • register TGtk2WSScrollBar to TCustomScrollBar instead of TScrollBar. Fixes [23200]
  • fixed offset in Gtk2 polygon drawer. issue [23359]
  • correct fix for issue [23359]
  • fixed font color changing on TCheckBox when caption is empty. issue [23373]
  • Hint: Fix malformated hints, if text has ampersand. or

New in Lazarus 1.0 - FPC 2.6.0 (Aug 30, 2012)

  • LCL Interfaces Changes:
  • Gtk2: Implemented LCLIntf.CreateEllipticRgn and CreateRoundRectRgn and implemented SetWindowRgn for TForm (previously it worked only for child controls)
  • WinCE: Implemented TSelectDirectoryDialog
  • A new interface was added called LCL-CustomDrawn which implements all native controls via the Lazarus Custom Drawn Controls. This interface has a minimal amount of native elements and implements TCanvas drawing through the non-native TLazCanvas, TBitmap through TLazIntfImage, etc. This is the first Lazarus interface to support Android. It also supports Windows, Mac OS X (Cocoa) and X11.
  • Qt: implemented full MDI support.
  • LCL Changes:
  • The LCL is now a normal package. It is now automatically recompiled if needed. For example when switching the target platform and you have not yet compiled for this platform. This has no impact on existing projects.
  • The platform independent parts of the LCL are now in the package LCLBase. This has no impact on existing projects.
  • The linker options needed by the LCL are now only added to projects that use the package LCL. Formerly all projects got them. See here.
  • TCustomForm.Create raises an exception if form resource is not found.
  • TNotebook and TPage: The new implementations of these classes have been added.
  • TDBNavigator: It is now possible to have focusable buttons by setting Options = [navFocusableButtons] and TabStop = True. This is useful for accessibility and for devices without a mouse nor touch screen.
  • TControlBorderSpacing.GetSideSpace and GetSpace were swapped and are now consistent. GetSideSpace = Around + GetSpace.
  • TForm.WindowState=wsFullscreen was added
  • TCanvas.TextFitInfo was added to calculate how many characters will fit into a specified Width. Useful for word-wrapping calculations.
  • TControl.GetColorResolvingParent and TControl.GetRGBColorResolvingParent were added. They simplify the work of obtaining the final color of the control while resolving clDefault and the ParentColor.
  • LCLIntf.GetTextExtentExPoint now has a good default implementation which can work in any platform which does not have a specific implementation for it. The specific implementations are still better, if they can be supported by the widgetset.
  • TTabControl was reorganized. Now it has the correct class hierarchy and inherits from TCustomTabControl like it is supposed to.
  • New unit in the LCL: lazdialogs.pas. This unit has non-native versions of various native dialogs, for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog. It is utilized by widgetsets which either do not have a native dialog, or do not wish to use it because it is limited. These dialogs can also be utilized by user applications directly.
  • New unit in the LCL: lazdeviceapis.pas. This unit offers an interface to more hardware devices such as the accelerometer, GPS, etc. See LazDeviceAPIs
  • New unit in the LCL: lazcanvas.pas. LazCanvas is a TFPImageCanvas descendent which implements drawing in a LCL compatible way but 100% in Pascal, doing all the drawing itself.
  • New unit in the LCL: lazregions.pas. LazRegions is a purely Pascal implementation of regions for canvas clipping, event clipping, finding in which control of a region tree one an event should reach, for drawing polygons, etc.
  • New LCL units: customdrawncontrols.pas, customdrawndrawers.pas, customdrawn_common.pas, customdrawn_android.pas and customdrawn_winxp.pas. These are the Lazarus Custom Drawn Controls, which are controls which imitate the standard LCL ones, but with the difference that they are non-native and skinnable.
  • New APIs were added to the LCL to improve our support for accessibility software such as screen readers
  • IDE Changes:
  • The old warnings at IDE start for Lazarus directory, compiler and FPC sources were replaced with one dialog. The dialog can be forced to show with the command line parameter --setup.
  • A new project now saves the session information (open files, caret positions, etc) as separate lps file in the project directory. You can change this in Project / Project Options / Session.
  • The IDE no longer asks to save changes, if only the session data has changed (i.e. cursor positions) and the session is saved in the separate lps file. You can enable the confirmation in Tools / Options / Desktop / Auto Save. See [here].
  • Compiler options: You can now use the project build macros in the search paths, linker and custom options of the project and all packages of the project. See the examples.
  • The package editor and project inspector were improved to better support big packages/projects with hundreds of files: You can now sort, filter and show the directory structure.
  • Packages compiled via Makefile created by the IDE are now recognized by the IDE and only recompiled if something changed.
  • Package general and package compiler options are now using generic IDE options interface.
  • New dialog to clean up build files, including all packages of the project
  • Cleaner clean up when compiling packages: The IDE now deletes all files in the unit output directory of a package unless the directory contains sources or is shared with another package (See packages).
  • Open File: filter list is now configurable in Tools / Options / Environment / File Filters
  • Export to html
  • Editor:
  • Codefolding: Folded code remains folded, even if it temporarily becomes part of a comment (due to an open "(*" or "{"). Note: Such folds are not saved in the session, they are once they returned to there normal state, after the closing "*)"/"}" was typed.
  • Codefolding: Ability to hide (fold) the currently selected text. These folds are not saved to the session
  • Improved Mouse wheel support: Allows to zoom the editor (ctrl wheel) and slower/faster scrolling (shift/alt). Keys can be reconfigured.
  • Basic Macro-Recorder. (Only one Editor can record at a time, Macro can then be played to any editor)
  • Info-Hint, showing the current class/procedure on top of the editor, if it would otherwise be scrolled out
  • Debugger
  • Added display format for CPU-Register
  • Added Pascal Source to Disassembler
  • Added breakpoints, (display and toggle) to Disassembler
  • Added Thread dialog
  • Added Watchpoints (data breakpoints)
  • History of Watches and Locals [see blog]
  • Added logging of most of events (Event Log)
  • Added ability for a breakpoint (breaking or none-breaking) to enable/disable other breakpoints
  • Watch/Inspect the an object as the instantiated class.
  • Main menu structure got revamped. Source menu and its Refactor sub-menu are new.
  • New menu item to insert MIT license text
  • Filters were added for many ListBoxes and TreeViews in the IDE, including IDE Options, Project Options (visible pages filtered by option name), Package and Project Inspector, Install / Uninstall packages, and many others. Next version will have a filter even in Object Inspector.
  • "Use Unit" (Alt-F11) dialog allows selecting from all available units, not only project units.
  • Parameter Hints now have a button to paste the missing parameter names.
  • Code Explorer: Filter now deletes nodes, instead of marking.
  • Code Explorer: New category "Surrounding" allows to quickly jump to interface, implementation and nested procedures.
  • Help for keywords: The chmhelp package can now show help for keywords.
  • New window: Tools -> "Example Projects"
  • Window: View -> Components was improved and it can be opened from Component palette's local menu
  • Configure Build Lazarus window was changed. LCL, other packages and IDE don't need their own selections any more. Examples were moved to a new window.
  • startlazarus now supports the --pcp parameter allowing multiple installations of Lazarus.
  • lazbuild
  • can now create/update the Makefile of a package with the new option --create-makefile.
  • build-ide= now builds under Windows lazarus.exe, not lazarus.new.exe
  • build-ide= now appends the options instead of replacing.
  • build-mode= can now be used together with --build-ide to select the build profile of the IDE.
  • Design time only packages are no longer compiled into projects, unless enabled. See here.
  • New package type Runtime only, can not be installed in IDE. Use this to for package incompatible with the LCL or the IDE. See here.
  • When creating a new package the option to Add to the uses section of the project is now disabled by default.
  • New menu item to quickly create a new component: Package / New component.
  • New macros: PrimaryConfigPath, SecondaryConfigPath, FallbackOutputRoot, PkgName. See IDE Macros
  • The IDE interface unit projectintf was split into projectintf and compoptsintf. The unit compoptsintf contains the access to the various compiler options of the IDE. The unit packageintf now grants access to the compiler options of packages.
  • New projects can now be created with your own set of build modes, for example "debug" and "release". For this a feature was extended: Project / Project Options / Use these options as default for new projects.
  • The compiler option -Wpunitname, specifying the controller unit for embedded systems, is now used when doing a "find declaration". You can give this option under compiler options / other.
  • Project title can now contain macros
  • Packages have no longer compiler setting for TargetOS, TargetCPU, LCLWidgetType. They use the project settings. Or when compiling the IDE they use the IDE settings. Or when compiled via lazbuild they use the command line parameters.
  • Building the IDE with the IDE or lazbuild: The backup of the old Lazarus executable now works the same on all platforms. Before building the old Lazarus executable is now renamed to lazarus.old.exe. If there is already a lazarus.old.exe it will be deleted. If it can not be deleted it is renamed to lazarus.old2.exe. If even this fails a lazarus.new.exe is created. If building fails the lazarus.old.exe is renamed back to lazarus.exe,
  • When putting a new frame on a form the IDE now allows to select from frames in packages.
  • A dialog was added to see which package/project needs rebuilding and why: View / IDE Internals / What needs Building
  • Pasting multiple components on a designer form now keeps references between them
  • Codetools:
  • Parsing, searching and code completion of class operators and advanced records.
  • Parsing objcclass external syntax.
  • Parsing and class completion of nested classes. Searching is not yet fully implemented.
  • Parsing of class sections type, const, var, class var. Searching is not yet fully implemented.
  • Parsing delphi style generics. Searching in spezialized types is not yet fully implemented.
  • Parsing jvm syntax.
  • ctnClassType, ctnClassConst, ctnClassVar were removed and replaced with ctnTypeSection, ctnConstSection, ctnVarSection.
  • The class sub sections ctnTypeSection, ctnConstSection, ctnVarSection are now children of the visibility sections.
  • New IDE package for advanced Codetools: Cody.
  • Find declaration: "inherited;"
  • Identifier completion:
  • for compiler directives: keywords and FPC macros.
  • IDE option to replace only the prefix instead of the whole identifier (Tools / Options / Codetools / Identifier Completion / Replace whole identifier).
  • more keywords for programs, libraries and properties
  • Code completion:
  • now creates variables from pointer parameters, e.g. CreateIconIndirect(@IconInfo) will create var IconInfo:TIconInfo;. See here.
  • now creates procedures/methods from parameters, e.g. List.Sort(@MySortFunction) will create the new function MySortFunction(Item1, Item2: Pointer): Integer. See here.
  • TAChart
  • Wiki documentation
  • On{Before|After}Draw{BackWall|Background}, OnExtentChanged events for TChart
  • Antialiasing
  • TChartAxis:
  • MarkPositions to implement labels-inside bars and pies
  • Minor axis ticks and grid
  • AxisPen and Range properties
  • Intervals property to control interval size
  • Margin property
  • TChartAxisMarks:
  • Stripes property to create "striped" chart background
  • YIndex property to implement labels for stacked series
  • Range property
  • TFuncSeries now correctly work with rotation and axis transformation
  • 5 new series:
  • Open-High-Low-Close, B-spline, Cubic spline, Polar, Fit
  • 3D pie series, TPieSeries.EdgePen property
  • Multi-line mark labels, title and footer rotation
  • 6 new tools:
  • TDataPointClickTool, TDataPointHintTool, TDataPointCrosshairTool, TZoomMouseWheelTool, TPanMouseWheelTool, TUserDefinedTool
  • TBasicPanTool.LimitToExtent property
  • Drag-zoom and crosshair (former reticule) now should work on Qt and MacOS
  • KeyDown/KeyUp/MouseWheel events for chart tools
  • New transformations: TCumulNormDistrAxisTransform, TUserDefinedAxisTransform
  • New data source: TIntervalChartSource
  • TCalculatedChartSource: derivative and smooth derivative, AccumulationDirection
  • Series can now skip NaN values
  • New IChartDrawer API with various drawing back-ends:
  • AggPas (separate package)
  • Printer, for printing charts with appropriate scaling (separate package)
  • OpenGL
  • FPCanvas/NoGUI, for using in web servers
  • SVG
  • BGRABitmap (separate package)
  • Windows Metafile (separate package)
  • FPVectorial (separate package)
  • Navigation components: TChartNavScrollBar, TChartNavPanel
  • Legend:
  • Item format
  • Multiple columns, fill direction
  • Ordering and grouping
  • SymbolFrame property
  • OnCreate event
  • New components: TChartListbox, TChartExtentLink, TChartImageList
  • Enumerators
  • Arrow property for TConstantLine and TChartAxis
  • TChart.MarginsExternal and ExtentSizeLimit properties
  • Design-time editor for TListChartSource.DataPoints
  • 17 new demo projects, many updates to existing demos
  • Backwards-incompatible changes:
  • Adding Pie series does not automatically hide axises any longer
  • TZoomDragTool.Proportional property is replaced by RatioLimit, allowing single-axis zooming
  • TReticuleTool, TChart.ReticuleMode, TChart.ReticulePos and TChart.OnDrawReticule are deprecated and will be removed, use TDataPointCrosshairTool instead
  • SQLDB:
  • Added mssql connectors (supports Microsoft SQL Server), requires fpc 2.6.1+
  • Added sybase connectors (supports Sybase ASE), requires fpc 2.6.1+
  • Added mysql 5.5 connector, requires fpc 2.6.1+
  • ChmHelpPkg:
  • HelpFilesPath can now contain macros and multiple directories separated by semicolon

New in Lazarus 0.9.30.4 - FPC 2.6.0 (Mar 15, 2012)

  • Platforms:
  • iPhoneSimulator target
  • Compiler:
  • Many new language features:
  • Objective-Pascal dialect, supported on all Mac OS X and iOS targets
  • constref parameter modifier for "const by reference"
  • Pascal boolean types with multiple sizes (boolean16/32/64)
  • ISO 7185 language mode (except for I/O). Features amongst others:
  • nested procedure variables
  • non-local goto's
  • Mac Pascal mode improvements
  • nested procedure variables
  • univ modifier
  • Intrinsics
  • sar (shift arithmetic right)
  • bsf/bsr (bitscan forward/reverse)
  • Delphi compatibility mode improvements
  • Nested types, class variables and class local constants
  • Advanced records syntax (no constructors yet)
  • (for..in) Enumerators in records
  • Class and record helpers
  • Generic records, arrays and procedural types
  • Delphi-compatibility of generics improved
  • Scoped enumerations
  • Custom messages for "deprecated" directive
  • Ability to use "&" for escaping keywords
  • New ARM code generator features
  • ARM VFPv2 and VFPv3 floating point unit support
  • Thumb-2 support
  • Packages:
  • Many improvements to the rtl
  • Many improvements to the database units (fcl-db)
  • Objective-Pascal interfaces to Foundation, AppKit, CoreData and WebCore
  • OpenGL headers updated to OpenGL 4.0

New in Lazarus 0.9.30 (May 20, 2011)

  • Windows CE: support for clipboard and keypad devices
  • GTK2 and GTK1 interfaces are now separated.
  • GTK1 is no longer maintained by the Lazarus team,
  • but patches are still welcome.
  • fpGUI: the LCL interface to fpGUI now supports all components
  • on the standard page.
  • QT: support for Haiku
  • Layout and autosizing is now more consistent across widgetsets,
  • overhead was reduced, improved cross platform layouts and complex forms.
  • Added gif reader
  • TLazIntfImage - New function AlphaBlend, which can alpha blend
  • an intfimage into another, using a separate intfimage as the
  • alpha channel.
  • Unit chart and its component TBarChar are deprecated.
  • See the new package TAChartLazarusPkg.
  • IDE:
  • Support for FPC resources:
  • You can now use {$R *.lfm} instead of {$i unit1.lrs}.
  • The Delphi converter has improved a lot.
  • Build modes, build macros and conditionals now allows
  • different sets of compiler options for projects and packages.
  • Editor
  • Hiding (Folding) of comments in Pascal source.
  • Allow Multiple Source-Editor Windows
  • Allow several Views of the same Source
  • User-defined color-schemes.
  • Identifier-completion pop-up is now resizeable
  • Project compiler options can now be saved as default for new projects.
  • When opening a project only those forms are opened
  • that were open when project was closed.
  • Various designer usability improvements:
  • arrow and tab keys switching between components
  • resize/move cancellation using ESC key
  • save/restore of the form window state in the project session
  • skip snapping when Alt key is pressed
  • When creating a new project the default unit output directory
  • is now lib/$(TargetCPU)-$(TargetOS). Target file name is project1.
  • This has no impact on old projects.
  • IDE now preserves the line endings of source files (it uses
  • the line ending of the first line, it does not preserve mixed
  • line endings).
  • You can now quickly switch between several versions / branches of
  • packages by defining the preferred package file name for each dependency.
  • You can now use the IDE directive %H- to hide individual hints,
  • notes and warnings.
  • The IDE can be made dockable. Install either the package
  • AnchorDockingDsgn or EasyDockMgrDsgn.
  • The ToDo list was moved to a separate package: todolistlaz.lpk.
  • Czech translation added
  • Debugger / Editor
  • Inserted/Deleted lines during a debug session are now tracked.
  • Breakpoints and Execution-line are adjusted.
  • Step out command implementation (by Flavio)
  • Show execution point command
  • Single Instruction step (over/into)
  • UI Improvements: Toolbars for Watches, Breakpoints, Disassembler
  • Watches: Enabled display formats (mem-dump, Hex, Default, ..)
  • Disassembler added navigation: jump to address / return to execution point
  • Improved reaction speed: It is possible to continue stepping
  • without having to wait for all watches, locals, ... to be evaluated
  • Components:
  • The IDE got some options to become easier for students and pupils
  • and there is a new package EducationLaz adding options to hide
  • complex parts of the IDE
  • New AggPas (Anti Grain Geometry for Object Pascal) package,
  • now supporting FPImage and LCL. AggPas highlights: Subpixel rendering,
  • 8-bit alpha channel, paths, platform independent rendering using
  • pure pascal
  • TAChart update, including: stacked and rotated series, 3 new types
  • of series, axis transformations, interactive tools, 6 new demos and
  • other improvements