Gambas 3.19.0

What's new?

The main features of this release are the following:

  • Huge interpreter optimizations, making it faster than Python, Perl and Java interpreters in all benchmarks!

  • Support for the russian e2k architecture.

  • Many enhancements to the IDE image editor.

  • The IDE can generate AppImage packages.

  • The IDE project tree filter is a lot faster.

  • Add global shortcut to LinkedIn, following KDE merge request #1731.

  • Support for computed GOTO and GOSUB.

  • New Dec and Base$ functions for converting integers in any base.

  • The database component now can retrieve the contents of a newly inserted record, provided that the database driver supports it.

  • The gb.desktop component now uses the freedesktop portal by default if present.

  • A new default icon theme named gambas-thin.

  • Better Wayland support in GUI components.

  • A new syntax highlighter component based on definition files: gb.highlight.

  • Add wayland support to the gb.media and gb.media.form components, and fix many problems.

  • Add support for the dict:// protocol in the gb.net.curl component.

Compilation and installation

Read the instructions there.

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

Enjoy it !

Changelog

CONFIGURATION

  • Add support of C++17 for gb.poppler.

  • Update e-mail address in version.m4.

  • Update README files.

  • Support for e2k architecture.

  • Fix configuration on Alpine.

  • Get component controls icons both from its control directory and the optional associated Gambas project of the same name.

  • Update AUTHORS with Li XiaoKong who finished the translation of the Gambas 3 IDE in simplified chinese.

  • Switch bytecode version to 3.19.

  • Switch version to 3.19.0

DEVELOPMENT ENVIRONMENT

Automatic completion

  • Fix variable detection in PROPERTY...USE syntax.

  • Signatures of _call, _get and _put are available again.

  • Redraw symbol icons and display static symbols in bold.

Code and text editor

  • The shortcut for formatting is now CTRL+SHIFT+T.

  • If no datatype can be guessed for a local variable, use its prefix.

  • Enhance datatype detection for automatic local variable declaration.

  • Hide the "insert date" toolbar button by default.

  • Add newline at the end of snippets where it makes sense.

  • Remove the old code managing "<%" insertion. This is now handled by gb.form.editor.

  • Automatic variable declaration now takes ByRef arguments into account.

  • Use the new gb.highlight component instead of gb.eval.highlight.

  • Fix CSS file compression when using calc().

  • Fix global editor position history.

  • Correctly analyze property declarations with USE including variable initialization.

Color selection dialog

  • Remove inner margin.

Connection editor

  • Display errors returned when executing a custom request.

  • Use program stock icon for system tables.

DBus explorer

  • Add a button that pastes in the editor the DBus call corresponding to the current selected symbol.

  • Use a TabPanel instead of ToolButton for choosing the bus.

Debugger

  • Edited files will not remain locked anymore after the debugger stops.

  • Always reload other project files on each debugging session.

  • The titles of the variable tree now expand on click.

  • Stopping the debugger now kills the debugged process in external debugging mode.

  • Resize newly opened debugger windows to fit the contents vertically.

  • Highlight new lines in debugger windows.

  • Remove the temporary directory of the debugged process automatically when it stops.

  • Do not crash when loading the breakpoints if the project is old.

  • Support for viewing the contents of Picture and Image objects.

  • Automatically remove the temporary desktop file when the project is stopped.

  • Add tooltips to explain the different process data displayed.

  • Add a button to open the temporary directory of the debugged process.

  • Update the debugged process id in real time when debugging a project using the embedded HTTP server.

  • Automatically enable the "Use HTTP server" debugging option when the gb.web.gui component is used.

Debugger configuration dialog

  • New dialog look.

  • Add some useful environment variables to the popup menu.

  • Environment menu entries must not be translated.

  • Add debugging environment variables for gb.media.

  • Replace GB_NO_JIT=1 by GB_JIT_ENABLED=0.

Debugger windows

  • Better colors for errors and changes.

  • Display errors only in the second column.

  • Redesign debugger window interface.

Farm software

  • Fix software download. HTTP headers are not case-sensitive anymore.

File information dialog

  • Some redesign.

File property dialog

  • Take profile files into account.

Form editor

  • Do not apply properties defined in a class of the project.

  • If multiple controls are selected, do not crash when editing common properties if some of the controls are virtual.

  • Allows control properties to be applied when its _DrawWith constant is defined.

  • Add the tooltip back in the controls toolbox.

  • Do not set a tooltip for the controls toolbox select tool.

  • Use a specific Splitter icon when its border is set, instead of a drawing the standard container border.

  • String properties that have no default value display a combo-box with a void item.

  • Add support for the new flag:/ picture URLs.

  • The DrawingArea.NoMouse property must be ignored by the form editor.

  • Clicking with the right mouse button to open the popup menu always selects the underlying control, or the form if there is no control under the mouse cursor.

Gambas fonts

  • Some character fixes.

  • Make comma, colon and semi-colon characters a bit bolder.

Help browser

  • Prevent flickering of GTK+3 web view.

  • Some fixes for the offline help.

  • Do not display old page top header when clicking on the result of a offline search.

  • Fix the CSS of the <H1> titles of offline help.

  • Use https for all wiki links.

  • Fix offline help rendering.

  • Fix help for project classes.

Icon selection dialog

  • Fix initial selection.

  • Remember the last opened tab.

  • Keep the selection when the size changes.

  • Add support for the new flag:/ picture URLs.

Image editor

  • Crop tool now works as expected.

  • Linear selections can be rotated without crashing now.

  • If the selection is void, the copy action copies the entire image.

  • Rework undo/redo management to fix some problems.

  • Save the status of the grid in the project settings file..

  • Save the status of tools dialogs in the project settings file.

  • Save the grid status on project close, not on form close anymore.

  • Save the status of image offset dialog correctly.

  • Fix selection clear and undo on double click.

  • Fix image resize dialog.

  • Add more default gray colors in the color palette.

  • The move tool now moves the contents of the image.

  • Better click on selection shapes for selecting, moving or rotating them.

  • Prevent a possible crash while resizing a selection.

  • Saving the current selection now automatically scrolls the selection list to it.

  • Picking a color on the screen automatically adds it to the color palette.

  • Color palette now displays two lines of buttons.

  • Make color palette buttons a bit bigger.

  • Picking a color on the screen correctly selects it in the palette.

  • Add an handle that allows to define the selection rotation center.

  • Load saved selections only the first time the Selection tab is clicked on the image editor property panel.

  • Selections are now stored in their own JSON file outside of the IDE configuration file.

  • Add a draw polygon / star tool.

  • Redesign the shape tab in the property panel.

  • Save PNG with maximum compression level by default.

  • Fix line width used for drawing image grid.

  • Zoom fit is now a toggle that has a permanent effect when toggled.

  • Fix a possible crash when the text to draw changes whereas there is no image editor activated.

  • Rearrange tools configuration.

Make executable dialog

  • Add an option to ignore the Public project directory.

