FreeCLX updates available for download

By: John Kaster

Abstract: Mark Duncan of Kylix R&D has updated FreeCLX. Kylix 1 users can get many of the CLX bug fixes released with Kylix 2 in this public beta download

Mark Duncan of Kylix R&D has merged many of the Kylix 2 bug fixes back to the FreeCLXTM codebase. A "public beta" version of FreeCLX can be downloaded now from CodeCentral. Installation instructions are provided on the download page.

Because this a public beta, you must agree to a disclaimer before downloading the file containing the update. When you attempt to dowload the file, you will be asked if you agree to the disclaimer. The file is then streamed directly to the web server. This streaming process normally prevents auto-resuming the file with a download manager. The file is currently 2.6 MB. We apologize for any inconvenience this may cause if your download gets interrupted.

Since the changes are fairly major, Mark wants to have a short beta test before commiting everything to the FreeCLX CVS server on SourceForge. FreeCLX users are encouraged to try it out, and respond to the appropriate borland.public.kylix.* newsgroups with feedback for any problems they encounter. You can see the list of newsgroups at http://www.borland.com/newsgroups/.

Please note:

  • This FreeCLX beta is only for use with Kylix 1 (Kylix 2 currently contains more fixes/features than FreeCLX)
  • This FreeCLX beta is Linux-specific at the moment. It will be updated to work on Windows in the near future (although Delphi users can download it and use the CLX sources, but the configuration scripts and makefiles will not work)

Updates

The remainder of this article describes the updates Mark has made to FreeCLX. If you have general questions about FreeCLX, you can ask them in the Kylix non-tech newsgroup.

General

  • Added configuration script to make building/installing easier
  • Configuration options allow building of selected FreeCLX components.
  • Automatically update Kylix library path and install libqtintf.so to Kylix directory.
  • Makefiles now build baseclx, visualclx, dataclx and visualdbclx packages.

The remainder is a partial list of resolved issues:

BaseCLXTM

SysUtils.pas:

  • Utf8ToUnicode will return the correct number when the source string contains 2 byte length characters and thre destination is NULL.
  • Fix memory leak in AnsiStrComp an AnsiStrLIComp.
  • Fix file-handle leak in FileOpen when locking operation fails.
  • ExpandTilde now supports MBCS.
  • FindFirst now works correctly with faDirectory attribute.
  • Resolved performance problem with WideUpperCase and WideLowerCase.
  • Fixed crash when WideString literal assignment contained a value > #255.

System.pas:

  • _ReallocMem will now test whether FreeMem was successful.
  • Fix possible heap / memory corruption if GetModuleFileName is passed BufLen <= 0.
  • GetModuleFileName will supply the full path to the executable if it is called from within a CGI application running on Apache.
  • GetCPUType returns correct values on 386,486-class systems.
  • Fix bad problem where failing to open a TextFile would close STDOUT.
  • SetTextBuf will now work on Input, Output and ErrOutput variables.
  • Fix hang when setting ExitCode <> 0 in DllMain of a dynamically loaded shared object.

Classes.pas:

  • ExtractStrings will correctly handle quoted characters inside a quoted string.
  • ObjectTextToBinary can now handle multi-line international strings.
  • TStream.GetSize works with streams > 2GB.

Xlib.pas:

  • Fixed XUnmapWindow prototype.
  • Fixed XChangeProperty prototype.

Libc.pas:

  • Fixed wait4 prototype.
  • Fixed some pointer-type declarations that were missing carets.
  • Fixed globfree prototype.
  • Fixed getitimer prototype.

VisualCLXTM

DirSel.pas:

  • SelectDirectory dialog now optionally shows hidden directories.
  • Fixed problem with accented characters in directory names.

QButtons.pas:

  • Fixed crash when setting Glyph of TSpeedButton/TBitBtn to nil when an Action with images is assigned
  • Fix painting problem when all anchors for TSpeedButton are set and the form is resized to shrink the TSpeedButton to less than zero Width/Height

QCheckLst.pas:

  • TCheckListBox paints checkbox background in the proper color.
  • Fixed speed issue with thousands of items

QComCtrls.pas:

  • TListView and TTreeView event handler dispatchers are now protected.
  • TMimeSourceFactory uses WideStrings instead of AnsiStrings.
  • Fixed minor problem with TToolButton hints not updating in certain circumstances when moving between buttons.
  • Fixed insertion of items into TIconView
  • Items added to a TIconView with Images will now align correctly.
  • TListView.GetNextItem with sdAbove, sdBelow, and sdAll will return the correct values.
  • TListView.Add now increments the indices of all items.
  • TListView.Insert inserts in the correct place.
  • TListView.OnInsert now will actually fire.
  • Fix crash with TListView.OnSelectItem when multiselecting.
  • TIconView item editing will change the caption of the item.
  • Fixed an number of issues with TIconView multiselect.
  • Update TListView column's font when TListView's Font changes.
  • TTreeView will repaint correctly when Invalidate/Repaint is called.
  • TIconView.Add now returns a TIconViewItemClass.
  • TListView can now have subitems *without* images.
  • Fix crash in TTreeView.Items.ChangeItemTypes(itCheckBox)
  • Fix hang when moving nodes in TTreeView's viewport then calling AbsoluteIndex
  • Fixed TTreeView.Selected repaint problem.
  • TListView inplace editor will appear in the correct column, not just the first column.
  • Fix short loop in TIconView.GetNextItem(sdAll)
  • Fix TIconView.FindItemByText.
  • Add Canvas property to TIconView.
  • Fix EListError when inserting an item into the IconView while the application is closing.
  • TTabControl.GetDisplayRect will return the correct value (minus the tabs)
  • Fix issue with ordering of tabs when TTabControl.HotTrack is enabled.
  • TSpinEdit streaming of Max and Min is fixed.

