Gambas 3.9.2

What's new

This release fixes most of the serious bugs found since the release of Gambas 3.9.1.

ChangeLog

CONFIGURATION

  • Correctly detect update of svn database for generating trunk version file.

DEVELOPMENT ENVIRONMENT

  • Optionally load gb.inotify component.

  • Farm client: Support for library publishing and library installation.

  • Translation: Locations of translated strings should be more readable now.

  • Welcome dialog: Software button is disabled if no software is installed.

  • Welcome dialog: Software and example lists are automatically refreshed after the farm software client has been used.

  • Welcome dialog: Software can be uninstalled by clicking on the little icon on the top right of the software box.

  • Packager: The package name of the library is now always prefixed with the vendor name or prefix, so that this name is predictable.

  • Packager: Consequently, making a package of a project using another library does not crash anymore if that library was never packaged.

  • Packager: When creating the package, display the messages in a box below the output log. Do not use message boxes anymore.

  • Farm client: When uninstalling a library, automatically remove the vendor directory if it is void.

  • Farm client: When uninstalling a software installed from the farm, automatically remove the vendor directory if it is void.

  • Allow files located in a linked directory to be modified only if they are opened in fake mode, i.e. alone.

  • Connection editor: The "SQL request" button is now an entry in the table list.

  • Connection editor: The database description is now the tooltip of the database configuration button.

  • Editor: Fix crash in code scanning after a deletion.

  • Packager: The description text box now expands vertically.

  • Packager: Debian package description is now correctly generated in all cases.

  • Editor: Workaround an interpreter crash when analyzing an expression including the LAST keyword.

  • Remove the pretty code indentation on function Begin/End. I need to find a way to close indentations on functions without ending.

  • Library dialog: Do not crash if a global library and a local library have the same vendor.

  • Explicitly close the FOutput form so that it can save its settings before its parent is destroyed.

INTERPRETER

  • The translation file of the project is now always correctly loaded. That was a very old bug.

  • Timer delay is now stored in 31 bits, and so can now be up to 2^31 - 1 milliseconds, i.e. about 24 days, 20 hours and 31 seconds.

  • Exec with a null program name does not crash anymore.

  • Debugger does not crash anymore when displaying a static collection-like object.

  • Close watched process input & outputs as soon as it is killed. Otherwise, running two processes using virtual terminals successively may fail.

  • Remove debugging messages.

GB.ARGS

  • Take UTF-8 into account when formatting help text.

  • Fix help text for options having no short name.

GB.DB

  • Connection.ApplyTemplate() now correctly handles a collation whose name is "default" in the template file.

GB.DB.SQLITE2

  • SQL strings including backslash characters are now correctly quoted.

GB.DB.SQLITE3

  • SQL strings including backslash characters are now correctly quoted.

GB.DBUS

  • DBusObject.Raise() now uses the default object interface if no interface is specified in the event name.

  • Fix string leak in signature marshalling routine.

GB.DESKTOP

  • Desktop.RunAsRoot() now uses gksu if gksudo is not found.

  • Desktop.RunAsRoot() should work correctly on SuSE now. It uses kdsu if kdsudo is not found.

  • Use KDE5 wallet when the desktop is KDE5. Use a possible old KDE4 wallet only if no password is found in the KDE5 wallet.

  • Support for cygwin desktops.

  • Setting Desktop.Passwords[] now works correctly if secret-tool is used.

GB.EVAL.HIGHLIGHT

  • Add some CSS properties and symbols.

GB.FORM

  • DirChooser,FileChooser: Add a "delete directory" menu that can delete void directories only.

  • DirView: File watch events does not disturb renaming anymore.

  • MenuButton: Automatic menu popup routine should not crash anymore.

GB.FORM.EDITOR

  • TextEditor: Editor works correctly again when a procedure is collapsed.

GB.GTK

  • Window.Menus[] does not crash anymore.

  • Workaround that prevents system tooltip colors to be unreadable.

GB.GTK3

  • Window.Menus[] does not crash anymore.

  • Workaround that prevents system tooltip colors to be unreadable.