Menu editor

  • Do not draw the picture of top-level menus.

Open project dialog

  • Do not crash if there is no project template when creating a new project, even if it should not happen.

  • Add a create project tab.

  • The old project creation dialog has been removed.

  • Remove the ~subversion template.

  • Creating a new project does not copy the template icon anymore.

  • Add a popup menu on project boxes.

Option dialog

  • New dialog look.

  • Rework internal implementation of UI layout configuration.

  • Add "3.19" in the list of Gambas bytecode versions.

  • Sort themes by name in the combobox.

  • Theme change correctly update editor again.

  • Opening the dialog twice when the "Interface" tab is selected does not crash anymore.

  • Add an option to define the toolbar defaut size.

  • Fix theme configuration.

  • Make the SwichButtons a bit smaller.

Package

  • Support for making AppImage packages.

  • Application identifier is now configurable.

  • Add a wizard step that allows to configure the Ubuntu repositiory and distribution used by AppImageBuilder.

Profiler

  • Profile files are now displayed in the project tree, inside the "Profiles" folder.

  • Profiling windows are now embedded in the workspace.

  • Profile files are now stored inside the ".profile" hidden directory of the project.

  • Add "Remove all profile files" action to the Debug menu.

  • When profiling is enabled, change the debugger start icon.

Project browser

  • Opening a file correctly toggles the associated right panel.

  • The Open, Open with, Properties and Version control popup menu actions now work as expected.

  • Fix view buttons icon size.

  • The import file menu comes back.

  • Use the new filter event to filter the tree. It's a lot faster.

  • Filtering automatically displays filtered items.

  • Add a button to shrink the view.

  • Add a button to display all items.

  • Use the new TreeView CollapseAll() and ExpandAll() methods.

  • Put the option buttons inside the filter popup menu.

  • The tree stopped refreshing in some cases.

  • Correctly refresh the filter menu when the project is put under version control.

  • Double-click now collapses a folder.

  • Fix collapsing and expanding on mouse click.

  • All tree icons are cached, making filtering refresh faster.

  • Refreshing it now collapses it.

  • Adding a new file correctly updates the tree now.

  • Do not expand an item on double-click if this item is not a directory. Just open it.

  • Add a "refresh project" entry in the filter menu.

  • Use the new TreeView Highlight property.

  • Fix profile popup menu.

  • Adding new files is possible again.

  • Fix popup menu contents.

  • Use tiny icons.

  • Giving a source directory the same name as a form does not hide its contents anymore, when the "Display form class files" option is toggled.

  • Don't trash the current selection when filling the project tree while expanding a parent directory.

  • Correctly initialize "show all classes" and "use inheritance" project tree options.

  • Fix popup menu of external files.

  • The shrinked view is now the default view when opening a project.

Project management

  • Display an error message when sending a project by mail fails, instead of crashing.

  • Display the executable path in the status bar message when making an executable.

  • Automatically compile the project when it is opened if it has never been compiled.

  • Use the current icon theme icons to make the project directory icon.

  • Redraw the overlay of translatable project icons.

  • Generate the project directory icon each time the project is loaded.

  • Display duration of executable generation.

  • Project version is now stored in the .version file. Backward-compatibility is ensured by synchronizing the version number in the .project file too.

  • Use the new -b compiler option to force the bytecode version instead of the GB_PCODE_VERSION environment variable.

  • Fix symbolic link generation when importing a file from the same project in the same directory.

  • Save the project icon as .app.png, so that it can be put into the executable.

  • Projects now are compiled with the maximum number of background tasks by default.

  • Correctly catch compiler messages on incorrect command-line arguments.

Project properties dialog

  • New dialog look.

  • Show a flag with project default language.

  • Add a new tab that allows to define a list of environment variables that will be set at startup.

  • Add the environment popup menu from the debugger configuration dialog.

  • Add the project data files size in the statistics tab.

  • The "Properties" tab information is correctly saved and restore now.

  • Use the news stock icon for representing environment variables.

Search dialog

  • Avoid a possible crash on automatic refresh.

  • Avoid looping error messages when trying to refresh a file that does not exist anymore.

  • CTRL+SHIFT+F and CTRL+SHIFT+R now open the search dialog for searching or replacing all files.

  • Prevent a possible crash when computing search result position.

System information dialog

  • Add more informations, and change the order.

  • Display the version of SDL2, not SDL.

  • A little redesign. More programs checked.

  • Run version check in the background.

Test suites

  • Fix the behaviour of the test suites interface when a test suite has no test.

Translation dialog

  • New dialog look.

  • Show flags with languages.

  • Import translation now takes the # gb-ignore comment into account.

  • Add a new tab that allows to import all translations from another project.

Welcome dialog

  • Add a tool button that opens the project sort popup menu.

Version control

  • Move repository information to its own dialog.

  • Some fixes in the repository dialog.

  • Add the Locate change button to the global version control dialog.

  • Automatically revert unimportant files (.icon.png and .gitignore) before switching to another branch.

  • Add a button that switch to the selected branch.

  • Add .version to the list of unimportant files that are automatically reverted on branch change or project close.

  • Move "Create new branch" button to the right in the debugger panel.

  • Replace branch selection menu by a list embedded in the project tree panel.

  • Wait less for version control commands.

  • Fix display of check-boxes at bottom of the version control dialog.

Miscellaneous

  • Update French translation.

  • Update Dutch translation.

  • Update Spanish translation.

  • Update Italian translation.

  • Remove es_ES translation.

  • Update Simplified Chinese translation.

  • Update Spanish translation by Martin Belmonte using Crustacea translator.

  • Update financial support file.

  • Redraw modules icons.

  • Support for gb.gui.qt.ext component.

  • You have now to double-click on a warning to go to the associated line of code.

  • Add a button to copy all compiler warnings to the clipboard.

  • Clip the right of the status label when there is not enough space.

  • Add global shortcut to LinkedIn, following KDE merge request #1731.

  • Project directory icon can be updated with the --update-icon command-line option.

  • IDE usage help is now translatable.

  • Keep the authorizations when saving a file.

  • Support for the new gb.highlight component.

  • Some little changes in the Gambas color theme.

  • The gitignore file has been updated to ignore profile files.

  • Fix file header text in the message of confirmation dialogs.

  • Fix layout of some confirmation messages.

  • Do not load recent file settings twice at startup.

  • Do not update the .gitignore file to a lower version than the current one.

  • Fix workspace current form activation on project change.

  • Update default IDE layouts.

  • Use Toolbar class almost everywhere, so that the size of the icons is configurable.

  • Use Shell.RmDir instead of running "rm -rf".

  • Remove unused and now incorrectly overridden Id property from SoftwareBox class.

