Gambas Documentation
Application Repository
Code Snippets
Compilation & Installation from source code
Components
Controls pictures
Deprecated components
Developer Documentation
Development Environment Documentation
Documents
About The Best Formula In The World
Architecture details
Benchmarks
Books
By Reference Argument Passing
Compatibility between versions
Creating And Using Libraries
Database Datatype Mapping
Database Request Quoting
Date & time management
Dates and calendars
DBus and Gambas
Differences Between Shell And Exec
Differences From Visual Basic
Distributions & Operating Systems
Drag & Drop
DrawingArea Internal Behaviour
External functions datatype mapping
Frequently Asked Questions
Gambas Farm Server Protocol
Gambas Mailing List Netiquette
Gambas Markdown Syntax
Gambas Naming Conventions
Gambas Object Model
Gambas Scripting
Gambas Server Pages
Gambas Unit Testing
Gambas Wiki Markup Syntax
Getting Started With Gambas
Hall Of Fame
Housekeeping, cleaning up
Image Management In Gambas
Including Help Comments in Source Code
Installation from binary packages
Interpreter limits
Introduction
Just In Time Compiler
Just In Time Compiler (old version)
License
Localisation and Internationalization
Mailing Lists & Forums
Naming Conventions
Network Programming
ODBC Component Documentation
PCRE Pattern Syntax
Porting from Gambas 2 to Gambas 3
Previous News
Project Directory Structure
Release Notes
Gambas 2.23.0
Gambas 2.23.1
Gambas 2.24.0
Gambas 3.0.0
Gambas 3.1.0
Gambas 3.1.1
Gambas 3.2.0
Gambas 3.2.1
Gambas 3.3.0
Gambas 3.3.1
Gambas 3.3.2
Gambas 3.3.3
Gambas 3.3.4
Gambas 3.4.0
Gambas 3.4.1
Gambas 3.4.2
Gambas 3.5.0
Gambas 3.5.1
Gambas 3.5.2
Gambas 3.5.3
Gambas 3.5.4
Gambas 3.6.0
Gambas 3.6.1
Gambas 3.6.2
Gambas 3.7.0
Gambas 3.7.1
Gambas 3.8.0
Gambas 3.8.1
Gambas 3.8.2
Gambas 3.8.3
Gambas 3.8.4
Gambas 3.9.0
Gambas 3.9.1
Gambas 3.9.2
Gambas 3.10.0
Gambas 3.11.0
Gambas 3.11.1
Gambas 3.11.2
Gambas 3.11.3
Gambas 3.11.4
Gambas 3.12.0
Gambas 3.12.1
Gambas 3.12.2
Gambas 3.13.0
Gambas 3.14.0
Gambas 3.14.1
Gambas 3.14.2
Gambas 3.14.3
Gambas 3.15.0
Gambas 3.15.1
Gambas 3.15.2
Gambas 3.16.0
Gambas 3.16.1
Gambas 3.16.2
Gambas 3.16.3
Gambas 3.17.0
Gambas 3.17.1
Gambas 3.17.2
Gambas 3.17.3
Gambas 3.18.0
Gambas 3.18.1
Gambas 3.18.2
Gambas 3.18.3
Gambas 3.18.4
Gambas 3.19.0
Gambas 3.19.1
Gambas 3.19.2
Gambas 3.19.3
Gambas 3.19.4
Gambas 3.19.5
Gambas 3.19.6
Gambas 3.20.0
Gambas 3 RC1
Gambas 3 RC2
Gambas 3 RC3
Gambas 3 RC4
Gambas 3 RC5
Gambas 3 RC6
Gambas 3 RC7
Reporting a problem, a bug or a crash
Rich Text Syntax
Screenshots
Text highlighting definition file syntax
The Program has stopped unexpectedly by raising signal #11
Variable Naming Convention
WebPage Syntax
Web site home page
What Is Gambas?
Window & Form Management
Window Activation & Deactivation
Window Life Cycle
XML APIs
Error Messages
Gambas Playground
How To's
Language Index
Language Overviews
Last Changes
Lexicon
README
Search the wiki
To Do
Topics
Tutorials
Wiki License
Wiki Manual

Gambas 3.20.0

What's new?

Among the hundreds of fixes and enhancements, the main features of this release are the following:

In the development environment

  • Translation an version control dialogs were replaced by workspaces.

  • Every calls of a specific function or symbol can be retrieved in one click.

  • Debugging external running processes is far easier.

  • A complete redesign of the search that is a lot faster now.

Otherwise

  • New database components mostly written in Gambas that supersedes the old ones.

  • A new tool that generates packages configuration files automatically for the openSUSE build service.

  • A new GUI component gb.qt6 for Qt6.

  • A new component gb.mongodb for accessing MongoDB databases.

  • A new component gb.clipper2 that should replace gb.clipper.

  • The JIT compiler now implements a cache, so that compilation occurs only the first time your program runs.

Compilation and installation

Read the instructions there.

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

Enjoy it !

Changelog

CONFIGURATION

  • Update lunar compilation in .gitlab-ci.yml so that it compiles the new gb.qt6 component.

  • Move gb.util, gb.util.web and gb.db2 components into the new main/comp directory.

  • Make the Gambas compiler quiet when compilation succeeds.

  • Fix and update all man pages.

  • Don't override strcmp, strcasecmp, toupper and tolower when C++ compiler is used. It fails with C++ 20.

  • Replace my deprecated e-mail by the current one in the AUTHORS file.

  • Add Martin Belmonte to the list of translators.

  • Update project directory icons.

  • Update README file.

TEMPLATE

  • Fix configure.ac template.

DEVELOPMENT ENVIRONMENT

Automatic completion

  • Symbol icons are not lost anymore when the Picture cache is cleared.

CSV import

  • Better import preview.

  • Fix table list.

Code & text editor

  • Draw editor status for right to left written languages.

  • Use the new TextEditor.GetLocation() method to list all possible locations of an edited file.

  • Redesign the procedure list button and its popup.

  • Update the location combo popup height when its filter changes.

  • Display the color value under the cursor in the status bar.

  • Don't use the Limit line property when searching for the procedure including a specific line. It is actually an heavy process when a line has been modified.

  • Add a button that displays every line of code that calls the current function, or that uses the current global declaration if the cursor is not inside a function.

  • Prevent a possible recursion of HTML preview refresh.

  • Add highlighting for diff, highlight, sql and sh files.

  • Open shell scripts, Gambas scripts and HTML files without specific extension according to the beginning of the file.

  • Do not try to pretty print lines beginning with "#!" in Gambas code.

  • Fix detection of Gambas script files.

  • Use the new TextHighlighter.HasLimit property to know if the location combo must be visible or not.

Color chooser dialog

  • Fix margin when only a free color can be chosen.

Database editor

  • Little redesign of export dialog.

  • Fix refresh after CSV import.

  • Add a check box for allowing destination overwrite.

  • Copying tables now takes into account serial fields.