GB.GUI.BASE

  • GridView: Stop the scrolling timer when focus is lost, as if you open a modal dialog during a MouseDown event, you don't get the MouseUp event! Maybe I should systematically raise a fake MouseUp event when focus is lost, and QT didn't send it.

  • IconView: Correctly refresh layout when icon pictures are made smaller.

GB.INOTIFY

  • Creating a watch with a null path now raises an error instead of crashing.

  • Don't assume inotify_add_watch() succeeds in all cases. The watched path may have been deleted after the watch has been created.

GB.JIT

  • Fix jit.h detection and resolve issue where multiple versions of llvm are present. jit.h is only available prior to llvm 3.6 and gb.jit can only be compiled with those versions.

GB.MAP

  • Now polylines work properly.

  • Zoom in does not change the center of the map anymore.

GB.MEDIA

  • Link explicitly with the thread library.

  • MediaPipeline: Prevent message callback routine possible recursion.

  • MediaPipeline: Raise the Start event when a new stream is started.

  • MediaPipeline: The Position and Duration properties are now computed during the message callback routine.

  • MediaPipeline: Raise the AboutToFinish event two seconds before the stream end.

  • MediaPlayer: NextURL is a new property that you must set to define the next stream that will be played without gap.

  • MediaPlayer: Setting the URL property now automatically stops the player.

  • MediaPlayer: The AboutToFinish event is now raised by MediaPipeline. This is not the GStreamer about-to-finish signal anymore.

GB.MEDIA.FORM

  • MediaView: Expose the inner MediaPlayer AboutToFinish event.

  • MediaView: Expose the inner MediaPlayer NextURL property.

GB.NET.POP3

  • Pop3Client.Refresh() has been implemented. This method was needed to refresh the internal message cache, so that you don't have to open a new connection each time you need to read the message box.

GB.QT4

  • Workaround that prevents system tooltip colors to be unreadable.

GB.QT5

  • Workaround that prevents system tooltip colors to be unreadable.

GB.SDL

  • Cygwin needs the shared library x11 - as per Bastian Germann.

GB.SDL2.AUDIO

  • Remove unneeded references to Channel objects, which lead to memory leak.

GB.XML

  • XmlNode: Don't crash when _get()ing an empty attribute value.

  • XmlNode.Attributes now works correctly when getting empty attributes.

  • XmlElement.GetAttribute() now works correctly with empty attributes.

  • Cygwin changes - as per Bastian Germann.

GB.WEB

  • If Http-Accept-Language header is void, Request.Language returns the current system language instead of "C".

  • Mime types for json, kml & kmz files. Used by the Response.SendFile() method.

  • Don't modify DB.Current when sessions are managed with sqlite databases.

  • Using Response.SendFile() correctly sets the Done property.

  • Getting the sessions keys using sqlite works correctly now.

GB.WEB.FORM

  • WebForm.Download() is a new static method that triggers a file download on the client side.

  • WebTextBox: The default event is "Change" now.

  • Allows quotes in automatic completion items.

  • WebControl.Name is now writable, so that the Group virtual property can be used in the IDE.

  • WebContainer: Force a full refresh when the Visible property changes.

  • WebTable: Add an Hidden property to the column object.

  • WebUploadArea: Clear() is a new method that clears the possibly uploaded file.

  • WebTable: Selection is now correctly maintained between requests.

  • The static public method HandleRequest is now correctly called in your startup form.

  • Remove support for multiple main forms.

  • WebTable: AddColumn() is a new method to add a column and defining its properties in one line of code.

  • WebForm: Prevent non resizable dialog window from expanding to fit its contents.

  • WebForm: Correctly restore automatic instances between requests.

  • WebForm: The Hide() method works as expected now.

  • WebForm: Persistent is a new property that tells a form must be hidden instead of being deleted when clicking on the close button or calling the Close() method.

  • WebDataBox: DateTime is a new property that allows the control to accept a time part.

Compilation and installation

Read the instructions there.

If everything was fine, type "gambas3" to run the development environment.

Enjoy it !

See also