WIKI

  • New wiki look.

  • Update Dutch translation.

  • Update French translation.

  • Update Italian translation.

  • Update Spanish translation by Martin Belmonte using Crustacea translator.

  • Adapt to the last changes in gb.markdown.

  • The search entry is now in the seach page.

  • Fix symbolic links on stock icons.

  • Fix index generation.

  • Fix CSS of box icons.

  • Fix behaviour of preview.

  • New presentation for class symbols list.

  • Update icons to gambas-thin theme.

  • Update style sheet so that it handles highlighted code using <TT> instead of <PRE>.

  • Allow to toggle the display of inherited symbols.

WEB SITE MAKER

  • Update Dutch translation.

EXAMPLES

  • GameOfLife: French Translation.

  • MoviePlayer: Force the use of gb.qt4, as only that component has the Embedder control.

INTERPRETER

  • WAIT with no argument now behaves as before when no component specific WAIT handler is defined.

  • Delete temporary files when the QUIT instruction is used.

  • Forked processes now use fast exit, to avoir a possible crash.

  • Application.TempDir is a new property that returns the temporary directory used by the interpreter for the current process.

  • The support for external debugging now uses the project name stored in the .startup file, not the executable name, which may be different.

  • Set environment variables at startup from the .environment file.

  • Add implicit conversion of Boolean, Byte and Short values into Pointer.

  • Fix a test that leads to a crash when gcc optimizations are enabled.

  • When using an intermediate temporary stream, copy the behaviour flags from the original stream.

  • Alloc() now fills the allocated memory with zeros when used with two arguments.

  • Object.Data() is a new method that returns the address of the data of an object.

  • Support for the new Eval() feature.

  • Correctly free environment declared in the project configuration at program exit.

  • When a signal handler is set, ensure that the signal is not blocked.

  • Correctly read the project name in the .startup file.

  • Fix common integer loop optimization.

  • Allow to open a directory in direct mode for reading only, as Linux allows that.

  • Fix &= operator optimization on global string variables.

  • Support for e2k architecture.

  • Don't crash if the argument of SizeOf() is incorrect, but raise an error instead.

  • Prevent some optimizations that cannot work in a just-in-time context.

  • Fix a typo in an error message.

  • Add Dec() / FromBase() subroutines.

  • Add Base() / Base$() subroutines.

  • Some support for older versions of gcc without overflow detection.

  • Free two more bytecodes.

  • Disable gcc indirect branch tracking for main interpreter function. This Intel security feature makes the interpreter 20% slower!

  • Do not try to disable CTE support if gcc does not have the corresponding flag.

  • Shortcut path for adding a small integer or float constant number.

  • Optimize object release for native integer and float arrays accessors.

  • Implementation of computed Goto and GoSub.

  • Big optimization of the interpreter loop by using a local program counter.

  • Optimize stack pointer manipulations in the main interpreter loop. About 10% speed gain according to the benchmarks!

  • Optimize object creation when there is no special method to call (_new, _ready, global variable initialization) and no inheritance.

  • Correctly initialize functions without computed Goto or GoSub.

  • FromURL() does not decode + into a space before having encountered the ? query delimiter character.

  • When loading a class fails, display an accurate error message.

  • A global class find does now a global class lookup. It seems more logical.

  • INPUT ignores leading spaces characters now.

  • Fix a bad optimization in fast array accessors.

  • Add a new process objet to the internal process object list after signals have been checked.

  • Fix some problems detected by CppCheck tool.

  • Add support for GB_JIT_ENABLED environment variable. GB_JIT_ENABLED=0 is a synonymous of GB_NO_JIT=1.

  • Component.Version now returns the actual version of the underlying Gambas executable if it has one. Otherwise, i.e. for a component with no Gambas code, it returns the interpreter version.

  • Application_Log is a startup class global method that intercepts all output sent on the standard error output by the Error or Debug instructions.

  • Fix the object serialization cache of READ and WRITE instructions.

  • Fix a memory leak when unserializing the return value of a Task.

  • Don't leak memory if serialization or unserialization fails.

  • Add Stream.NoShare property, that allows to tell the stream not to share objects when using the WRITE instruction.

  • Small optimization of inequality comparison operators.

COMPILER

  • Write the name of the project in the .startup file.

  • Generate the .environment files with the list of environment variables that must be set at startup.

  • +Inf and -Inf do not prevent the next pattern to be a reserved keyword anymore.

  • Add Dec() / FromBase() subroutines.

  • Add Base() / Base$() subroutines.

  • Free two more bytecodes.

  • Optimize the compilation of floating-point global constants being actually an integer between -128 and 127.

  • Shortcut path for adding a small integer or float constant number.

  • Using a label inside an expression now raises an error.

  • There is a maximum of 1023 labels by function now.

  • Implementation of computed Goto and GoSub.

  • Fix initial detection of labels when compiling a function.

  • Use one short integer less in the bytecode files for each function using computed Goto.

  • Make "%>" a keyword for syntax analyze of gambas code embedded into a WebPage.

  • Embedded arrays do not raise warnings on being uninitialized anymore.

  • Fix compilation of numbers added (or substracted) to dates.

  • The project version is now stored in the .version file.

  • Add -b option, that allows to force the bytecode version, like the GB_PCODE_VERSION environment variable.

ARCHIVER

  • Add a -p option to ignore the .public directory.

  • Handle hidden files only in the project root directory.

  • Make code compile on older versions of gcc.

  • Add the .environment file to the archive.

  • Add the .app.png file into the executable if present.

SCRIPTER

  • Update project icon.

  • Update Spanish translation by Martin Belmonte using Crustacea translator.

  • Returns 127 whe a file not found, not -2 that does not work anymore.

BENCHMARKS

  • Fix the HTML table generation.

  • Rename the string benchmark as string1, to avoid name clashes in Python.

  • Add a new btree benchmark, that does a lot of object creation and recursive function calls.

TEMPLATES

  • Update template projects.

  • Update project templates icons.

  • Update GTK+2 and GTK+3 template project icons.

SELF-TESTER

  • Add integer overflow tests

  • Add test for System.IgnoreOverflow.

  • Update Italian translation.

  • Update Spanish translation by Martin Belmonte using Crustacea translator.

  • Update project icon.

  • Force the use of gcc. Apparently there is a bug in clang optimizer that generates incorrect code.

GB.ARGS

  • Update Dutch translation.

  • Update Italian translation.

  • The default value of Args.Get() is now printed in the default help text.

GB.COMPRESS

  • Clean-up the code: spaces, indentation...

  • Compress: Add a static array read accessor to return a new Compress object of a specific type.

  • Uncompress: Add a static array read accessor to return a new Uncompress object of a specific type.

  • Fix some typos.

GB.DB

  • Connection: The FullVersion property now return the full version string of the database server.

  • Connection: Create() now takes an optional Return boolean argument to tell if the Result.Update() method will fill the Result with the contents of the newly inserted record. It is based on the optional INSERT INTO ... RETURNING SQL feature.

  • Connection: ApplyTemplate() correctly removes the temporary tables created by the updating process.

  • Database drivers now must provide the full version string of they database server they connect to.

  • Database drivers can tell if they do not support the RETURNING keyword.

  • SQLRequest now can return part of SQL requests without action or table.

  • Connection.Create() now takes an extra optional boolean argument that tells not to raise an error if the newly created record already exists, i.e. if there is no conflict when inserting the new record in the database.