Debugger

  • Redesign of debug configuration dialog.

  • Restore initial opened windows when the debugger ends.

  • Don't close the current tab when the debugger ends, and set the focus on it.

  • Do not re-open files that were closed during the debugging session when the debugger ends.

  • Display contents tab by default on debugger expression windows.

  • Debugger expression windows work correctly again.

  • Remove ignore process count in external debugging mode, as now the first matching process reaching a breakpoint connects to the IDE.

  • Show breakpoint list while waiting for external debugged process.

  • Remove JIT temporary files when the debugged process is stopped.

  • Fix a possible crash when displaying a very long stack backtrace.

  • Fix breakpoint list refresh.

Farm server

  • Support for farm URL starting with https://.

  • Update software farm installer to use current flags to -f public-control -f public-module not the old -p and -m

File properties dialog

  • Add a property tab to the file information dialog for project folders that allows to choose an highlighting description file located in the configuration folder. All files located in that project folder will be highlighted with this highlighting description file.

  • Add "do not translate" and "compress in executable" properties.

  • Do not show the property tab for top-level project directories.

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.

  • Replace the information panel by the status bar.

  • Scrollbars are not transparent anymore.

  • The window titlebar now adapts to color changes.

  • Allows to apply properties of controls declared in the current component project if that component is actually used by the IDE.

  • An error occurring during load, save, copy or paste won't be able to disable children arrangement for the next saves anymore.

  • Automatic arrangement now works correctly on Splitter containers.

  • The property values displayed in the property sheet are now vertically centered.

  • Draw the selection with a filled transparent rectangle.

  • Do not apply a default arrangement on save when the arrangement of the container is None.

  • Fix automatic row and column arrangements.

  • Draw a specific control icon for vertical Splitters.

  • Prevent a normally impossible error when clicking on controls.

Help browser

  • Use a discrete pulsing progress bar instead of a big spinner.

  • Fix not translated pages layout in offline help.

  • Fix use of the english page when the translated page is not available in offline help.

  • Some offline help specific CSS fixes.

  • Fix help for project classes.

Image editor

  • Rearrange tools configuration.

  • Fix text alignment buttons.

  • Fix property sheet current control label.

  • Replace the information panel by the status bar.

  • Scrollbars are not transparent anymore.

  • Use small fonts in the property panel.

  • The default grid state is now the last grid state set.

  • Shapes are now stored in a SQLite3 database.

  • Add an handle to shear the selection.

  • Draw selection handles with a white border.

  • Add two handles to resize the selection vertically and horizontally.

  • Fix expand selection tool.

  • Clicking with the middle button on a pixel now stores its color inside the palette.

  • Change the icon of the button that clears the current selection.

  • The grid of a zoomed image is now 1 pixel wide.

  • Take the line join style into account when offsetting the selection.

  • Saving a part of the current selection works correctly now.

  • Selection offset now takes the line cap into account.

  • Selection offset now has an option to offset the outline only.

  • Little enhancements in magnet and selection drawing.

  • New button that smooths a selection with splines.

  • Do not take grid snap into account when searching for selection magnets.

Main window

  • Add "workspaces" for translation, version control, project browser and project terminal.

  • Fix a crash when there is no status bar to draw.

  • Make the bottom panel button bar smaller.

  • Remove the version control menu entries and buttons from the main window.

  • Correctly disable the project tree popup menu when it loses the focus.

  • Use the new Workspace Select event to refresh the tree when a tab button of the document workspace is clicked, even if it is the current one.

  • The form of a class or the class of a form is now opened next to it.

  • Defining the startup class now automatically inserts the Main function.

  • Global shortcuts do not trigger anymore when the focus is on a terminal.

  • Draw the IDE background image using the top left corner of the window as origin.

  • Do not animate the bottom panel when it expands or collapses.

  • Do not try to activate a form if it is not valid.

Make executable dialog

  • Display the command used for compiling the executable.

  • Remove the margins.

Menu editor

  • Make the toolbar read-only.

  • Workaround Qt6 behavior that seems to change the text of the menu event handler buttons to add shortcuts.

  • Hide properties that are not implemented by the GUI component.

Options dialog

  • Redesign of options dialog.

  • Add an option to enable the automatic revert of non-important files on project close.

  • Custom highlighters can be configured in the Themes panel.

  • Remove the translator engine option. Keep it in the translation editor only.

  • Display the file size inside the progress bar when downloading the documentation.

  • Saving the current layout configuration works now.

  • Reorganize some options.

Packager

  • AppImage packages can be signed with a GPG signature key.

  • Use thin icons for distributions.

  • Use the gnu stock icon for autotools packages.

  • Check for fakeroot tool when building an ArchLinux package.

  • Add inner /bin and /usr/bin to the inner PATH environment variable of AppImage executables.

  • Support for building AppImage with pacman. It works on Manjaro only if run as root, and the resulting AppImage may segfaults!

  • Do not distribute description files when making an automake package.

Profile editor

  • Keyboard allows to search for a function name if the left panel.

Project open dialog

  • Clip branch name when it is too long.

  • Make the "Open in another window" button more visible.

Project management

  • Add a configuration folder to projects.

  • Store folder properties inside the project configuration file.

  • Keep key case when reading an unknown option in the project configuration file.

  • Removing a file removes it from the list of files to be compressed and not to be translate.

  • Deleting a file correctly resets the "do not translate" flag.

  • If the file compression fails while making an executable, restore the uncompressed files correctly.

  • Do not generate description files when making an executable.

  • Source files or directory can now be excluded from the executable.

  • When saving the project configuration file, remove all possible references to project files that do not exist anymore.

  • Add a project compilation timestamp.

  • Update gitignore template so that the .desc project description directory is not put on version control.

  • Remove the associated file in .desc when removing a specific source file, or renaming it.

  • Remove .desc directory when cleaning up a project.

Project properties dialog

  • Fix statistics and add more statistics.

  • Ignore broken symbolic links when computing statistics.

  • Components can be marked as "manually loaded at runtime" by using the second check-box column.

  • Redesign of the project properties dialog.

Project tree

  • Specific highlighting can be applied to the contents of Data, Public and Project folders.

  • Add an emblem for folders or files having a specific highlighting.

  • Use an emblem for displaying compressed files.

  • Hide the profile folder when there is no profile file.

  • Clicking on the clear button when the filter is already void now triggers a project refresh.

  • Source files can be copied, pasted and duplicated now.

  • Items with children can be filtered too now.

Search panel

  • The search dialog is replaced by a top panel.

  • Prevent a possible crash when computing search result position.

  • Result now adapts correctly to dark themes.

  • Do not crash anymore when setting the highlighting of a search result.

  • Hitting CTRL+F several times when the focus is on the search field changes the search location.

  • SHIFT+ENTER searches backward.

  • Add support for CTRL+HOME and CTRL+END shortcuts when the search text box has the focus.

  • CTRL+R can be repeated like CTRL+F to change the search location.

  • Fix focus handling.

  • Fix the focus behavior. Only F3 and SHIFT+F3 gives the focus to the editor.

  • Do not highlight too long lines in the search result, it is slow.

Shortcuts dialog

  • Add a tab for the list of search panel shortcuts.