QConsts.pas:

  • Remove duplicates appearing in RTLConsts as well.

QControls.pas:

  • Hoist visibility TCustomControl.UpdateMask to protected from private.
  • Fix issue with reparenting controls into a QScrollView-based TWidgetControl.
  • Fix THintWindow repainting problem.
  • TFrameControl.ClientRect will now return the area minus the frame.

QDialogs.pas:

  • MessageDlg will ignore mbNone (used internally only)
  • TOpen/SaveDialogs will ignore trailing LF's in a filter string.
  • Allow access to TCustomDialog's underlying Form.
  • Add TFindDialog.Modal property.
  • Add PromptForFilename function.
  • Fix another focus issue when dispatching MessageDlg.
  • TOpenDialog.DefaultExt would be appended in the wrong place under certain circumstances.
  • Always focus the TFind/ReplaceDialog's Find Edit when showing.

QExtCtrls.pas:

  • Fixed repaint issues when changing font in TRadioGroup/TGroupBox
  • Fixed repaint issues when moving around buttons in TRadioGroup.
  • TSplitter.Beveled now paints properly.
  • Top-aligned TSplitter will position the resize cursor in the correct position when the form has a Main Menu.

QForms.pas:

  • Fixed problem with double OnKeyXXX events when KeyPreview = True and no enabled components on the form.
  • Can now paint on the form's canvas *after* the form paints itself.

QGraphics.pas:

  • Fixed memory leaks in TCanvas and TBitmap.
  • Fixed TCanvas.CopyModes to do the all supported raster operations.
  • Fixed TBitmap.LoadFromResourceID
  • Add ColorFromColorMap function, to convert a TColor to the Display color.

QGrids.pas:

  • Fixed a painting problem when scrolling with goRowSelect.

QMask.pas:

  • Clearing the MaskEdit property no longer leaves garbage literals in the Edit field.

QMenus.pas:

  • Fixed a number of menu merging bugs, especially with non-visible menu items.
  • Fix problems clearing a TMenuItem's bitmap.
  • Setting a TMenuItem's Caption from separator indicator "-" to a text caption now works.

QStdCtrls.pas:

  • TListBox RowLayout and ColumnLayout
  • TMemo.Text := '' now equivalent to TMemo.Clear
  • TMemo refreshes it's text viewing area when scrollbars' visibility changes.
  • TListBox will no longer change the selection once a drag operation is initiated.
  • TComboBox no longer fires OnChange when it's created.
  • Fixed TabOrder issue with TComboBox
  • TLabel Autosize didn't work properly when BorderStyle <> bsNone
  • Fixed TLabel Autosize problem when justification is taCenter or taRight.
  • Attempting to select the first item in a TComboBox will now work when the dropdown list is showing.
  • Fixed stack overflow when assigning one TMemo's contents to another TMemo.
  • Fixed formatting issues when TMemo.WordWrap is enabled.
  • Fixed selection issues during Drag&Drop with TEdit and TMemo.
  • TMemo allows re-highlighting when inside a highlighted block.
  • Fixed painting problem with TLCDNumber when PointSize = ptLarge.
  • Add Undo/Redo to TMemo.
  • TMemo default local menu will have items enabled/disabled when appropriate.
  • Fix speed issue when adding thousands of items to TComboBox.
  • Fix speed issue when adding thousands of items to TListBox.

Visual DataCLXTM

QDBGrids.pas:

  • Fixed a number of painting/display issues with TDBGrid.
  • Fix problem with cursor sticking on crHSplit after resizing a column

QDBCtrls.pas:

  • TDBEdit will not pretend to edit read-only or aggregate fields.

DataCLXTM

DB.pas:

  • Fix problem setting a BCD value with a Currency value.
  • Fix validation of FMTBCD fields.
  • Add precision numeric scale and size to TParam so they can be used in parameterized queries and stored procedures.
  • TDataLink UpdateRange uses Recordcount instead of BufferCount.
  • TParam.Assign can now assign more TPersistent types using IStream.

DBClient.pas:

  • Allow more types when setting optional parameters to DataSnap.
  • Fix bug with SetIndex on detail tables.
  • Remove check for active aggregates when changing aggregate index ordering.

DBLocal.pas:

  • Fix problems loading TSQLClientDataSet from a file.

FMTBcd.pas:

  • Fix several crash problems with BCD arithmetic, aggregates and operations.

SqlExpr.pas:

  • Surface new RowSetSize property for block fetches (where supported)
  • Allow retrieval of package metadata information (where supported)
  • Surface MultipleTransactionsSupported property on TSQLConnection
  • Add NoMetadata flag on TSQLDataSet descendants for performance.
  • Fix exception trying to retrieve blob at EOF.
  • Fix issue with BCD parameters to stored procedures.
  • Add virtual OnTrace event dispatcher to TSQLMonitor.
  • Fix memory leak in TSQLConnection.
  • Fix bug with parameter binding for char fields.
  • Return correct error for failure to bind parameters when calling SetParameter.
  • Return DataSet if requested from TSQLConnection.Execute even if Params is nil.
  • Fix memory leak in TSQLDataSet.
  • Fix problems with maintaining statement after closing SQLDataSet.
  • Fix bug where SQLDataSet could be left inactive after refreshing.
  • Fix bug with retrieving null output params from a stored procedure.
  • Fix problem retreiveing metadata for tables with mixed case names or aliases.
  • Fix problems with TSQLTables regarding use of indexes and master-detail.

Server Response from: ETNASC04