GB.DB.FORM

DataBrowser

  • Add Find() and FindNext() method from DataView.

  • When a new record is created, move the view to the newly created record.

DataSource

  • Invalid is a new event that is raised when the value entered for a specific field is invalid. If that event is stopped, the default warning message is not displayed.

  • Find() and FindNext() methods now correctly detect the current connection.

  • When a new record is created, move the index to the newly created record.

  • When a new record is created, moving the index to the newly created record works when some fields are serial.

  • Find() method now takes the ascending / descending sort order into account.

  • Fix Find() method on PostgreSQL, that requires sub-query aliases even if the alias is not needed!

  • Undone the old optimization from 2011 that prevent controls to be refreshed when the Connection property changes.

DataTable

  • Write the SQL request of the Find() method is a way that is compatible with MySQL.

DataView

  • Find() searches the entire view, whereas the new FindNext() searches from the current index.

  • Selecting a combo on a cell of the new record line does not refresh the DataSource controls incorrectly.

  • MoveNext() has no effect if we are in creation mode.

  • MovePrevious() moves to the last record if we are in creation mode.

  • The MoveTo() method raises the Activate event when it was in creation mode before moving.

  • Correctly unselect all lines when we are in creation mode and the view is not editable.

Miscellaneous

  • Update Dutch translation.

  • Update documentation.

  • Update project icon.

GB.DB.MYSQL

  • Tells if RETURNING keyword is implemented.

  • Support for new Connection.FullVersion property.

  • MySQL 8.0.34 does not support automatic reconnection anymore.

  • Support for ignoring conflicts when inserting a new record.

GB.DB.ODBC

  • Tells if RETURNING keyword is implemented.

  • Support for new Connection.FullVersion property.

GB.DB.POSTGRESQL

  • Tells if RETURNING keyword is implemented.

  • Support for new Connection.FullVersion property.

  • Support for ignoring conflicts when inserting a new record.

  • The default collation is now returned as the void collation.

GB.DB.SQLITE2

  • Tells if RETURNING keyword is implemented.

  • Support for new Connection.FullVersion property.

GB.DB.SQLITE3

  • Tells if RETURNING keyword is implemented.

  • Support for new Connection.FullVersion property.

  • Correctly tell if RETURNING keyword is implemented.

  • Support for ignoring conflicts when inserting a new record.

GB.DBUS

  • DBus: MachineId is a new property that returns the DBus machine identifier.

  • DBusConnection: Exist() acts on the current bus as expected.

  • DBusConnection: Add a Start() method that starts a DBus service by name, and waits until it is available.

  • DBusConnection: Exist() and Start() methods now use the /org/freedesktop/DBus object path, because DBus on Fedora does not use the / object path.

  • DBusProxy: Correctly manage DBus names being case sensitive whereas Gambas symbols are not.

  • DBusSession: Exist() is a new method that returns if a specific name is available on the bus.

  • DBusSignal: The constructor takes more optional arguments. Backward-compatibility is ensured.

  • Fix a possible memory leak in DBus introspection.

  • DBusObject: Implement the GetMachineId() DBus method.

  • DBusFile is a new class that implements the h DBus datatype that encapsulates a file descriptor.

  • Support for file descriptor h DBus datatype.

  • Try to fix DBusFile class with no success at the moment.

  • Update documentation.

  • Update project icon.

GB.DBUS.TRAYICON

  • Raise the LayoutUpdated D-Bus signal when the current desktop is Mate.

  • Raise the Menu event when the PopupMenu property is not set and the right button may have been clicked.

GB.DEBUG

  • Fix quoting when displaying a string value.

  • Make the debugger more robust when writing on a fifo fails. Reopen the fifo if needed.

  • Sending a void line to the debugger repeats the last command only if the debugger is run from the command line.

  • If the GB_DEBUG_DEBUG environment variable is 1, then a message is printed each time the debugger fifo fails and must be reopened.

  • Put the project name inside the profile file.

GB.DESKTOP

  • Support for freedesktop portal.

  • Desktop: UsePortal is the new property that tells if the desktop portal can be used or not. If not, xdg-utils scripts are used instead.

  • Desktop: PickColor() is a new method that pick a color on the screen using the freedesktop portal.

  • Desktop: Screenshot() now uses the freedesktop portal if we are not using X11. Not fully useful, are there is no option for not capturing the mouse cursor!

  • Desktop: Open() now uses the freedesktop portal if available.

  • Desktop: SendMail() now uses the freedesktop portal if available. Apparently attachments are not taken into account by Thunderbird through the portal.

  • DesktopFile: _Data is a new hidden property that returns the collection used by DesktopFile internally.

  • DesktopFile: Add DesktopActions property and _DesktopFile_Actions class to manage actions.

  • Update xdg-utils to the current master.

  • Remove some unused variables.

GB.DESKTOP.X11

  • New project icon.

GB.DRAW

  • Support for Style.Default constant.

GB.EVAL

  • Highlight: LengthBefore is a new property that returns the number of analyzed characters before the possible rewrite.

  • Highlight: IsFunction is a new property that returns if Highlight.Analyze() got a function declaration.

  • Highlight: Analyze() got a new optional boolean parameter that stops the analyze when the "%>" token is encountered.

  • Correctly rewrite lines using the ERROR keyword in a one-line IF expression.

  • Eval() now can evaluate several expressions at once, provided that they are separated by newlines. The value of the last expression is returned.

  • Eval() now returns NULL if its last expression returns nothing.

GB.EVAL.HIGHLIGHT

  • The component is now deprecated.

  • TextHighlighter: The Tag property is actually a Short.

  • TextHighlighter: Fix possible overflows.

  • TextHighlighter: The State property is now a Short too.

  • Add accent-color CSS property.

  • Move old code to project files.

  • Fix unit tests.

  • TextHighlighter.ToHTML() correctly handles multiple lines again.

  • TextHighlighter.ToHTML() does not emit a void line at the beginning anymore.

  • Update Dutch translation.

  • Correctly position pointer after finding escaped quote and escaped single quote in sh highlighting.

  • Raise an error early if we try to load gb.eval.highlight when gb.highlight is loaded.

GB.FORM

ButtonBox

  • Add FilterPicture property, that allows to change the picture displayed by the filter button.

ColorChooser

  • Use the new Desktop.PickColor() function to pick a color.

  • Picking a color on the screen now raises the Activate event.

ColorPaletter

  • Add a Size property that defines the size of a color button.

  • Color buttons layout can be vertical or horizontal, on multiple lines or columns.

  • Fix detection of color button under the cursor.

Completion

  • Add support for TextEditor.