System information dialog

  • Add desktop platform.

  • Read /etc/os-release first.

  • Search for /lib64 and /usr/lib64 on 64 bits systems.

  • Do not crash if /lib or /lib64 directory do not exist.

  • Fix binary name for translate-shell.

Terminal workspace

  • Kill the shell before reloading it.

  • Correctly kill the terminal process on exit.

Translation workspace

  • Translation management is now done in a dedicated workspace.

  • Add a check-box to hide the translated strings.

  • Fix toolbar buttons size.

  • Disable animations when doing a full automatic translation so that the current translated string is always visible.

  • The "all strings are translated" message is more visible now.

  • Some cosmetic changes.

  • Do not regenerate *.po files when there is no real change.

  • Fix management of special character in strings (quote, newlines...).

  • The translated string must always be unquoted.

  • Display newline characters in the current untranslated string TextBox.

  • The translation view has now a grid, and displays multi-line strings entirely and unquoted.

  • An error in the translation tools does not prevent the workspace to open.

Version control workspace

  • Version control management is now done in a dedicated workspace.

  • Do not run the event loop while searching for the subversion root repository when loading a project.

  • Create a specific control for displaying history.

  • Check that a new commit log is actually written.

  • Allow to proceed when the commit log has not been modified.

  • Save the current commit log when locating a change.

  • Double-clicking on a history commit opens its contents in a read-only text editor.

  • In the branch list, draw the current branch in bold, and the default branch underlined.

  • Do not print the "cd" part when printing commands in the terminal.

  • Use the new User.Shell property to run a shell inside the terminal tab.

  • Add a button to refresh the workspace.

  • Add an history filter in the file version control dialog.

  • Run git through EXEC instead of SHELL as much as possible. It's about 10% faster.

  • Display the executed commands in the terminal correctly.

  • Automatically revert .version file only when the version is took from a VERSION file.

  • Support for --rebase and --no-rebase when doing a git pull.

  • Repository update can take options.

  • Ensure that the current line is visible when clicking on the terminal tab.

  • Reverting files now tries four different methods with git.

  • The version control history view spinner should correctly disappear in all cases.

  • Display the project branch in recent files menu.

  • Put the project directory icon under version control.

Welcome dialog

  • Adapt to dark themes.

  • Big buttons now use the standard colors.

  • A few cosmetic changes.

  • Better position for the sort popup menu.

  • The snow does not stop anymore on fur snow.

  • Little optimizations in snow routine.

  • Add a snowman and some random wind.

Miscellaneous

  • Update French translation.

  • Update Italian translation

  • Update Dutch translation.

  • Update Simplified Chinese translation.

  • Support for new GUI component gb.qt6.

  • --make is a new command-line option for generating the executable of a project.

  • Fix a possible crash when restoring opened files after the debugger stops.

  • Correctly initialize colors on dark themes.

  • Operators in gambas theme are now yellow.

  • Remove the Selection color from highlighting themes.

  • Fix a typo when calling Message.Warning() in the Gambas 2 to Gambas 3 conversion code.

  • Adapt to system colors change at runtime.

  • Fix default monospace font initialization.

  • Adapt to new way of computing stock icon sizes.

  • Use huge icons instead of large icons in IconPanel containers.

  • Fix expand and collapse icons.

  • Add a project terminal workspace.

  • Redraw some image editor toolbar icons.

  • Icon selection dialog is faster to fill.

  • Add support for the new components.

  • Update error messages.

  • Prevent a possible crash when handling global application Change events.

  • Use the new database component instead of the old one.

  • Fix the text layout of project boxes.

  • Redesign the unsaved files dialog box.

  • Update the default compact interface layout.

  • The highlight color of the Gambas theme is more saturated.

  • Some updates in Gambas fonts.

  • Redraw class symbol icons.

  • Update financial support.

  • Update IDE contributors.

  • Change how unique file names are generated.

  • Add dependency on gb.hash component.

  • Replace my deprecated e-mail by the current one in the tips files.

  • Add a new background, and modify a few ones.

  • Fix new name generation when copying a file.

  • Remove a now useless WAIT instruction used when showing the bottom panel the first time.

  • Remove Ctrl+Shift+Alt+Meta+L shortcut. :-)

  • Ignore errors when restoring authorizations on file save. CHMOD can fail on Samba shares.

  • Always use the same folder icon base to draw the project directory icon.

  • New translatable project directory icon.

  • New default project directory icon.

  • Added option to launch gambas with QT6 to gambas3.desktop file.

  • Remove an unused Age public variable in the editors.

  • Loading a file does not increment the project timestamp anymore.

WIKI

  • Allow to toggle the display of inherited symbols.

  • If an image page does not exist, display a broken link instead of the big "Please upload a file" message.

  • The default symbol description is more clever. If there is no symbol description, and that the class description is a redirection, use it.

  • Support for gb.qt6.

  • Better management of links between automatically documented pages.

  • The left panel is resizable now.

  • Prevent circular page links.

  • Add WELCOME TO GAMBAS! command to extract README file from the sources.

  • Remove classes whose name starts with an underscore from the TODO list.

  • Some fixes in --> and ==> management.

  • gb.hash has no package.

  • Changes of box backgrounds.

  • Cosmetic changes of text using non-proportional font.

  • The translation is now complete.

  • Update Italian translation.

  • Update Dutch translation.

EXAMPLES

  • Painting: Modify the Gradient example to use stroke with gradients.

  • Painting: Add a slider for the new Paint.Opacity property.

INTERPRETER

Array

  • ReadOnly can be set to TRUE if already TRUE.

  • Equals() is a new method of the array classes that tells if the contents of two arrays of the same type are the same.

  • Array.Type property now returns gb.Object when the array elements are object, not a truncated value of a class pointer.

  • Sort FALSE values first in Boolean arrays.

Collection

  • Insert() is a new method that inserts another collection into the current one.

  • ReadOnly is a new property that allows to make a collection immutable.

  • Equals() is a new method that return if two collections have the same contents.

Components

  • Exist() is a new method that returns if a specific component has been loaded.

System

  • Make System.Cores work on any GNU libc-based OS.

Task

  • Fix possible file descriptors leak in Task management.

  • Correctly remove background tasks temporary directory when they terminate.

User

  • User.Shell is a new property that returns the shell program associated with the current user.

Component API

  • Add GB.GetTimeFromDate() API to convert a Gambas date to a Unix timestamp.

  • Add GB.Collection.Browse() API.

  • The GB.MakeDate() API now takes an extra argument for making a local or UTC date.

  • Fix boolean arguments pushed on the stack when raising an event or calling a function with the API.

Debugger

  • External debugging now automatically triggers at first breakpoint.

  • Correctly synchronize PC before handling DEBUG instruction.

  • Toggle breakpoints in external debugging mode after the component exported classes have been loaded.

  • Correctly exit the debugger in external debugging mode.

  • STOP instruction is taken into account in external debugging mode.

  • Take the possible disappearance of the external debugging file between its detection and actual debugging initialization into account .

