Lazarus 0.9.30 release notes

From Lazarus wiki
Jump to navigationJump to search

Template:Lazarus 0.9.30 release notes

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

Statistics:

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

LCL Interfaces major changes

  • Windows CE: Implemented menu support for KeyPad devices (previously worked only in PDA devices), implemented Clipboard support.
  • TGetDesignerFormEvent parameter uses TPersistent instead of TComponent. Reason: support for TCollection and TCollectionItem. Effects only designers.

LCL Changes

  • OpenURL function in the LCLProc unit.
  • TApplication.ApplicationType: atSmartphone was renamed to atKeyPadDevice to have a more consistent name. Smartphone devices with touch screen should be of atPDA type instead. atKeyPadDevice should be used for very simple phones and other simple devices (GPS, bar code scanner, etc) without touchscreen. atHandheld was removed. The supported types now are atKeyPadDevice, atPDA, atDesktop and atDefault. The correct type is calculated in Application.Initialize if one isn't forced. This property can be used to verify if automatic modifications are in place to adapt the application to the device.
  • TButton, TCustomButton are no longer defined in the Buttons.pas unit, but in unit StdCtrls only (previosly buttons.pas had own TCustomButton, TButton type declarations). Initial class code move was made before the Lazarus 0.9.22 release because of Delphi compatibility.
  • DisableAutoSizing/EnableAutoSizing now work for the whole form, greatly reducing overhead and flicker.
  • ReAlign and AdjustSize now do the same - invalidating the bounds and triggering a recomputation of the sizes.
  • Nested controls now update properly. No need anymore to call ReAlign or Parent.AdjustSize.
  • DisableAutoSizing/EnableAutoSizing now work even when changing the Parent of a control, reducing overhead and flicker when docking.
  • TControl.DoAutoSize now resizes to preferred size. No need to do that in descendants. It also checks for dependencies.

IDE Changes

  • Various designer usability improvements:
    • arrow and tab keys switching between components
    • resize/move cancelation using ESC key
    • save/restore of the form window state (minimized/normal/maximized) in the project session
    • extended hints: show component TabStop,TabOrder in case of TWinControl, show new size/new position during components resize/reposition
  • 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.
  • Quick fix for can't find unit: search unit in packages (memory and disk) and add requirement
  • Object inspector improvements:
    • Draw read only properties using another color (gray by default)
    • New ImageIndex property editor
  • Editor
    • Folding for XML, LFM
    • Allow Multiply Source-Editor Windows
  • Support for FPC resources: You can now use {$R *.lfm} instead of {$i unit1.lrs}.
  • Package file names in packagefiles.xml are now saved without lazarus source directory. Switching to another lazarus source directory automatically reloads packages from the new lazarus source directory.
  • IDE now checks if lpi file changed on disk and asks if it should reopen the project.
  • Project compiler options can now be saved as default for new projects (see here)
  • Packages can now have a normal unit with the same name as the package. For example the package SynEdit has the unit synedit.pp. See here
  • Add to package dialog: removed pages Add unit and Add file. You can use Add files page or in the main menu Package / Add active unit to package.
  • If you start multiple instances of the IDE to debug different projects (e.g. client, server) you can now show the project name on the taskbar. See here.
  • IDE now preserves the file endings of source files (it uses the line ending of the first line, so it does not preserve mixed line endings). You can change the line ending of a source file via Source Editor / popup menu / File settings / Line ending
  • IDEIntf:
    • PropEditUtils unit is extracted from PropEdits
  • SrcEditorIntf:
    • Introduced TSourceEditorManagerInterface
    • Deprecated SourceEditorWindow, replaced by SourceEditorManagerIntf
    • Deprecated some methods on TSourceEditorWindowInterface, now available through TSourceEditorManagerInterface
  • The ImageList Editor can split images that contains sub images in both dimensions (Width X Height), e.g., loading a image of size 48 X 32 in a image list with width and height equal to 16 will split into 6 sub images of size 16 x 16. Previously it was only possible to split files where the file width was a factor of the image list width and image height matched image list height. This allows to export/import image lists between different projects and matches a Delphi feature.
  • IDEIntf: TAbstractFormEditor.CreateComponent added boolean DisableAutoSize. If you pass true the form will flicker far less, but you have to call EnableAutoSizing afterwards.

Codetools

  • Codetools is now a normal package and stored in components/codetools/codetools.lpk. You can not uninstall it, but the IDE will now automatically recompile it, for example when cross compiling.
  • Support for objcclass syntax. See FPC PasCocoa.
  • support for strict private, strict protected, class sealed, class abstract
  • Block completion improved adding less wrong code.
  • Class completion: New option to disable adding a comment in front of the first method body. See here
  • Smarter auto indentation that mimics the indentation of surrounding code and/or an example file. See here.
  • identifier completion now completes compiler predefined types like String, AnsiString, Byte, Boolean, ...
  • Simple source macros are now parsed (macro on directive of fpc).

Components

  • AggPas - Anti Grain Geometry for Object Pascal - now supporting FPImage and LCL. AggPas highlights: Subpixel rendering, 8-bit alpha channel, paths, platform independent rendering using pure pascal. Official site: Aggpas. Package file: components/aggpas/lazarus/aggpaslcl.lpk. See the examples in components/aggpas/lazarus/examples.

Debugging

  • Step out command implementation (by Flavio)
  • Show execution point command