DirChooser

  • Setting the Root property works again as before.

FileChooser

  • Use the new FileView View event to correctly synchronize the view button states.

  • Setting the Root property works again as before.

FileView

  • Do not disable the file watch when the control is hidden, but when the control is detached from its parent.

  • Contents refresh is now always forced when neeeded.

  • Do not crash if a file has disappeared when reloading the view.

  • Prevent a possible infinite refresh and preview recursion when some properties are read during the Refresh event.

  • Draw the preview icon overlay on the bottom.

  • Read the output of the preview task more reliably.

  • ShowDetailed is now deprecated.

  • Setting ShowDetailed to TRUE has now the same effect as setting View to Detailed.

  • New View event that is raised when the View property has changed.

IconPanel

  • Display the titles using the same look as TabPanel.

ImageView

  • The mouse wheel zooms the image if the UseMouse property is set.

  • Take Application.Shadows into account.

  • The default mouse wheel management uses integer scales for zooms greater or equal than 200%.

MenuButton

  • Call the event loop before opening the popup menu, otherwise it may pops up at the wrong place on Wayland.

  • If the button has just a picture, then center it.

  • Use the new Menu.Popup() extra arguments to ensure that the popup menu is correctly positioned on Wayland.

SidePanel

  • Prevent the panel size from being lower than the minimum size after being hidden.

Stock

  • GetFlags() is a new method that returns a stock flag from its key.

  • Flags is a new property that returns the list of all available stock flags.

  • Fix support for KDE desktop.

  • Search new KDE5 configuration files before the old ones.

SwitchButton

  • Change the way it is drawn, so that it's a bit more "readable".

  • Little enhancements in the drawing routine.

  • Smaller button and better use of system colors.

TabPanel

  • New look.

  • The little arrow buttons now scroll the tab bar contents.

  • Fix tab buttons layout and right-to-left behaviour.

ValueBox

  • Add Unselect() method to unselect the selected text.

Miscellaneous

  • Update Dutch translation.

  • Update Italian translation.

  • Add documentation.

  • Add many stock icons, and redraw many others.

  • Update stock icons map.

  • Desktop directory icons initialisation does not crash anymore if a specific desktop directory does not exist.

  • Fix runtime deprecation messages.

  • Correctly detect the icon theme on Ubuntu desktop.

GB.FORM.DIALOG

  • Update Dutch translation.

GB.FORM.EDITOR

  • Use the new gb.highlight component instead of gb.eval.highlight.

  • TextEditor: Add documentation.

  • TextEditor: The highlight state can be a Short.

  • TextEditor: Fix the documentation of FindNextString() and FindPreviousString() methods.

  • TextEditor: Do not highlight matching braces if some text is selected.

  • TextEditor: Highlight text between matching braces instead of just highlighting the braces.

  • TextEditor: Try to make automatic string closing more clever.

  • TextEditor: Triple click now selects the entire line.

  • TextEditor: Diacritics are not word limiters anymore.

  • TextEditor: Word selection now always stops at non words limits.

  • TextEditor: Correctly handle quotes at the beginning of the line without crashing.

  • TextEditor: PageUp and PageDown now move the same number of lines.

  • TextEditor: Keywords property works again.

  • TextEditor: Highlight background of included highlighters the same way as gb.highlight, with colors.

  • TextEditor: Draw folding signs a bit smaller.

  • TextEditor: First line can be folded again.

  • TextEditor: Do not draw bottom limit of cursor highlight on the last line.

  • TextEditor: Do not draw top limit of cursor highlight on the first line.

  • TextEditor: GetHighlight() now can return the nested highlighting index of each token.

  • TextEditor: Clear() method and Text property now correctly reset all editor views.

  • TextEditor: Rewrite is a new property that allows the highlighting to rewrite the editor contents. It's TRUE by default.

  • TextEditor: TextEditor[].Purge() now highlights up to the requested line before returning its contents.

  • TextEditor: Fix KeyPress event triggering twice by always using Stop Event

  • TextEditor: In WebPage mode, typing "<%" automatically inserts "%>" now.

  • TextEditor: Display shadows on margin too.

  • Update Italian translation.

  • Update Dutch translation.

GB.FORM.HTMLVIEW

  • Update to litehtml 0.9.

  • Component is marked stable now.

  • Update broken image icon.

  • Update master.css.

GB.FORM.MDI

  • Toolbar: Prevent resize infinite recursion.

  • Toolbar: Correctly position separator when the toolbar size changes.

  • Toolbar: ReadOnly is a new property. When set, you can't configure the toolbar contents, but only the icon size. The Key property must be set anyway.

  • Toolbar: DefaultSize is a new static property that allows to define the default size of all toolbars.

  • Toolbar: Do not disable the toolbar icons container when setting the layout, it breaks toolbars that are globally disabled.

  • Toolbar: The default value of the Size property is void, meaning that the default toolbar size is used.

  • Update control icons.

  • Update Dutch translation.

  • Update Italian translation.

GB.FORM.PRINT

  • Update Dutch translation.

GB.FORM.STOCK

  • Redraw and add many icons.

  • Add gambas-thin icon theme.

  • Add 256 pixels square icons of all country flags.

  • Generate more icon sizes for Gambas icon themes.