Error management

  • Fix TRY instruction that could leak memory in some cases.

  • Get the correct errno value when returning the error from a failed child process.

  • Rename error #65 from "Read-only array" to "Read-only object". Change the associated constant to E_READONLY.

File management

  • RDir() does not leak memory anymore if it finds a broken symbolic link.

  • Fix memory leaks when RDir() fails because of directory access rights.

  • Browsing relative paths when debugging a project now automatically ignores backup files (those whose names ends with ~).

  • Dir() and RDir() function now return full paths when their third argument has the gb.FullPath flag set.

  • Add gb.FullPath constant flag.

Localization support

  • French date format workaround has been removed, now that glibc has been fixed.

  • Localization is now initialized without changing the environment variables.

  • Fix localization management when setting System.Language property.

  • Overwrite LC_ALL environment variable only when System.Language is explicitly set.

Process management

  • Waiting for a process end should not crash anymore when some other processes have their Ignore property set.

  • Do not check SIGCHLD signal handler when waiting for a process end if the handler has not been installed.

String management

  • Fix a crash in LIKE pattern matching when using a bracket pattern ending with a dash.

  • Subst() now can take its replacement strings as a string array provided it is alone as second argument.

  • Fix Instr() and RInstr() when searching one character while ignoring case.

Miscellaneous

  • Do not use a specific gcc compilation flag.

  • Update mailing-list URL printed in panic message.

  • Do not crash when printing to the standard error before the project startup class has been set.

  • Support for up to 32767 computed labels.

  • Correctly check argument of command-line options that requires it.

  • All constants of the gb class are shared through the gambas.h header file.

  • Implicit conversion from pointer to boolean works again.

  • Fix and optimize conversion between Date timestamp and Unix timestamp.

  • Fix the conversion from string to floating point values when the decimal part starts with a number of zeros greater than the floating point number precision (15 digits, integer part included).

  • Support for new JIT compiler cache system.

  • Update man page.

  • Fix a printf format string on 32 bits systems.

  • Fix builtin overflow 64 bits arithmetic on 32 bits systems.

  • Application_Log special event handler does not raise an error anymore when being called.

  • Be more strict with boolean values in extern functions.

  • Fix how relative paths starting with ../ are resolved when a component calls a method implemented in the main project.

  • Replace select() system call by poll(), to deal correctly with file descriptors greater than 1024.

  • Add constants for the duration of the WAIT hook.

  • Abort compilation if __WORDSIZE preprocessor constant is not defined.

  • Define __WORDSIZE by comparing UINTPTR_MAX and UINT64_MAX constants if it was not defined by the previous headers.

  • Round() now uses always use positive powers of ten for rounding, as it introduces less error when the second argument is negative.

COMPILER

  • Correctly compile Float constant defined with an integer.

  • Fix some clang warnings.

  • Correctly compile Single division.

  • Take manually loaded components into account.

  • Fix INC and DEC optimization.

  • Fix addition/substraction optimization on dates.

  • Compile correctly floating point constants that actually are integers.

  • Fix handling of gb class in constant expressions.

  • Do not emit warnings about unused arguments when the function has no code.

  • Do not emit warnings about unused ByRef arguments too when the function has no code.

  • Do not print any warnings on function arguments if the function body is void.

  • Forgot a va_end in the ERROR_warning function.

  • The -q option makes the compiler quiet when the compilation succeeds (it does not print "OK" on the standard output).

  • Error message prefix is now a global error parameter.

  • Exit with code 1 when an incorrect or incomplete command-line option is detected.

  • Add the -d option that generates a list of every symbol use for each class in the .desc directory of the project.

  • Output calls to anonymous objects, class instanciations, and array accesses.

ARCHIVER

  • Fix man page.

  • Fix usage message.

  • Fix a printf format string on 32 bits systems.

  • Fix error message prefix.

  • Read files to exclude from the project configuration file.

  • Exit with code 1 when an incorrect or incomplete command-line option is detected.

INFORMER

  • The -V option now correctly prints the program version only and exits.

  • Exit with code 1 when an incorrect or incomplete command-line option is detected.

  • Don't generate information files if they are up to date, and if they are complete (all included components were solved).

  • Add a -f option to force the generation of information files. Apparently this option is not needed to compile Gambas and run "make install" correctly.

  • If including a component information fails, signal it with a <component>.fail file.

SCRIPTER

  • Update Dutch translation.

SELFTEST

  • Update Dutch translation.

  • Add BugSingleToInt test.

  • Add tests for conversion from string to floating point values.

BENCHMARKS

  • Always run scripts with "C" locale.

  • Use the built-in shell time command.

FARM SERVER

  • Update project icon.

  • Update logo.

PACKAGE-CONFIG

  • New tool that generates package configuration files inside the .obs directory. That directory is used by the openSUSE Build Service to generate binary packages automatically.

GB.ARGS

  • Update Italian translation.

  • Update Dutch translation.

GB.CLIPPER

  • Make gb.clipper API compatible with gb.clipper2.

  • Compile the component with C++11 support.

  • Add Clipper.CapJoined constant.

GB.CLIPPER2

  • New component based on the Clipper2 library that supersedes gb.clipper.

GB.DB

  • Connection: Correctly handle database drivers not supporting RETURNING or INSERT IF NOT EXIST features when calling the Create() method.

  • Mark gb.db as not compatible with gb.db2.

  • This component is now deprecated.

GB.DB.FORM

  • DataSource: Moving the source cursor now automatically synchronize DataView and DataBrowser children.

  • DataView: MoveTo(-1) is now a synonymous of Create().

  • The translations is now complete.

  • Add some documentation.

  • Dutch translation updated

  • Remove any explicit reference to the Blob class, which will be removed in the next version of the database component.

  • Put Blob class back now that there is a gb.db2.form component.

  • Fix internal requests on primary keys whose values include a & character.

  • Fix a possible spurious error when removing the last row of a DataView.

  • This component is now deprecated.

GB.DB.MYSQL

  • Use the new GB.MakeDate() API.

  • Check connection options at configure time to correctly deal with the differences between MySQL and MariaDB.

  • Fix incorrect code.

  • Test more connection options constants to compile on Ubuntu 14.04!

  • Fix RETURNING keyword availability test with MariaDB.

  • This component is now deprecated.

GB.DB.ODBC

  • Use both pkg-config and hardcoded paths to search for unixodbc libraries.

  • Use the new GB.MakeDate() API.

  • This component is now deprecated.

GB.DB.POSTGRESQL

  • Fix uninitialized data when returning the default collation.

  • Use the new GB.MakeDate() API.

  • This component is now deprecated.

GB.DB.SQLITE2

  • Use the new GB.MakeDate() API.

GB.DB.SQLITE3

  • Use the new GB.MakeDate() API.

  • This component is now deprecated.

GB.DB2

  • New component that supersedes the gb.db component now deprecated.

GB.DB2.FORM

  • It's the gb.db.form equivalent component based on the new gb.db2 component.

GB.DB2.MYSQL

  • New MySQL database driver for gb.db2.

GB.DB2.ODBC

  • New ODBC database driver for gb.db2.

GB.DB2.POSTGRESQL

  • New PostgreSQL database driver for gb.db2.