GB.FORM.TERMINAL

  • TerminalView: Characters attributes are correctly kept when the screen size changes.

  • TerminalView: e[21m does not unset bold attribute, but e[22m unsets both bold and dim attributes.

  • TerminalView: Fix bracketed paste.

  • TerminalView: Fix text paste.

  • Update Dutch translation.

GB.GTK

  • DrawingArea: NoMouse is a new property that makes the control transparent to mouse events.

  • Image: Save() quality argument is correctly taken into account with png format, the same way as in Qt.

  • Image: ToString() is a new method that saves an image into a string.

  • Menu: Setting the Radio or the Toggle property now correctly keep the Enabled state.

  • Menu: Popup() method takes a new optional argument that allows to specify the control that opens the menu. It ensures that the menu is at the right place on Wayland.

  • Picture: ToString() is a new method that saves a picture into a string.

  • Style: Add Default constant. It tells the Style routine to use the current painted control (if it exists) as a context.

  • TextArea: Mouse grab on click is not disabled anymore.

  • TextArea: Setting the Line or Column property when there is no text does not crash anymore.

  • UserContainer: Now it can declare the same special event handlers as UserControl.

  • UserControl: Special event handlers can be declared indepently. Declaring UserControl_Draw is not required anymore.

  • Window: Geometry is a new property that returns the last geometry of the window in normal state.

  • Let pango take the target device resolution into account when drawing text.

  • Do not mix arrangement flags and user control flag in the Container implementation.

  • The Drop property of editing controls (TextBox, TextArea...) is now TRUE by default.

  • Remove the undocumented Container.Dirty property.

  • Fix automatic arrangement of top-level windows with menus.

  • Correctly enable shortcuts before opening a popup menu, and disable them after closing it.

  • Fix a possible crash when creating a new TextArea control.

  • Workaround deprecation of pango_find_base_dir API.

  • Don't use pango_find_base_dir() replacement if the function is not deprecated.

  • Lower the version requirement on libfribidi.

  • Fix drag & drop when dropping from another application.

  • Fix drag and drop of non standard text format.

  • Do not raise events when a control is locked.

  • Prevent a disabled timer from sometimes raising its event.

  • Support for getting the handle of a Wayland window correctly.

  • Support for getting wayland display and surface pointers.

  • Fix compilation on glib older than 2.74.

  • Define the window default icon from the application icon.

  • Fix standard dialog default titles.

  • Fix mouse cursor management.

GB.GTK3

DrawingArea

  • NoMouse is a new property that makes the control transparent to mouse events.

Button

  • Fix foreground color management.

Container

  • Remove the undocumented Container.Dirty property.

Control

  • Do not raise events when a control is locked.

Image

  • Save() quality argument is correctly taken into account with png format, the same way as in Qt.

  • ToString() is a new method that saves an image into a string.

Menu

  • Setting the Radio or the Toggle property now correctly keep the Enabled state.

  • Popup() method takes a new optional argument that allows to specify the control that opens the menu. It ensures that the menu is at the right place on Wayland.

Panel

  • Panel now always has its own window, otherwise its children controls will eat events if they overlap other controls anywhere.

Picture

  • ToString() is a new method that saves a picture into a string.

ScrollBar

  • Fix background color management.

Slider

  • Fix background color management.

Style

  • Painting the backgroud correctly takes the background color into account, unless for active state (i.e. pressed buttons).

  • Add Default constant. It tells the Style routine to use the current painted control (if it exists) as a context.

TextArea

  • Mouse grab on click is not disabled anymore.

  • Setting the Line or Column property when there is no text does not crash anymore.

  • Fix a possible crash when creating a new TextArea control.

Timer

  • Prevent a disabled timer from sometimes raising its event.

UserContainer

  • Now it can declare the same special event handlers as UserControl.

UserControl

  • Special event handlers can be declared indepently. Declaring UserControl_Draw is not required anymore.

Window

  • Geometry is a new property that returns the last geometry of the window in normal state.

  • Fix automatic arrangement of top-level windows with menus.

  • Define the window default icon from the application icon.

  • Use gb.gui.base utility method to initialize the application id associated with each window on Wayland.

Miscellaneous

  • Let pango take the target device resolution into account when drawing text.

  • Do not mix arrangement flags and user control flag in the Container implementation.

  • The Drop property of editing controls (TextBox, TextArea...) is now TRUE by default.

  • Correctly enable shortcuts before opening a popup menu, and disable them after closing it.

  • Workaround deprecation of pango_find_base_dir API.

  • Don't use pango_find_base_dir() replacement if the function is not deprecated.

  • Lower the version requirement on libfribidi.

  • Fix drag & drop when dropping from another application.

  • Fix drag and drop of non standard text format.

  • Support for getting the handle of a Wayland window correctly.

  • Support for getting Wayland display and surface pointers.

  • Fix compilation on glib older than 2.74.

  • Fix standard dialog default titles.

  • Fix mouse cursor management.

GB.GTK3.WEBVIEW

  • WebView: Raise signals correctly, in order, without duplicates.

  • WebView: Fix some use of deprecated API.

  • WebView: Scrollbars came back thanks to a user style sheet. No idea why they are not visible anymore by default.

  • Automatically destroy the hsts cache directory at component unload.

GB.GUI.BASE

Application

  • Icon is a new property that returns the application icon as defined in the project properties.

ColumnView

  • Extra columns are automatically resized too when AutoResize is True.

ComboBox

  • The Selection property now works correctly.

  • The popup now uses the same font as the ComboBox.

  • Mouse wheel events are take into account only in read-only mode.

  • Mouse wheel events can be intercepted and stopped now.

  • Make the Gridview used in the popup not resizable.

  • Changing the combo-box contents while the popup is opened now correctly updates the popup and should not crash anymore.

  • Fix mouse wheel and keyboard management when the ComboBox is editable.

Desktop

  • Type property always use Env if it is set, when Env is not set.

  • Type does not crash anymore if XDG_CURRENT_DESKTOP is not defined.

  • Is() method now checks the provided type with a X- prefix added too.

Drag

  • Support for URI list now uses the Url() and FromUrl() interpreter functions.

  • Temporary hack that correctly raises DragMove events in all cases when the mouse cursor is on the DnD frame.

GridView

  • Take Columns.Padding property into account when computing the preferred width of a column.

  • Add some documentation.

  • Fix right-to-left layout management and drawing.

  • Painting does not crash anymore when there is no column or no row.

  • Hidden rows are always returned as not selected.

  • Ignore hidden cells when moving the cursor by using the keyboard.

  • Hidden cells are ignored by EnsureVisible() method.

  • Handle the Highlight property at the GridView level.

  • Lighter row highlighting.

  • GridView[] has a new Visible read-only property that returns if a cell is visible.

  • Using up and down arrow keys now ensure that the cursor is on a visible cell before trying to move.

ListBox

  • Handle key press events for finding items, like ComboBox.

  • Add Highlight property to highlight the listbox entry under the mouse cursor.

Picture

  • Add support for flag:/ stock flags paths.

ScrollArea

  • Implement the Border property with the new UserContainer_Draw special event handler, so that DnD is not broken on GTK+2.

  • Adapt mouse wheel scrolling to client size.

  • Draw better shadows.

  • Shadows are directly painted without creating widgets, so that the area contents can catch mouse events correctly on the shadows. But ScrollView still use widgets to draw the shadows, so that they are always on top of the children of the ScrollView.

ScrollView

  • ScrollTo() is a new method that ensures a specific child is visible, and that works even if the ScrollView contents is not yet arranged.

  • Fix automatic resize according to contents.

  • Use the new DrawingArea.NoMouse property to make the shadows transparent to mouse events.

SpinBox

  • Support for right-to-left written languages.

  • Fix behaviour when ShowSign or ShowZero property is set.

  • Keep the normal background when setting ReadOnly property to TRUE.

  • Fix the behaviour when ReadOnly is True.

TreeView

  • Make the Item property always available during the Click event handler.

  • Don't check item spans until the item Span property is used.

  • Remove the debugging red rectangle drawn when ShowCheck property is TRUE.

  • Expanding an item with the mouse ensures that the expanded contents is visible. Setting the Expanded property manually now does not ensure that anymore.

  • Filter() is a new method that must be called each time the filtering state changes.

  • Filter is a new event that allows to filter the view.

  • Items got a Visible property, that allows to hide it.

  • Item height computation is faster now.

  • Add ExpandAll() and CollapseAll() methods.

  • Add ExpandAll() and CollapseAll() methods to items.

  • Adding a new item now raises the Filter event on it.

  • Fix right-to-left language support.

  • Fix the rename control management, and so a possible infinite loop.

  • Add Highlight property to highlight the item under the mouse cursor.

Miscellaneous

  • Update Dutch translation.

  • Remove test forms that do not compile.

  • Update documentation.

  • Add an utility method that creates a temporary desktop file in ~/.local/share/applications/gambas so that wayland shell can display the application icon for each window.

GB.GUI.QT.EXT

  • New component switcher for choosing between QT4 or QT5 extension component.

GB.HASH

  • Add Hash.Crc32() method for fast checksum.

GB.HIGHLIGHT

  • New component that allows to define a syntax highlighting for a definition text file. It replaces gb.eval.highlight.

GB.IMAGE

  • Color: ToHTML() is a new method that converts a Gambas color as integer value to an HTML color representation.

  • Add an API that inverts an image for the gb.image.effect component.

GB.IMAGE.EFFECT

  • Make Image.Invert() compatible with the method with the same name in gb.image.

GB.JIT

  • Fix arithmetic overflow detection on datatype conversion.

  • Fix JIT compilation on old compilers that do not support arithmetic overflow check.

  • Optimize conversions from Pointer datatype.

  • Correctly translate On ... Goto / Gosub jumping backward.

  • Support for new bytecodes.

  • Support for computed Goto or GoSub.

  • Optimize the Asc() function.

  • Update project icon.

  • Generate code that clang can compile.

GB.MAP

  • _MapShape: Take the inner polygons into account when drawing

  • Map: Do not allow to set a null MapPoint to the Center property.

  • Add new functions to MapPoint class to get MapPoint from text representation and get string from mappoint.

  • _MapTile: Fix bad file naming for tiles (curious artifact on httpClient.Tag).

  • Add MapPoint.SwapAll() to swap the values Lat/Lon of an array of MapPoints

  • MapPoint: Add ArrayFromString and ArrayTo String to convert MapPoint From/Into string using the Lat,Lonn format.

  • Add Geo.TransformMPArray Allow to speed Up the coord transformation by working by batch.

GB.MARKDOWN

  • Replace </hr> by <hr>.

  • Use <p> alone with </p>, so that no forbidden markup is emitted between them.

  • Fix titles between .

  • Do not start table cells with <p></p>.

  • Update tests.

  • Use gb.highlight instead of the deprecated gb.eval.highlight.

GB.MEDIA

MediaContainer

  • Store the list of children so that they are correctly released.

MediaControl

  • LinkLaterTo() method should now be reliable when called multiple times.

  • Handle is a new property that returns the internal GStreamer element pointer.

  • Child controls are now automatically referenced by their parent, so that you only have to keep a reference on top-level controls.

  • Setting enumeration properties of MediaControl works correctly now.

  • Fix behavior of SetWindow() method.

  • Support for waylandsink that needs a context to get the wayland display.

  • When trying to create a MediaControl of unknown type, raise an explicit error message.

MediaMessage

  • Take void messages into account.

MediaPipeline

  • Progress is a new property that returns the stream buffering progression, between 0 and 1.

  • Fix how duration is retrieved. Now the duration is actually available when the Duration event is raised.

  • Start to manage the pipeline like gst-launch tool.

  • Don't stop pipeline when it is already stopped, especially when freeing the object.

MediaType

  • A new class that describes a specific GStreamer plugin.

Media

  • Media[] now returns a MediaType object describing a specific GStreamer plugin from its name.

  • Media.Types is a new property that returns a list of all GStreamer plugin names.

Miscellaneous

  • Disable GLib warnings so that GValueArray properties are correctly handled again.

  • Compile on non-C99 compilers.

GB.MEDIA.FORM

  • MediaView: Add State property.

  • MediaView: Internally use the Duration event to refresh the time panel when the duration is known.

  • MediaView: Use "xvimagesink" instead of "ximagesink". It preserves video aspect ratio.

  • MediaView: Draw the time bar better.

  • MediaView: Refresh the time bar each 50ms.

  • MediaView: Now works on wayland with Qt5 and GTK+3!

  • MediaView: Fix Border property.

  • MediaView: Pause the video before stopping it, because directly stopping it may take a lot of time.

  • MediaView: Display when stream buffering is in progress.

  • MediaView: Visualisation is a new property that allows to define the audio visualisation plugin used by the player.

  • Update documentation.

  • Display messages returned by GStreamer when playing or stopping a stream fails.

  • Wayland support.

  • Fix test video.

GB.MIME

  • MimeMessage: Use a different API for retrieving the message sender.

  • MimeMessage: The Sender property does not crash anymore when the sender is void.

GB.NET

  • Move the control icons from the IDE.

  • Update control icons.

  • Store errno in the sockets to have a more detailed error message from StatusText property.

  • Add StatusText property to socket classes.

GB.NET.CURL

  • DictClient: New virtual control for supporting the dict:// protocol.

  • DownloadManager: Follow HTTP redirections automatically.

  • FtpClient: Correctly initialize curl options before reusing a connection.

  • Correctly check if user or password changes.

  • Do not always clear the libcurl handle, reuse it as much as possible.

  • Update control icons.

GB.NET.POP3

  • Update Dutch translation.

GB.NET.SMTP

  • Update control icons.

GB.OPENSSL

  • Better error messages.

  • Fix some incorrect use of Gambas strings.

GB.PCRE

  • RegExp.FindAll() is a new static method that return a string array of all substrings matching a pattern.

  • Fix the crash of Regexp.Replace() when pcre2 library is used.

  • RegExp[].Length is a new property that returns the length of a submatch.

GB.PDF

  • Remove upper bound on poppler version for gb.pdf.

GB.POPPLER

  • Don't take into account the page orientation. It's indicative, it's not something to apply.

  • Use the poppler glib API to get the size of the page to render. The poppler C++ API does not always return the expected value.

  • PdfPage[].Thumbnail property has been implemented.

  • Page width and height properties now take the document resolution into account.

GB.REPORT2

  • ReportBrush: _ImageDir hidden property must be public.

GB.QT4

  • DrawingArea: NoMouse is a new property that makes the control transparent to mouse events.

  • Image: ToString() is a new method that saves an image into a string.

  • Menu: Setting the Picture property of a top-level menu has no effect anymore.

  • Menu: Popup() method takes a new optional argument that allows to specify the control that opens the menu. It ensures that the menu is at the right place on Wayland.

  • Picture: ToString() is a new method that saves a picture into a string.

  • Style: Add Default constant. It tells the Style routine to use the current painted control (if it exists) as a context.

  • UserContainer: Now it can declare the same special event handlers as UserControl.

  • UserControl: Special event handlers can be declared indepently. Declaring UserControl_Draw is not required anymore.

  • UserControl: Fix a possible crash when calling the UserControl_Font handler.

  • Window: Geometry is a new property that returns the last geometry of the window in normal state.

  • Popup windows are now correctly parented, so that imbricated popups do not close all at once on mouse button press.

  • Check that we are a UserControl when calling its special event handlers, because the MyContainer class is also used by the Form container.

  • Do not mix arrangement flags and user control flag in the Container implementation.

  • The Drop property of editing controls (TextBox, TextArea...) is now TRUE by default.

  • Remove the undocumented Container.Dirty property.

  • Correctly enable shortcuts before opening a popup menu, and disable them after closing it.

  • Style.StateOf() always adds the Style.Default constant.

  • Resizing a window by code correctly raises the Resize event again.

  • Fix management of resizable popup windows.

  • Support for high precision mouse wheels.

  • Don't try to arrange a window being deleted.

  • When showing an utility window, use the current active window as parent if possible.

  • Support for getting the handle of a Wayland window correctly.

  • Support for getting wayland display and surface pointers.

  • Remove useless QT5 specific code from main.cpp, as gb.qt5 has its own main.cpp file.

  • Define the window default icon from the application icon.

  • Utility windows are now always made child of the current active window when shown, to fix their behavior on Wayland.

GB.QT4.WEBKIT

  • Fix deprecated declaration.

  • Declare that webview and webkit components are not compatible.

GB.QT4.WEBVIEW

  • Declare that webview and webkit components are not compatible.

GB.QT5

Clipboard

  • Workaround a clipboard QT bug on Wayland when pasting images, by using the image/png mime type.

Container

  • Remove the undocumented Container.Dirty property.

  • Do not mix arrangement flags and user control flag in the Container implementation.

Control

  • ScreenX and ScreenY now take the window frame into account on Wayland.

DrawingArea

  • NoMouse is a new property that makes the control transparent to mouse events.

Image

  • ToString() is a new method that saves an image into a string.

Menu

  • Setting the Picture property of a top-level menu has no effect anymore.

  • Popup() method takes a new optional argument that allows to specify the control that opens the menu. It ensures that the menu is at the right place on Wayland.

Picture

  • ToString() is a new method that saves a picture into a string.

Style

  • Add Default constant. It tells the Style routine to use the current painted control (if it exists) as a context.

  • Style.StateOf() always adds the Style.Default constant.

UserContainer

  • Now it can declare the same special event handlers as UserControl.

UserControl

  • Special event handlers can be declared indepently. Declaring UserControl_Draw is not required anymore.

  • Fix a possible crash when calling the UserControl_Font handler.

  • Check that we are a UserControl when calling its special event handlers, because the MyContainer class is also used by the Form container.

Window

  • Geometry is a new property that returns the last geometry of the window in normal state.

  • Resizing a window by code correctly raises the Resize event again.

  • Define the window default icon from the application icon.

  • Utility windows are now always made child of the current active window when shown, to fix their behavior on Wayland.

  • Don't try to arrange a window being deleted.

  • Use gb.gui.base utility method to initialize the application id associated with each window on wayland.

  • Popup windows are now correctly parented, so that imbricated popups do not close all at once on mouse button press.

  • Fix management of resizable popup windows.

  • When showing an utility window, use the current active window as parent if possible.

Miscellaneous

  • The Drop property of editing controls (TextBox, TextArea...) is now TRUE by default.

  • Correctly enable shortcuts before opening a popup menu, and disable them after closing it.

  • Support for high precision mouse wheels.

  • Support for getting the handle of a Wayland window correctly.

  • Support for getting Wayland display and surface pointers.

GB.QT5.WAYLAND

  • More hack to compile everywhere.

  • Rewrite warning messages.

GB.QT5.WEBKIT

  • Fix deprecated declaration.

  • Declare that webview and webkit components are not compatible.

GB.QT5.WEBVIEW

  • Declare that webview and webkit components are not compatible.

GB.REPORT

  • Update Dutch translation.

GB.REPORT2

  • FPreview: Really restore the duplex mode from settings.

  • Update Dutch translation.

GB.SDL2

  • Mouse.RelX and Mouse.RelY are two new properties that return how much the mouse cursor has moved.

GB.SETTINGS

  • Settings: Reading string values is faster now.

GB.TERM.FORM

  • Update Dutch translator e-mail.

  • Update Dutch translation.

GB.UTIL

  • Language: Country is a new property that returns the country code associated with the language. Use it as a name for the stock flag icons.

  • Shell.RmDir: Make it more reliable.

  • Shell.RmDir: Do not raise an error if the directory does not exist (like "rm -rf").

  • Update Italian translation.

  • Update Dutch translation.

  • Update documentation.

GB.WEB

  • WebPage: Add an optional Args collection argument to the Render method.

  • Content-Disposition HTTP header is not case sensitive.

  • Response.Cookie returns a virtual object that allows to define the cookie properties.

  • Response.SetCookie() takes the Response.Cookie properties into account when a corresponding argument is missing.

  • Request.Scheme supports more CGI headers.

  • CGI.Error() now displays a nice error 500 page. :-)

  • Fix Application.Host and Application.Port. The port is not stored in CGI, but in the port part of CGI.

  • Update documentation.

  • Request.Files got support for multiple files input fields.

GB.WEB.FEED

  • Update Dutch translator e-mail.

  • Update project icon.

GB.WEB.FORM

  • Update Dutch translator e-mail.

GB.WEB.GUI

Application

  • Application.Theme is a new property that allows to define the stock icon theme used by the application.

WebComboBox

  • Read-only combo-box now correctly takes the background-color into account.

  • In read-only mode, ensure that no item is selected if the Index property is negative.

  • Allow refresh for hidden controls, as their HTML is now always generated.

WebContainer

  • If the _Container internal property is used, then we suppose that only one child is visible at the same time.

WebControl

  • KeyPress event handler is now correctly activated client side when a form is refreshed or displayed the first time.

  • Control refresh done by javascript is now correctly cancelled when the Refresh() method is called.

  • All disabled controls are rendered gray out now.

  • Calling Object.Attach() on a control now triggers an automatic refresh.

WebDrawingArea

  • Fix Refresh() method.

WebMenu

  • Enabled property is taken into account.

  • The menu bar is now implemented with a row arrangement, so that menu entries are still visible when the browser page shrinks horizontally.

WebRadioButton

  • Setting the Value property before the parent form is visible works correctly now.

WebTabPanel

  • Fix container management.

WebTable

  • Fix a javascript error when using single mode and radio buttons.

  • Use white text for the index column of selected rows.

  • The background color of a selected row now overrides the background color of its cells.

Miscellaneous

  • Update Italian translation.

  • Support for flag stock icons.

  • Do not export test forms.

  • Allow external links to images (http:// or https://).

  • Update Dutch translation.

  • Redraw control icons.

  • Don't suppose that the smaller version of a stock icon exists.

  • Make text fields inherit their background color for their ancestors.

  • Custom startup class is now taken into account.

  • Update documentation and icons.

  • Component is marked stable now.

  • Update broken image icon.