GB.DB2.SQLITE3

  • New Sqlite3 database driver for gb.db2.

GB.DEBUG

  • Fix compilation.

  • External debugging now automatically triggers at first breakpoint.

  • Fix a memory leak if reading the external debugging configuration file fails.

GB.DESKTOP

  • Update documentation.

  • Support for KDE6 password wallet.

  • Finish support for KDE6 password wallet.

  • DesktopActions case insensitive matching must use == instead of Like because of possible square bracket [.

  • Export DesktopActions.

  • Consider the corresponding binary for qdbus.

GB.DRAW

  • Paint: Add new composition operators.

  • PaintMatrix: Shear() is a new method that shears a paint matrix.

  • Correctly initialize the PaintMatrix interface when using PaintMatrix() the first time.

  • Add automatic conversion between PaintMatrix and Float[] or Single[].

  • Paint.Opacity is a new property that allows to define the opacity of the drawing operations.

GB.FORM

Balloon

  • Use a modal popup window that should work on any window manager, both with X11 and Wayland.

  • Use the available screen size to position the balloon. It depends on window manager support on Wayland.

  • Hide balloon automatically as soon as the target control is moved or resized.

ButtonBox

  • Do not stretch the filter picture.

  • Fix management of default filter picture.

  • Fix inner padding and button size.

ColorButton

  • Change how the color is drawn.

ColorPalette

  • Draw palette even on small sizes.

DateBox

  • Fix calendar popup position.

DateChooser

  • Change arrow icons.

DirBox

  • Add PlaceHolder property.

DirChooser

  • Force rechecking of items when setting private bookmarks.

DirView

  • Changing the current directory now collapses all its children.

  • Highlight the hovered line in the directory tree.

DocumentView

  • Raise the MouseWheel event before handling it internally.

Expander

  • The title is a bit less tall.

FileChooser

  • Fix view change from the popup menu.

FileView

  • Less icon preview refreshes.

  • Preview of text files use the system colors correctly.

  • Preview is now done by an external process instead of a Task, because the task sometimes fails because of being a forked process.

  • Run the preview background process by specifying the startup class explicitly.

  • Highlight the hovered line in detailed view.

IconPanel

  • Display the titles using the same look as TabPanel.

ImageView

  • View is a new read-only property that returns the inner ScrollArea.

  • Raise the Resize event of the inner ScrollArea.

  • Handle MouseWheel event according to the ScrollArea change.

  • Fix mouse wheel event management.

MaskBox

  • Alignment property now works correctly whenever it is set.

MenuButton

  • Keep the font of the shortcut hidden button small so that we do not see it.

  • Manage popup menu outside of any mouse event handler.

  • Correctly restore the previous focus when the popup menu is closed.

  • MenuButton now can take the focus.

  • Remove a debugging message.

  • Automatically adapt the icon to the control size.

  • Highlight the button when the popup opens only if the Menu property is defined.

SidePanel

  • Do not allow to set a dimension smaller than the minimum size.

  • Correctly check if the control must be animated or not.

Stock

  • Change how icon sizes are computed, and add xx-small, x-small (a synonymous of tiny), x-large (a synonymous of huge) and xx-large sizes.

  • Add above, below, touch-screen icons. Update icon map.

  • Add microphone-low, microphone-medium and microphone-high icons.

  • Add education stock icon.

  • Add camera-off, equalizer, notification-off and wifi-off icons.

  • Add network-off stock icon.

  • The icon map file has been moved to gb.form.stock, and has been replaced by a symbolic link to it.

SwitchButton

  • Change the look a bit.

TabPanel

  • Fix button highlighting when the control has the focus.

  • The new Select event is raised when the user clicks on a tab button, even if it is the current one.

TableView

  • Fix cell editor position and size.

TimeBox

  • Add ShowSecond property.

Miscellaneous

  • Update Italian translation

  • Update documentation.

  • DirCache: Symbolic links to directories are handled like normal directories.

GB.FORM.DIALOG

  • Don't crash if remembering a password fails. Display an error message instead.

GB.FORM.EDITOR

TextEditor

  • Highlight state datatype is now Short[] instead of Byte[].

  • Draw the stop line with a pointing frame inside the margin.

  • Draw bookmarks with a little flag icon.

  • Draw current line frame on top of the margin contents.

  • Selected text is now drawn using the LightBackground system color.

  • Margin width is correctly updated when setting the Highlight or Mode property.

  • Use smaller icons for search and goto line bottom panels.

  • Current debugged line symbol is correctly drawn inside the line limits.

  • CurrentWord is a new property that returns the current word under the cursor.

  • Do not refresh the current line if the cursor is hidden.

  • Do not highlight the current line if something is selected.

  • Draw selection and matching braces with a solid frame around.

  • Use the new theme properties of the Style class.

  • Fix the vertical position of line numbers.

  • Do not raise the postponed Change event when the object is locked.

  • Draw expand / collapse signs in light color, and with a line width proportional to the line height.

  • Draw highlighted strings correctly.

  • Comments before lines being a limit are now taken into account when collapsing.

  • Fix mouse management when expanding / collapsing limits.

  • EnsureVisible() is a new method the scrolls the editor to a specific cursor position without moving the cursor.

  • Setting the Mode property correctly refresh the editor views.

  • Collapsing and expanding functions work correctly again.

  • GetLocation() is a new method that returns the location of a line.

  • TextEditor[].Added property does not crash anymore.

  • GetLocation() always returns "?" for the first line.

  • The translations is now complete.

  • Update documentation.

  • Add gb.eval as component dependency.

  • Each editor mode now can return the "location" of a line, i.e. the function it belongs to.

GB.FORM.HTMLVIEW

  • Automatically adapt to dark themes.

  • Adapt to system colors change at runtime.

  • Update master.css.

  • Update broken image icon.

  • Component is marked stable now.

GB.FORM.MDI

Toolbar

  • Read-only toolbars do not take layout into account when loading or saving configuration.

  • The toolbar size now applies to the toolbar font.

  • Update to system colors change at runtime.

  • Fix the icon size combo-box in the configuration dialog.

  • Update the font size used for displaying button texts.

  • Take the padding of the parent into account for computing available space.

Workspace

  • Disable menu shortcuts in design mode.

  • Select is a new event that is raised when the user clicks on a tab button, even if it is the current one.

  • Find() is a new method that returns the position of a specific Workspace window.

  • The second argument of Add() is now the position where the new window must be inserted. If not specified, the window is inserted at the end.

  • Adding a window at a specific position should work better now.

  • Update Italian translation.

  • Update Dutch translation.

  • Update documentation.

GB.FORM.STOCK

  • Add many icons, and redraw some others.

  • The size of all gambas-thin icons is now 128 pixels.

  • Move icon.map to gb.form.stock.

  • _DefaultStock.InstallIconTheme() is now silent.

GB.FORM.TERMINAL

TerminalView

  • The Exec() and Shell() method now set the TERM environment variable with "xterm-256color" by default instead of just "xterm".

  • Terminal 16 first colors now follow the xterm colors exactly, except the blue which is made more readable.

  • Replace custom dark colors by inverted standard colors.

  • New algorithm for relayouting terminal contents.

  • Paste the text/plain contents of the clipboard only.

  • Add one pixel spacing between lines.

  • Kill() method now blocks longer, and raises an error if the terminal process cannot be killed.

  • Do not adapt colors to dark theme automatically.

  • Support for some zsh private unicode characters.

  • Support for ESC [ E and ESC [ F VT100 sequences.

  • The bold attribute now uses lighter colors automatically.

  • Implement strike, double underline, and fast blink character attributes.

  • Implement overline character attribute.

  • Draw a framed selection.

  • Update control icon.

  • Do not send mouse move events if no button is pressed.

  • Apply VT100 graphic mode correctly.

  • ESC [ sequence can be terminated by BEL or ESC '.

  • Update documentation.

  • Escape sequence bright colors 100-107 now work correctly.

  • Using RGB color escape sequences now renders blue as expected.

GB.GEOM

  • Add automatic conversion between Rect and RectF classes.

GB.GTK

Application

  • GB_GUI_DARK_THEME environment variable can be set to 0 to force Application.DarkTheme to be FALSE.

  • Application.DarkTheme is now writable to force its value if needed.

Button

  • Button and ToolButton now automatically ensure that their icon fit their size.

Color

  • Color.Change() is a new method that replaces an old color by the new one during a system colors change.

Control

  • ProxyFor is a new property that returns which control that control is a proxy for.

  • NoAnimation is a new property that allows to explicitly disable animations for a specific control.

  • Grab() now works as expected.

  • Fix how control borders are handled internally.

  • Set the focus even if the control is not the active control.

  • Setting a custom cursor does not crash anymore.

  • Do not crash on postponed focus management when destroying a control that will get the focus.

Paint

  • Support for new composition operators.

  • Fix ellipse painting.

  • Implementation of PaintMatrix.Shear().

  • Implement Paint.Opacity property.

  • Paint.DashOffset works correctly now.

Slider

  • Remove the Slider control.

TabStrip

  • Fix how tabs are hidden and shown.

TextArea

  • Redone how border and scrollbars are implemented.

  • TextArea having initial focus now correctly raises its KeyPress event.

TextBox

  • Implement a custom placeholder string management that mimics the better Qt behavior.

  • TextBox having initial focus now correctly raises its KeyPress event.

Window

  • Fix Controls property. Do not return children of the sub-windows anymore.

  • Fix Activate event management.

  • Fix window action trigger.

Miscellaneous

  • Replace COLOR_DEFAULT constant by GB_COLOR_DEFAULT constant.

  • Application.Change is a new property that returns which change called Application_Change.

  • Application_Change is a new global event handler that is called when system theme, display animation flags or display shadows flag has changed.

  • Don't raise an error if Application_Change global event handler does not exist.

  • WAIT with no arguments process only one event once, and so cannot loop indefinitely anymore.

  • Add a missing include now required.

  • Do not crash on theme change.

  • Fix behavior of WAIT instruction with no argument.

  • Ignore map events on non visible windows, occurring after they have been closed.

  • Fix the routine that generates disabled versions of icons.

  • WAIT alone (and methods using it internally) correctly handle posted routines.

GB.GTK3

Application

  • GB_GUI_DARK_THEME environment variable can be set to 0 to force Application.DarkTheme to be FALSE.

  • Application.DarkTheme is now writable to force its value if needed.

Button

  • Button and ToolButton now automatically ensure that their icon fit their size.

Color

  • Color.Change() is a new method that replaces an old color by the new one during a system colors change.

Control

  • ProxyFor is a new property that returns which control that control is a proxy for.

  • NoAnimation is a new property that allows to explicitly disable animations for a specific control.

  • Grab() now works as expected.

  • Fix how control borders are handled internally.

  • Set the focus even if the control is not the active control.

  • Setting a custom cursor does not crash anymore.

  • Do not crash on postponed focus management when destroying a control that will get the focus.

Paint

  • Support for new composition operators.

  • Fix ellipse painting.

  • Implementation of PaintMatrix.Shear().

  • Implement Paint.Opacity property.

  • Paint.DashOffset works correctly now.

Slider

  • Remove the Slider control.

TabStrip

  • Fix how tabs are hidden and shown.

TextArea

  • Redone how border and scrollbars are implemented.

  • TextArea having initial focus now correctly raises its KeyPress event.

TextBox

  • Implement a custom placeholder string management that mimics the better Qt behavior.

  • TextBox having initial focus now correctly raises its KeyPress event.

Window

  • Fix Controls property. Do not return children of the sub-windows anymore.

  • Fix Activate event management.

  • Fix window action trigger.

Miscellaneous

  • Replace COLOR_DEFAULT constant by GB_COLOR_DEFAULT constant.

  • Application.Change is a new property that returns which change called Application_Change.

  • Application_Change is a new global event handler that is called when system theme, display animation flags or display shadows flag has changed.

  • Adapt to system colors and system theme change at runtime.

  • Don't raise an error if Application_Change global event handler does not exist.

  • WAIT with no arguments process only one event once, and so cannot loop indefinitely anymore.

  • Add a missing include now required.

  • Do not crash on theme change.

  • Fix behavior of WAIT instruction with no argument.

  • Ignore map events on non visible windows, occurring after they have been closed.

  • Fix the routine that generates disabled versions of icons.

  • WAIT alone (and methods using it internally) correctly handle posted routines.

  • Forgot to mark the gb.gtk3 component as stable.

GB.GTK3.WEBVIEW

WebSettings

  • Add WebSettings.LocalContentCanAccessRemoteUrls flag.

  • WebSettings.UserAgent is a new property that allows to read or modify the HTTP user agent.

  • Let WebKitGTK+ store its cache where he wants. The temporary directories will be removed at programs ends by the gb.gui component.

  • Automatically destroy the HSTS cache directory at component unload.

  • Fix crash on exit when no Webview has been created.

  • Fix the use of a now deprecated API.

GB.GUI.BASE

Border

  • The Border object is now initialized with no border at all.

Clipboard

  • Copying an URL array to the clipboard correctly copies the last URL.

ComboBox

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

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

  • Setting the List property correctly updates the popup when it is opened.

  • Correctly move the popup above if there is no enough room below.

  • Only left mouse button opens the popup.

  • Better look of the popup window frame.

  • Remove a debugging message.

  • Pressing Alt+Down key opens the popup.

  • Popup() does not crash anymore.

  • Pressing Space key opens the popup without crashing.

  • Use Style.FramedSelection for drawing popup selection.

  • Fix inner padding of editable comboboxes.

  • Clearing the ReadOnly property keeps the current Text value.

  • Fix inner padding of read-only comboboxes.

  • The arrow is correctly drawn in right to left orientation.

  • The Drop property is correctly kept when the ReadOnly property changes.

  • ComboBox items have a new Enabled property, that is TRUE by default.

  • Opened is a new property that returns if the popup is opened.

  • ClearButton is a new property that toggles a clear button in editable comboboxes.

Desktop

  • Correctly detect all possible KDE versions.

GridView

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

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

  • Hitting the up or down key when the view is void does not crash anymore.

  • Moving to the bottom right cell now scrolls correctly if the last column is hidden.

  • Ensuring the visibility of a cell with a null size now scrolls the control to that cell position anyway.

  • Hitting the down arrow key now moves the cursor to the first cell when the first column is hidden.

  • GridView[].EnsureVisible() takes the alignment of the column into account to decide which part of the cell should be make visible.

  • Draw the selection with a frame if Style.FramedSelection is set.

  • GridView[].Y now correctly takes the border into account.

  • GridView[].ScreenX and GridView[].ScreenY are two new properties that return the screen absolute position of a cell.

  • Fix GridView[].EnsureVisible() when the cell is larger than the visible width.

  • Do not draw bottom frame if the selected row is the last one.

  • Do not draw top frame if the selected row is the first one.

Label & TextLabel

  • Fix automatic resize when there is some border radius.

  • Fix automatic size computation, especially on Qt.

Message

  • Fix documentation of Style property.

Paint

  • Fix Paint.TrimText() function.

  • Paint.Polyline() is a new method that adds to the current path a polyline from an array of points.

  • Paint.SmoothPopyline() is a new method that adds to the current path a curve made of splines defined by an array of points.

Picture

  • The array accessor second argument is correctly taken into account by dark themes.

  • Fix refresh routine.

ProgressBar

  • Text is a new property that allows to define the text displayed in the progress bar instead of the percentage advancement.

  • Better draw pulsing progress bar.

ScrollArea

  • Darker shadows on dark themes.

  • Propagate the Change event of the internal DrawingArea.

  • Adapt to system color changes at runtime.

  • Raise MouseWheel event before handling it.

ScrollView

  • Fix the control similar list constant.

Shortcut

  • FromKey() now uses Key.Text if available, and otherwise uses Key.Code for unknown keys.

Slider

  • Implement the Slider control in Gambas.

SpinBox

  • Make SpinBox plus and minus icons thinner.

Splitter

  • Define _DefaultArrangement property correctly.

Style

  • Shadows is a new property that will replace Application.Shadows.

  • FramedSelection is a new property that tells if the selection must be drawn with a frame in various controls. It's TRUE by default.

TreeView, ColumnView & ListView

  • Reparenting an item correctly toggles the tree arrows if needed.

  • Parent items of matching filtered items are always visible, even if they do not match the filter.

  • Indent the first level items only when one of them gets its first child.

  • Add Grid property.

Miscellaneous

  • Kill the possible previous application icon before creating it at startup.

  • Add documentation.

  • Fix the new look of the popup window frame.

  • Fix stock icon refresh.

  • Print a warning message if creating the application desktop file fails, instead of crashing.

  • Take the new Control.NoAnimation property into account to check if a control must be animated.

  • Remove possible application temporary directories on exit.

  • Do not destroy ~/.local/share and ~/.cache on exit if the application id is not defined for any reason!

GB.HIGHLIGHT

TextHighlighter

  • ToANSI() method now generates strikeout text.

  • Highlighting state must be a Short[].

  • Better error messages when the highlighter file parser fails.

  • Fix a typo in Register() source code.

  • Add the @keyword keyword to declare keywords returned by the Keyword property.

  • HasLimit is a new property that returns if the highlighter use limits.

  • @name is a new command that allows to define the name of the highlighter

  • Support for up to 32767 internal highlight states, for more complex highlighters.

  • Add @declare xxx preprocessor command to declare function-like blocks in highlighter files, and (xxx) syntax to include them.

  • Fix @include when there is more than 255 highlighting states.

  • Make internal TextHiglighter._Add() method JIT-compiled.

C highlighter

  • Fix documentation comments.

CSS highlighter

  • Correctly implement Keyword property.

Highlight highlighter

  • Fix file reference highlighting.

HTML highlighter

  • Add location limits.

Javascript highlighter

  • Fix regular expression matching.

  • function is now drawn as a keyword.

  • Update keywords.

Webpage highlighter

  • Add location limits.

Miscellaneous

  • Update Italian translation.

  • The GB_HIGHLIGHT_DEBUG environment variable toggles some debugging messages.

  • Only the Background and Highlight color names are now background colors.

  • Remove Selection from the list of standard colors.

  • Update Dutch translation.

GB.HTTPD

  • Workaround a gcc warning.

GB.IMAGE

  • A little change in the "make image transparent" algorithm.

  • Add an API to invert a color for dark theme.

  • Fix Color.Invert() algorithm when keeping color hue.

  • Remove COLOR_DEFAULT constant. GB_COLOR_DEFAULT must be used instead.

  • Remove now useless code.

GB.JIT

  • Automatically erase JIT files at program exit.

  • Use XDG_RUNTIME_DIR environment variable for storing JIT shared libraries.

  • Print warning about XDG_RUNTIME_DIR being not set once.

  • The generated code is now relocatable through a pointer table compiled in a separate shared library.

  • If the GB_JIT_TRACE environment variable is set, then the JIT compiled code will trace each line executed on the standard error output.

  • Fix the order in which compilation tasks are waited for.

  • Remove explicit dependency on gb.hash.

  • GB_JIT_FORCE now ignores the cache contents and forces recompilation when set to 1.

  • GB_JIT_CACHE environment variable now toggles the old compilation process without relocation and cache when set to "0".

  • Fix possible buffer overflows during code generation.

  • Fix compilation of &= operator.

  • Correctly display errors when the JIT compilation fails.

  • Correctly compile the SWAP instruction on String, Object, or Variant values.

  • Automatically remove JIT temporary directory when compilation is aborted.

GB.MARKDOWN

  • Move test files to the project folder so that they are not included in the executable.

GB.MEDIA

  • Support for properties having gint64 datatype.

  • Use the new GB.MakeDate() API.

GB.MIME

  • Add a MimeMessage.From property, as in GMime 3, the Sender and From headers are not the same thing.

  • Workaround a bug in the ContentType property of the MimePart class.

GB.MONGODB

  • New component that provides a MongoDB client.

GB.NET.CURL

FtpClient

  • Raise an error when a method fails instead of being silent.

HttpClient

  • Raise an error when a method fails instead of being silent.

  • PostFile() works correctly again.

  • Version is a new property that allows to define how HTTP protocol version is negociated.

Miscellaneous

  • Fix the use of a deprecated feature.

  • Curl.SSL.CaInfo is a new property that allows to define the CURLOPT_CAINFO option.

  • Curl.SSL.CaPath is a new property that allows to define the CURLOPT_CAPATH option.

  • Handle errors when setting a CURL option internally.

  • Errors are correctly reported through the Error event only for asynchronous requests.

GB.NET.POP3

Pop3Client

  • Remove the useless return value of the Open() method.

GB.OPENSSL

  • Remove include of engine.h, as OpenSSL engines are deprecated, and even removed in latest Fedora.

GB.PDF

  • Fix a compiler warning.

  • Make component compile with poppler 24.0.5.

  • Use the new GB.MakeDate() API.

  • Fix compilation with poppler version >= 24.11.

  • Mark gb.pdf as incompatible with gb.poppler.

GB.POPPLER

  • PdfDocument[].Render() method now computes the best resolution automatically when the width and height arguments are specified and not the resolution argument.

  • Add C++20 compilation flag to make gb.poppler compile with poppler 24.05.0.

  • Mark gb.poppler as incompatible with gb.pdf.

GB.QT4

Application

  • GB_GUI_DARK_THEME environment variable can be set to 0 to force Application.DarkTheme to be FALSE.

  • Application.DarkTheme is now writable to force its value if needed.

Button

  • Button and ToolButton now automatically ensure that their icon fit their size.

Color

  • Change() is a new method that replaces an old color by the new one during a system colors change.

  • Fix Color.TooltipBackground, Color.LinkBackground and Color.LinkForeground.

Control

  • ProxyFor is a new property that returns which control that control is a proxy for.

  • NoAnimation is a new property that allows to explicitly disable animations for a specific control.

Mouse

  • During a mouse event, Mouse.ScreenX and Mouse.ScreenY now return the absolute coordinates specified by the event.

  • Fix mouse wheel event management.

Paint

  • Paint.PathExtents now takes the transformation matrix into account like GTK+ components.

  • Support for new composition operators.

  • Implementation of PaintMatrix.Shear().

  • Workaround Qt bug with 1px line width.

  • Implement Paint.Opacity property.

Slider

  • Remove the Slider control.

Style

  • The Style methods called during a drawing event handler now correctly take the specified rectangle size into account in all case.

  • Style.FrameWidth really returns the width of a panel frame.

Window

  • Controls property works correctly now.

  • Optimize Controls property methods.

Miscellaneous

  • Update source code for gb.qt6.

  • Replace COLOR_DEFAULT constant by GB_COLOR_DEFAULT constant.

  • Application.Change is a new property that returns which change called Application_Change.

  • Application_Change is a new global event handler that is called when system theme, display animation flags or display shadows flag has changed.

  • Don't raise an error if Application_Change global event handler does not exist.

  • Fix compilation with older version of C++.

  • Update fix for the last versions of Breeze widget style.

  • Remove the unused QT.Notify() internal API.

  • Remove two unused internal control flags. Clean up the CWidget.cpp source file.

  • Fix how Qt version is checked.

  • Use the new constants for the duration of the WAIT hook.

GB.QT4.WEBKIT

  • Use the new GB.MakeDate() API.

GB.QT4.WEBVIEW

  • WebSettings: Add LocalContentCanAccessRemoteUrls flag.

  • Update to the new GB.MakeDate() API.

GB.QT5

Application

  • GB_GUI_DARK_THEME environment variable can be set to 0 to force Application.DarkTheme to be FALSE.

  • Application.DarkTheme is now writable to force its value if needed.

Button

  • Button and ToolButton now automatically ensure that their icon fit their size.

Color

  • Change() is a new method that replaces an old color by the new one during a system colors change.

  • Fix Color.TooltipBackground, Color.LinkBackground and Color.LinkForeground.

Control

  • ProxyFor is a new property that returns which control that control is a proxy for.

  • NoAnimation is a new property that allows to explicitly disable animations for a specific control.

Mouse

  • During a mouse event, Mouse.ScreenX and Mouse.ScreenY now return the absolute coordinates specified by the event.

  • Fix Mouse wheel event management.

Paint

  • Paint.PathExtents now takes the transformation matrix into account like GTK+ components.

  • Support for new composition operators.

  • Implementation of PaintMatrix.Shear().

  • Workaround Qt bug with 1px line width.

  • Implement Paint.Opacity property.

Slider

  • Remove the Slider control.

Style

  • Style: Fix PaintBox() method with breeze style.

  • The Style methods called during a drawing event handler now correctly take the specified rectangle size into account in all case.

  • Style.FrameWidth really returns the width of a panel frame.

TextArea

  • TextArea: Border is correctly drawn again with breeze style.

Window

  • Controls property works correctly now.

  • Optimize Controls property methods.

  • Try to simplify how window flags are applied.

Miscellaneous

  • Replace COLOR_DEFAULT constant by GB_COLOR_DEFAULT constant.

  • Application.Change is a new property that returns which change called Application_Change.

  • Application_Change is a new global event handler that is called when system theme, display animation flags or display shadows flag has changed.

  • Adapt to system colors and system theme change at runtime.

  • Don't raise an error if Application_Change global event handler does not exist.

  • Fix compilation with older version of C++.

  • Update fix for the last versions of Breeze widget style.

  • Remove the unused QT.Notify() internal API.

  • Remove two unused internal control flags. Clean up the CWidget.cpp source file.

  • Fix how Qt version is checked.

  • Use the new constants for the duration of the WAIT hook.

  • Fix compilation with Qt version < 5.14.

GB.QT5.WAYLAND

  • Add more warning messages on missing Wayland features.

GB.QT5.WEBKIT

  • Use the new GB.MakeDate() API.

GB.QT5.WEBVIEW

  • Add WebSettings.LocalContentCanAccessRemoteUrls flag.

  • WebSettings.UserAgent is a new property that allows to read or modify the HTTP user agent.

  • Force WebView internal initialization at creation, otherwise it may make the main window flicker on Qt6.

  • Use the new GB.MakeDate() API.

GB.QT6

  • New component based on Qt6.

GB.QT6.EXT

  • New component based on Qt6.

GB.QT6.OPENGL

  • New component based on Qt6.

GB.QT6.WAYLAND

  • New component based on Qt6.

GB.QT6.WEBVIEW

  • New component based on Qt6.

GB.QT6.X11

  • New component based on Qt6.

GB.REPORT2

  • ReportBrush: _ImageDir hidden property must be public.

GB.SDL2

  • Use the new constants for the duration of the WAIT hook.

GB.SETTINGS

  • Update project version.

GB.UTIL

CsvFile

  • Fields are correctly read now when KeepNames is TRUE.

Date

  • Fix Date.ToISO8601(). According to Wikipedia, the separator for milliseconds is a dot, not a comma.

Shell

  • Shell.Copy() is new method that copy a file or a directory recursively.

Miscellaneous

  • Update Italian translation.

  • Update documentation.

  • Add project icon and version files.

  • Add directory icon file.

GB.UTIL.WEB

  • Add project icon and version files.

  • Add directory icon file.

GB.VB

  • Use the new GB.MakeDate() API.

GB.WEB

  • Update documentation.

  • Response: Use the new File.RealPath() syntax in Response.SendFile().

  • Response: Add correct content-type for javascript files.

  • Response: Specify UTF-8 charset in the content-type of CSS, javascript and HTML files.

GB.WEB.GUI

WebSeparator

  • Take into account the foreground color to draw the separator.

WebTree

  • The Select event correctly sets the internal cursor to the clicked item (if any).

  • Implement WebTree[].EnsureVisible() method.

Miscellaneous

  • Update Italian translation.

  • Update broken image icon.

  • Component is marked stable now.

GB.XML

  • Add a missing include now required.