Gambas 3.21.0
What's new?
Among the hundreds of fixes and enhancements, the main features of this release are the following:
In the development environment
-
A new GUI theme with configurable roundness, flatness and contrast.
-
A better debugging of web applications.
-
The image editor has better selection and grid drawing, and faster vector shapes loading.
-
A new process manager that displays all Gambas interpreter currently running on the system.
-
The debugger panel can be undocked, and put on another screen if needed.
-
The project tree filter has been fixed.
-
Version control now allows to commit files individually.
-
Version control allows to cherry-pick commits.
-
The IDE is now colorized according to the current branch.
In the core language
-
The
Clamp
function, that clamps a value between a minimum and a maximum.
-
A new
AFTER DO
syntax that executes a statement later.
-
A new
EVERY DO
syntax that executes a statement repeatedly.
-
The
FromHtml
function, that removes all markups and entities of an HTML string.
-
The
Tokenize
function, that splits a string into tokens and returns them.
-
The
NInStr
function and the String.NInStr
method, that return the number of occurrences of a substring inside a string.
-
The
Process.Exist
method, that checks whether a process having a specific identifier is running.
Otherwise
-
Support for recent versions of
gcc
.
-
Many fixes in the
gb.db2
components.
-
The
Paint.Shear
method, that allows to shear the paint transformation matrix.
-
The
Font.Spacing
property, that allows to define the horizontal space between characters.
-
The
gb.httpd
component is now a true embedded HTTP server.
-
The
gb.web.gui
component has now painting capabilities similar to the GUI components.
Compilation and installation
Read the instructions
there.
If everything was fine, type "gambas3" to run the development environment.
Enjoy it !
Changelog
CONFIGURATION
-
Italian translation of mime and desktop files.
-
Fix
README
and README.md
files.
-
Update
AUTHORS
file.
-
Add Hasan Merkit as Turkish translator to the
AUTHORS
file.
-
Switch bytecode version to 3.21.
-
Add
-std=gnu17
flag in acinclude.m4
to compile with recent versions of gcc.
-
Define
bool
C type using typedef
instead of a preprocessor define.
-
Define the
bool
datatype only if _Bool
is not a native datatype.
DEVELOPMENT ENVIRONMENT
About dialog
-
Workaround a GTK+ bug that makes the window enlarge horizontally up to the screen width.
-
Disable animations on the hidden GridView.
-
New design with styled borders.
Code & text editor
-
Diff mode works again.
-
Use thousand separators when displaying cursor position.
-
Do not allow diff mode for locked files.
-
Add the ability to paste as help comments in the paste special dialog.
-
Always show the filter in the procedure list.
-
If the procedure list displays only one name, hitting
Return
or Enter
key automatically selects it.
-
Fix editor layout in split mode.
-
Procedure combo colors are defined correctly now.
-
Fix local variable type detection.
-
Fix error message colors.
-
Always use a white background when printing editor contents.
-
Correctly show and hide the current debugger position on split editor views.
-
The event completion triggered when hitting
_
on a function declaration is back.
-
Support for
json
highlighting.
-
Support for the new
xml
highlighting.
-
Fix breakpoints synchronization between the editors and the debugger.
-
Editor location style prefix is correctly handled now.
Console output
-
Rework the undock feature.
Database editor
-
Fix request editor layout.
-
Some cosmetic changes.
-
Display the database name in the connection button.
-
Fix table copying.
Debugger
-
Fix a crash occurring when clicking in a void stack backtrace list.
-
Fix background color of error label on dark theme.
-
Fix error message colors.
-
The hexadecimal button now works on the contents tab of expression windows too.
-
Use styled borders.
-
Fix debugger window layout.
-
Fix automatic layout of stack backtrace and breakpoints list.
-
Make the stack backtrace always visible.
-
Add a button for undocking the debugger panel.
-
Values that just changed are displayed using the theme highlight color for the foreground, not the background.
-
Do not emit the
q
debugger command on stop if the debugger is running.
-
External debugging does not stop automatically anymore.
-
Prevent a crash if the debugged process terminates while the IDE is quitting.
-
Fix a possible crash when there is an error before the startup function is called.
-
Open the console immediately as soon as something is written in it.
-
Save debug windows configuration each time the
Stop
button is pressed in external debugging mode, otherwise the current configuration is lost the next time a running process is caught.
-
Fix parsing of collection keys in debugger windows, thanks to the new
Split()
syntax.
-
Don't allow to remove breakpoints while the debugger is running.
-
As
gb.httpd
embedded HTTP server component does not serialize requests anymore, the debugger now uses external debugging to debug projects using that component, directly or indirectly.
-
Fix Firefox profile name used for debugging web applications.
-
Prevent a possible recursion when opening the project location dialog.
Debugger configuration dialog
-
Redesign debug configuration dialog.
-
Add a toggle for disabling JIT compiler cache.
-
Add automatic file completion to argument list.
-
Allow to toggle the "Use HTTP server" debugging option when
gb.web.gui
component is used.
Editor highlighting
-
Fix specific IDE highlighting files.
-
Highlighting themes automatically adapt to the background color.
-
Remove default highlighting themes. They were moved to the
gb.highlight
component.
-
Fix highlighting theme initialization.
-
Support for new oblique style property.
-
Add CSV files highlighting.
File information dialog
-
Fix version control label position.
-
Fix layout.
Form editor
-
Fix toolbox refresh, when sometimes no tab were selected.
-
Fix a possible crash when dropping a control on the background from the toolbox.
-
Redraw arrangement icons.
-
Display the control help when selecting a control.
-
Draw panel borders correctly.
-
Draw the background color of containers.
-
Fix how Panel is rendered.
-
Controls can define a
_SimilarApply
property that list the properties applied when the control is changed into another one.
-
Draw border of unknown controls correctly.
-
Redesign and fix gradient tab.
-
Rework background drawing.
-
Make the control change routine more robust to properties that are not compatible between the old and the new control type.
-
Make current menu readable in the menu editor.
-
Ensure that the width of the left column of the property sheet can be wide enough.
-
Workaround the QT6 bug that make control with one pixel width or height invisible to mouse events.
-
Fix the layout of the WebForm font selection dialog.
-
The backward-compatible property conversion is now done in the family classes.
-
Support for the new WebForm Font class.
-
Remove all ScrollView workarounds that are not needed anymore.
-
Add a placeholder text in the search field of the hierarchy tab.
-
Display the controls of the libraries used by the project in the toolbox.
-
Fix toolbox refresh.
-
The font chooser dialog allows to explicitly toggle whether we want to use the default font family or an explicit one.
-
All properties whose name ends with "Text" are translatable by default.
Help browser
-
Fix offline help browser in dark mode.
-
Implement the
readme
wiki command.
-
Some CSS fixes for offline mode.
-
Fix GUI components help.
Icon selection dialog
-
Display the number of displayed stock icons.
Image editor
-
Fix "magic wand" selection tool.
-
The arrow keys can be used for moving the image when the "move" tool is enabled.
-
Fix "polygon" drawing tool, and allow 3 and 4 sides.
-
Take dark theme into account when drawing available shapes.
-
"ellipse", "rectangle" and "polygon" tool now uses the ALT key for centering. SHIFT is for ignoring snapping.
-
Use the
invert
stock icon everywhere.
-
Always use ALT instead of SHIFT for resizing tools.
-
Fix how grid state is saved.
-
Remove diagonal grids, they are useless.
-
Make the shape delete button smaller.
-
Draw shapes with solid lines.
-
Correctly detect shape points located on the shape extents.
-
Optimize the loading of shapes.
-
The "line" tool automatically starts at the last point of the current selection if available.
-
Choosing a color now automatically selects the color tab in the property sheet.
-
Opened selections now use their first and last points as magnets.
-
Fix magnet representation on dark and light modes.
-
The unselect selection button now unselects only the current shape if only a shape is selected.
-
If
SHIFT
is pressed, then all points of the selection are magnets.
-
Colorize action now always apply a 100% brightness increase first.
-
Choose an accurate height for the font selector in the property panel.
-
Draw grid lines in a more visible way.
-
Draw selection bolder and in yellow so that it is more visible.
-
Rework background drawing.
Main window
-
Add a toggle button and a menu entry in the
View
menu that displays the breakpoints list.
-
Fix the behavior of the search button on the main window.
-
Fix main window icon.
-
Fix
halt
icon in View
menu.
-
Do not show the warnings panel automatically anymore after a compilation.
-
Print the number of warnings in the corresponding bottom panel button.
-
Use the new styled borders everywhere.
-
Make workspace and side panel buttons a bit bigger.
-
Fix "View browser" menu entry visibility management.
-
Display compilation and making executable duration time with three decimal digits, as the compiler is so fast. :-)
-
Use an arrow instead of a dot to separate project paths from project names in the recent project menu.
Make executable dialog
-
Use styled borders.
-
Add a global option that copies the executable path into the clipboard when an executable is made.
-
Layout and GUI fixes.
Open project dialog
-
Some little design fixes.
-
Layout fixes.
Options dialog
-
Correctly save the "Automatically revert non important files" settings.
-
Use new SpinBox
MinText
property to display "Number of CPUs" instead of a zero value in the number of background jobs option.
-
Fix refresh when options change.
-
Add a button to define the background color of the editors and terminals.
-
Don't use a too big editor font for displaying options.
-
Theme background color is now chosen between a fixed number of predefined colors.
-
Fix background color buttons check mark drawing.
-
Make the dialog without margin.
-
Backgrounds now follow the brightness slider and the dark theme.
-
Fix title fonts.
-
Add options for choosing the background and the selection types.
-
Store theme options settings in their own slot.
-
Add an option to toggle flat borders.
-
Uncompress the offline documentation using a background task.
-
Light backgrounds are less saturated.
-
Remove the selection shape option.
-
Add an option to define the style opacity.
-
Redesign the highlighting tab.
-
Add a option to always use a white background on image previews in dark mode.
-
Move the "image preview background" option in the "Interface" tab.
-
Use a yellow color for the "new documentation available" message.
-
If uncompressing the online help fails, display a detailed error message.
Packager
-
Add QT6 support packaging. Fix other support packaging.
-
Update AppImage default configuration.
-
Add support for OBS syntax in appimage Ubuntu repository.
-
Fix message label layout during packaging.
-
Fix version control command output displayed in error message dialogs.
Procedure popup
-
The procedure combo didn't shrink anymore.
-
Handle editor locations that can be prefixed with style flags now in the procedure list.
-
The procedure popup now follows the new styled theme.
-
Fix the drawing of the "declarations" entry in the procedure list.
-
Fix some drawing and keyboard handling in the procedure list.
-
Add a filter in the procedure list.
-
Better drawing of private methods in the procedure popup.
Process manager
-
Add a process manager tool to display the Gambas interpreter processes currently running on the system.
Profile editor
-
Fix background color of duration column in the code viewer.
Project browser
-
Clicking on the directory browser works correctly again.
Project management
-
Don't crash when closing a project if reverting non important files fails. Display a message instead.
-
Ignore unknown inherited classes when loading information about a component or a project.
-
Draw project boxes rounded and bigger.
-
Fix drawing of "Open in another window" button in project boxes.
-
Correctly import class list from
*.list
description file.
-
Don't put the
.desc
directory inside the source archive.
-
Removing compilation files now removes the description files too.
-
Display a warning message when creating the executable if there are compilation warnings.
-
Save and restore class descriptions directory when making the executable.
-
Invert project icons when a dark theme is used.
Project open dialog
-
Fix how
Open in another window
button is rendered inside project boxes.
-
Better drawing of "open in new window" button.
Project properties dialog
-
Add
3.21
version to the bytecode list.
-
Some relayout.
Project tree
-
Rework filters so they are reliable.
-
Lock the project tree during refresh.
-
Do not lock the project tree between project changes.
-
Fix breakpoint icon in the project tree top bar.
-
Correctly reset project tree filter when loading a project.
Report editor
-
CReportBrush
class now handles transparent colors in gradients correctly.
Search panel
-
Hitting
ENTER
or SHIFT+ENTER
in the search field now moves to the next or previous find when we are searching inside the current function or current file.
-
Fix background color of last column.
-
Opening the search panel now always starts with a void search field.
-
Fill the search and replace fields combos with previous values in the right order.
-
The title of the callers list is now a button that moves back to the called function when clicked.
-
Always hide the panel when searching for callers.
-
Fix callers list refresh.
-
Fix search in current function when nothing is found.
-
Use the new
AutoResize
property on the search location combo-box.
-
Prevent a possible crash during status refresh.
-
Print a warning if the estimated character width is null, and use the width of the
0
character instead.
-
Ignore search results whose source code has been removed.
-
Hide the search result list only if the search panel is explicitly hidden. Not if the IDE window is minimized.
-
Don't refresh the search list if the bottom panel is hidden.
-
Fix a possible crash when displaying a search result having no line position.
Software farm
-
Don't crash when uninstalling a project installed from the software farm from the welcome dialog or the project open dialog.
-
Check that the project archive is smaller than 128 MB before publishing it to the farm server.
-
Fix checksum of published projects.
-
Check downloaded software checksum without case sensitivity.
-
Fix Gambas Farm installed desktop files not creating a menu entry.
System information dialog
-
Some redesign.
-
Add the value of
Application.DarkTheme
.
-
Add a message about information anonymizing.
-
Enhance how program versions are displayed.
Tips dialog
-
Make wizard buttons larger.
Translation workspace
Version control
-
Allow to individually check the files to commit.
-
Single file version control information dialog works again.
-
Always show the push-only (without commit) button.
-
The diff view is correctly refreshed when checking a form file whose only code has changed.
-
Do not show horizontal scroll bar in the branch list.
-
The current branch color is applied to the GUI.
-
Replace some toggle buttons by check boxes.
-
Add the ability to cherry pick a commit from the history tab popup menu. Cherry-picking is automatically aborted if the
git cherry-pick
command returns any error.
-
Fix crash when opening the history popup menu.
-
Update some messages.
-
Add a button to synchronize the branch displayed in the history (fast-forward only).
-
Add a "cherry-pick" button.
-
Split the history tab toolbar.
-
Some layout fixes.
-
Take the
.environment
file into account in version control (i.e. ignore it).
-
Draw the current branch without a background, letting the
Style.Color
property do the job.
-
Add application icon and project icon to
gitignore
. They are generated, so no real need to put them under version control.
Welcome dialog
-
Draw selected button with a frame.
-
Don't invert big Gambas head on dark themes.
-
Draw a disable image for disabled buttons.
-
Add a button that displays system information.
-
Use style to draw buttons.
-
Use a small space between buttons.
-
Fix welcome logo and welcome background color.
-
Do not show the menu bar with the welcome dialog.
-
Remove shadows around the welcome dialog.
Miscellaneous
-
Update French translation.
-
Update Simplified Chinese translation.
-
Update German translation.
-
No need to call
Stock.Refresh
in Application_Change
anymore, as it is done automatically now.
-
Fix incorrect icon references in the main form.
-
Update control icons for dark mode.
-
Environment chooser: Replace a ToolButton by a MenuButton, so that disabled text is grayed out.
-
Update Gambas icons to thin theme.
-
Remove some icons not used anymore.
-
Update default project icon.
-
Update Gambas logo icons.
-
Make the project icon points at Gambas application icon in
gb.form.stock
.
-
Update Gambas fonts.
-
Support for new
gb.gui.qt.webview
component.
-
Theme management now uses the new
TextHighlighterTheme.Adapt()
method and its new behavior.
-
Fix terminal and search result list colors.
-
Add
Tango
color theme.
-
Redraw some backgrounds that were too opaque.
-
Creating a class with a name length smaller than two characters now raises an error.
-
The warning panel button is highlighted.
-
Correctly upgrade the
gitignore
file to its last version.
-
Rework the background drawing routine.
-
Update financial support list.
-
Use the new
After Do
statement.
-
Don't crash when showing the properties of a broken symbolic link project file.
-
Optimize the switching of image preview background.
-
Update error message list.
-
Correctly refresh theme background color on system colors change.
-
Add an
--update
command-line option for updating a project by opening it.
-
Try to print all messages on the error output when using command-line actions.
-
Use
gb.clipper2
instead of gb.clipper
.
WIKI
-
Fix page width.
-
New upload interface for image pages.
-
Dark mode.
-
Change how titles are displayed.
-
Fixes for the new wiki server.
-
Support for the new password system of the bugtracker.
-
Automatically detect and display the
since
command of each symbol in the class symbols list.
-
Add a vertical space between the different letters of the index.
-
Code blocks now have a light background.
-
The
since
command is displayed alone on its line if it is at the beginning of the line.
-
Some CSS fixes for spacing between different markups.
EXAMPLES
-
Update examples projects.
-
Remove the "MoviePlayer" example, as it uses the deprecated
Embedder
control.
INTERPRETER
-
Add
GB.CheckString()
API.
-
Fix memory misalignment on ARM 32 bits systems.
-
Do not crash when loading misaligned archive files on ARM 32 bits systems.
-
Fix JIT implementation of the
&=
operator.
-
Add
GB.FromUnicode()
and GB.IntegerToString()
APIs.
-
GB.SplitDate()
now takes one more argument to tell if the result must be in the local timezone or in UTC.
-
Array.Clear()
does not crash anymore on static arrays. It just voids them now.
-
The
-T
option without arguments works as expected now.
-
Fix conversion to Variant routine that didn't work on 32 bits systems.
-
Make the interpreter compile with C23.
-
If
poll()
signals a file descriptor with POLLHUP
or POLLERR
, immediately remove the watch, otherwise the file descriptor will be signaled again and again.
-
Ensure that all pending JIT compilation is finished before forking.
-
Update
gbx3
man page.
-
Rework breakpoint management so that breakpoints inside
_init
static initializer function work as expected.
-
Add new
Clamp()
function that clamps a value between a minimum bound and a maximum bound.
-
Don't search for
Application_Log
in the startup class if it has not yet been loaded.
-
Avoid false positives in circular reference detection by freeing objects differently.
-
Fix compilation on recent gcc.
-
Add a component hook called inside the child process after a fork.
-
Fix the error message raised when reading a floating point value on the stack.
-
Implement
AFTER DO...
, AFTER DO...
and EVERY DO ...
syntax.
-
AFTER DO
now cannot be run again if its previous call has not been triggered yet.
-
Redesign the GB_TIMER structure to save a bit of memory, while adding some flag.
-
Process.Exist()
is a new static method that returns if a process exists with a specific id.
-
Correctly release breakpoints set by external debugging.
-
If an object has a
__DebugCount
property, it will be used by the debugger instead of Count
for knowing the number of elements to display.
-
Don't print deprecation messages while evaluating for the debugger.
-
File.RealPath(Path, True)
now correctly returns the path unchanged if it starts with .../
.
-
Rework how error messages are displayed. Try to always prefix messages with the name of the program.
-
Do not raise an error if the load of an exported class at startup fails. Print a warning message instead.
-
The
Is
operator now returns FALSE if its first argument is not an object, instead of raising an error.
-
The
Is
operator now correctly checks that its second argument is actually a class.
-
GB.ExistClassLocal()
and GB.FindClassLocal()
API now take the length of the symbol to lookup as argument.
-
When some object cannot be freed at program exit, print the list of pending allocations before forcing release them.
-
Correctly print the warning message if an error occurs while loading the exported classes of a component.
-
Add
FromHtml()
routine.
-
Tokenize()
is a new subroutine that splits a string into tokens.
-
Take skipped optional subroutine arguments into account.
-
NInStr()
is a new routine that searches for a pattern into a string and returns the number of matches.
-
Add
String.NInStr()
, the UTF-8 sister method of NInStr()
.
-
When running a child process is an pseudo-terminal, we try initializing the child terminal several times, as it sometimes fails.
-
Split()
now uses \
for escaping the right escape character if its escape argument is twice the same character.
-
File.Load()
on a directory path does not raise a spurious "Out of memory" error anymore.
COMPILER
-
Add new
Clamp()
function.
-
Make the compile more clever in making the difference between a keyword and an identifier.
-
Add
AFTER DO...
, AFTER DO...
and EVERY DO ...
syntax.
-
Add a limit of 255 AFTER / EVERY instructions by class.
-
Don't mismatch the first written FAST and UNSAFE functions options as global options.
-
Be more tolerant when detecting
EXEC
keyword.
-
Automatically remove all bytecode and description files before compiling everything.
-
Do not remove description file if the
-d
option is not used.
-
Add
FromHtml()
routine.
-
Tokenize()
is a new subroutine that splits a string into tokens.
-
Allow to skip optional arguments when calling a subroutine.
-
NInStr()
is a new routine that searches for a pattern into a string and returns the number of matches.
ARCHIVER
-
Do not emit misaligned archive files anymore.
-
Fix some warning messages.
INFORMER
-
Describe the
-f
option in the help and in the man page.
FARM SERVER
-
Use a settings file located in the home directory of the user running the CGI script.
SELF TESTER
-
Plan tests to ensure each will run.
GAMBAS PACKAGE CONFIG
-
Fix package descriptions.
-
Disable
gb.pdf
in openSUSE TumbleWeed.
-
Disable
gb.sdl
and gb.sdl.sound
on openSUSE Tumbleweed.
-
Correctly disable
gb.sdl.sound
on openSUSE Tumbleweed.
-
Add support for
debian 13
and new debian testing
.
-
Fix debian
control
and rules
files.
-
Ignore
Unknown command @{package}
@
commands when the corresponding package is disabled.
-
Add support for
Ubuntu 25.04
and Ubuntu 25.10
.
GB.ARGS
-
Update Italian translation.
GB.CLIPPER
-
This component is now deprecated.
GB.CLIPPER2
-
Update to Clipper2 1.5.4.
GB.DB
-
Update to the new
GB.SplitDate()
API.
GB.DB.MYSQL
-
Update to the new
GB.SplitDate()
API.
-
Correctly identify
TINYINT(1)
as Boolean Gambas datatype in all cases.
GB.DB.ODBC
-
Update to the new
GB.SplitDate()
API.
GB.DB.POSTGRESQL
-
Update to the new
GB.SplitDate()
API.
GB.DB.SQLITE2
-
Update to the new
GB.SplitDate()
API.
-
Fix an incorrect function declaration.
GB.DB.SQLITE3
-
Update to the new
GB.SplitDate()
API.
GB.DB2
Connection
-
The
Subst()
, Exec()
, Find()
... methods now substitute the same way as in gb.db
.
-
Fix
Tables.Add()
method.
-
Fix
Create()
and Edit()
methods.
Field
Index
Result
-
Field names are correctly quoted now when calling the
Update()
method.
-
Fix a spurious comma in
Update()
request.
-
Retrieve the current driver from the connection once for each method.
-
Update()
does not crash anymore when no field has been set.
-
All()
now correctly deals with numeric fields having a NULL value.
Table
Miscellaneous
-
A null value is always translated into a SQL
NULL
. It is never passed to the driver formatting routine.
-
Fix component name in warning or debug messages.
-
Check that a connection is opened before calling the database driver everywhere it is needed.
-
Redesign the links between the different objects so that their validity behaves the same as
gb.db
.
GB.DB2.MYSQL
-
Don't prefix fields defined with
AS
with a dot in query results.
-
Correctly identify
TINYINT(1)
as Boolean Gambas datatype in all cases.
GB.DB2.SQLITE3
-
Correctly return fields of system tables.
-
Add some new SQLite3 error messages.
-
Fix debug message prefix.
GB.DBUS
-
Fix use of "Every" as an argument name in DBusSignal class.
-
Add the name of the interface in the "Unknown interface" error message.
GB.DBUS.TRAYICON
-
Fix a compilation warning.
GB.DEBUG
-
Update to the new
GB.SplitDate()
API.
-
Rework breakpoint management so that breakpoints inside
_init
static initializer function work as expected.
-
Do not automatically stop the
Read
event when there is no data to read on the debugger pipe.
-
Add process identifier in debugging messages.
-
Fix a possible crash caused by the string argument of the
Read
event being incorrectly forged.
GB.DESKTOP
-
Add warning messages when some desktop portal methods fail, and use
xdg-util
as a fail over solution.
-
xdg-email
uses its generic method on KDE6, otherwise attachments do not work.
-
Don't use desktop portal by default, it is too unreliable.
-
DesktopFile: Add
Type
property, needed to fix Gambas Farm installed desktop files.
GB.DESKTOP.X11
-
Update project icon.
-
X11.MoveWindow()
and X11.ResizeWindow()
do not crash anymore if they are called first.
GB.DRAW
-
Paint.Shear()
is a new method that shears the paint transformation matrix.
-
Paint.Rectangle()
takes three new optional parameters that allow to define the radius of each border independently.
-
A little optimization in Paint.Rectangle() when some borders have no radius.
GB.EVAL
-
Highlight.IsFunction
property correctly takes the UNSAFE
keyword into account.
-
Be more tolerant when detecting
EXEC
keyword.
-
Better error message when an identifier that should be a class name is unknown.
-
Correctly parse class names in expressions.
-
Allow to skip optional arguments when calling a subroutine.
GB.EVAL.HIGHLIGHT
GB.FORM
ButtonBox
-
Redraw default filter images, so that they are visible on more background colors.
-
Ensure that the button is square unless if too wide.
ColorButton
-
Make disabled buttons more readable.
ColorChooser
-
Color component icons are now correctly refreshed on theme change.
-
Do not raise the
Activate
event when picking a color on the desktop.
-
Use styled border, and redesign the interface a bit.
-
Fix the drawing of the top standard colors palette.
ColorPalette
-
Use styled border.
-
Mouse wheel scrolls the palette again.
Completion
-
Fix popup foreground color.
DateChooser
-
Use styled border. Some clean-up and redesign.
DirBrowser
DirChooser & FileChooser
-
The bookmark button is now correctly hidden again when useless.
-
Relayout controls on styled border change.
-
Remove little gradient at the end of the directory browser.
-
Setting preview mode by code works as expected.
-
Use new styled borders when the Border property is TRUE.
DirView
-
Keep the current item at the same position when the contents changes, to avoid problems during mouse events.
DocumentView
-
Zooming with mouse wheel now uses the mouse position as zoom center point.
-
Mouse wheel works again.
-
Lighter default background.
FileProperties
-
Use styled border.
-
Fix layout.
FileView
-
Use new styled borders when the Border property is TRUE.
-
PreviewBackground
is a new static property that allows to define the background color of image previews.
FontChooser
-
Add more characters in the text preview.
-
Font preview works correctly with
gb.qt6
now.
-
Fix font preview in dark mode.
-
Support for decimal font size.
-
Redesigned layout.
-
DefaultOnly
is a new property that allows to force the font family to be the default application one.
-
Support for the new Font
Spacing
property.
-
The letter spacing icon is now a button that resets the letter spacing to 0.
-
Do not give the focus to the size SpinBox automatically when the mouse cursor enters it.
-
Display the full font description instead of just the font family.
-
Do not raise spurious
Activate
events.
-
Use styled border.
IconPanel
-
Rework the control layout when there is no border.
-
Uniformize how selection is drawn.
-
Highlight the background of the button panel when the
Border
property is unset.
-
Fix layout between border and borderless.
-
Fix how selected tab is drawn.
ImageView
ListEditor
-
Use new styled borders when the Border property is TRUE.
-
Fix backgrounds for flat border style.
-
Fix text box background.
MenuButton
-
Don't use selected colors to draw the button when the
Menu
property is not defined.
-
Correctly react to system colors change.
-
Spurious frames should not be drawn anymore during menu popup.
-
Don't crash when restoring the focus if the previous focused control is now invalid.
-
Add a
Draw
event that allows to customize what is drawn inside the button.
-
Remove the
Wait
Wayland workaround when opening the popup.
-
Change how the button is highlighted when the popup is opened.
-
Make disabled buttons more readable.
-
Fix background refresh when the system colors change.
-
Do not translate the contents one pixel bottom right when the button is pressed.
SidePanel
-
Remove the popup menu that could change the SidePanel options.
-
Support for styled border merges.
Stock
-
Rewrite the declaration of the
Debug
property.
SwitchButton
-
Adapt the look to the new styled borders.
-
Better drawing contrast.
-
Fix contrast on extreme values of
Style.Opacity
.
TabPanel
-
The tab bar width was sometimes not correctly refreshed.
-
Add a
Separator
property that allows to hide the separator between the tab buttons and the contents when the Border
property is FALSE.
-
Better tab bar buttons layout both with border and without border.
-
Fix layout and styled borders merge.
-
Draw current tab button with background color, and hovered buttons with selection color.
-
Draw current tab button and hovered tab button with the same width.
TableView
-
Do not put a flat solid background behind the cell editor.
-
Ignore cell padding when setting the size of the cell editor.
-
Use the cell font for the cell editor.
ValueBox
-
Fix mask for currency type.
Wizard
-
Wizard buttons are automatically resized according to the longer button caption.
Miscellaneous
-
The internal DocumentView test form now uses
gb.poppler
instead of gb.pdf
.
-
Update French translation.
-
Update control icons for dark mode.
-
Update filter images so that they are visible inverted on dark themes.
-
Support for the new styled borders in many controls.
GB.FORM.DIALOG
-
Dialog.SelectFont: Use styled borders.
-
Dialog.SelectFont: Use default application font when
Dialog.Font
is NULL.
-
Update project icon.
-
Fix layout of font dialog.
-
Fix layout of ask password dialog.
GB.FORM.EDITOR
TextEditor
-
Fix how margin modification markers are drawn so that it looks correct on dark mode.
-
Prevent a possible infinite recursion when setting the
Theme
property.
-
Prevent a possible infinite recursion when setting the
Highlight
property.
-
Highlight matching characters less.
-
Add
json
mode.
-
Fix highlighting of wrapped lines.
-
Fix
GetLocation()
method of Gambas mode.
-
Do not put breakpoints and bookmarks in the undo stack anymore.
-
Optimize drawing of wrapped long lines.
-
Use the control background now that there is no background color in highlighting theme anymore.
-
Paint indent lines with dashes. Use the highlight color for the current indent line.
-
Paint include background with hatches.
-
Replace TextHighligterTheme
Adapt()
method by the Background
property.
-
Support for new oblique style property.
-
Draw selection, matching characters, indent lines... on top of the text.
-
Draw matching characters with dotted lines.
-
Draw matching characters and indent dotted lines larger on a light background.
-
Line numbers drawing now shows current line and selected lines.
-
TextEditor[].Highlight()
is a new method that returns the result of the line highlighting.
-
Use new styled border.
-
Transparently keep BOM character when reading the
Text
property or using the Save()
method if it was present when setting the Text
property or using the Load()
method.
-
Draw bold text a bit better on big font sizes.
-
The
Border
property returns the correct value.
-
Fix look of "find" and "goto" panels.
-
Correctly update margin layout in all cases when
ShowExpand
property is set.
-
React to system color changes.
-
Selection highlight has better contrast according to
Style.Opacity
.
-
Fix and enhance location detection of javascript files.
-
Editor locations now can be prefixed by style flags.
GB.FORM.MDI
Toolbar
-
Support for
Spring
controls now they do not inherit Panel anymore.
-
Support for styled borders merge.
-
Fix layout when border is set.
-
Add
Border
property.
Toolbar configuration dialog
-
Correctly update the layout when a style border property has changed.
-
Toolbar elements are more visible now.
-
Use the new
expander
, spacer
and separator
stock icons.
-
Redesign toolbar configuration dialog.
Workspace
-
Workspace: Add
Separator
property.
Miscellaneous
-
Update Simplified Chinese translation. Avoid a duplicated translation of some word.
-
Update control icons for dark mode.
GB.FORM.MEDIA
-
MediaView: Setting
Position
property before playback now works as expected.
-
MediaView: Be sure to reset Startup position marker.
GB.FORM.PRINTER
-
Update project icon.
-
Redesign preview window using styled borders.
GB.FORM.STOCK
Stock icons
-
Add
caps-lock
icon.
-
Redraw
identity
icon in gambas-thin
theme.
-
Add
heal
, histogram
, text-letter-spacing
icons.
-
Add
lamp-off
icon.
-
Add
speed
icon.
-
Update
mahjongg
icon in gambas-thin
.
-
Redraw
gambas
icon in gambas-thin
.
-
Redraw
gambas-thin
volume
icon so that it is visible correctly on dark themes.
-
New
python
and perl
icons.
-
Redraw
equalizer
icon.
-
Add
expander
, spacer
and separator
icons.
-
Fix wifi status icons in Gambas icon theme.
-
Add
wifi-none
icon.
-
Add a new
battery-empty
icon.
-
Change the color for
battery-medium
to yellow to have a better difference between each state.
-
Update
language
icon.
-
Add
bird
, cat
and dog
icons.
Mime types icons
-
Use
js
icon for text/javascript
mime type.
-
Use
archive
icon for application/x-bzip2-compressed-tar
mime type.
Application icons
-
Add some application icons.
-
Redraw
suse
application icon.
-
Add
vim
application icon.
-
Redraw
X11
application icon.
-
Add application icon for hp tools.
-
Redraw
minecraft
application icon.
-
Add application icon for
SubtitleComposer
.
-
Add
Brave
application icon.
Miscellaneous
-
Icon map fixes. Right-to-left icon list fixes.
-
Default stock icons now use the
gambas-thin
theme.
-
Move a debugging message displayed when
GB_STOCK_DEBUG
environmental variable is set.
-
Modify some
gambas-thin
icons that were not very readable when converted to dark mode.
-
Restore contrast in
gambas-thin
icons, and modify the dark theme generation so that the inverted icons are still readable.
-
Add some saturation to dark themes.
-
Rewrite application links file.
-
Update color inversion for dark theme to the new
Color.Invert()
algorithm.
-
Fix the declaration of the
table
icon in the icon map.
-
Better automatic conversion of icons to dark theme.
-
Add applications icons and modify icon map for KDE plasma widgets.
-
Fix icon map for battery icons.
-
Now the battery status is working great in all gambas icons exported themes.
-
Remove unused icons.
GB.FORM.TERMINAL
-
Use new styled borders when the
Border
property is TRUE.
GB.GEOM
-
Rectangle intersection with NULL now returns itself instead of raising an error.
GB.GTK
Application
-
Remove the
Animations
, Shadows
, Theme
properties.
-
The
Change
property is now writable. Writing it raises the Change
event everywhere.
-
Call
Stock.Refresh
if Application.Theme
changes.
-
Change
events now automatically refresh the control they are sent to.
Border
-
Add
Border.Styled
constant.
CheckBox
-
Fix width computation on automatic resize.
Color
-
Fix light background color.
-
Fix light foreground color.
Container
-
Add
._Children
hidden property for returning the direct children of a container ignoring its possible proxy.
-
ContainerChildren: Add
First
and Last
properties.
Control
-
TopLevel
is a new property that returns the top-level windows that contains the control.
-
Drop
property is not proxied anymore.
-
Fix default naming of controls so that GTK+3 style sheets work.
-
Control background is now drawn according to the possible
NoBackground
properties as expected.
Font
-
Add
Spacing
property for letter spacing.
Key
-
The "Windows" key is now associated with the
Key.Meta
flag like with Qt.
-
Key.Code
returns the accurate values when hitting a numeric pad key with "num. lock" off.
-
Add
Key.Clear
constant used when hitting the 5
numeric pad key with "num. lock" off.
Mouse
-
Add
LeftOnly
, RightOnly
, MiddleOnly
properties, that return if a specific button is pressed and all the others are not.
-
State
correctly returns the META
key state now.
Paint
-
Paint.Opacity
is correctly saved by Paint.Save()
and restored by Paint.Restore()
.
RadioButton
-
Fix width computation on automatic resize.
Style
-
BackgroundOf()
and ForegroundOf()
now correctly handle control proxies.
TabStrip
-
Fix TabStrip arrangement.
UserContainer
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
_Container
property now correctly handles properties proxied to the actual internal container.
UserControl
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
Add
_SetBorderSize()
hidden method for defining the size of the control borders.
Window
-
The
MouseUp
event that can be raised by Window.ShowModal()
has valid mouse event data now.
-
Fix a possible automatic increase of window size of 1 pixel horizontally and vertically.
-
Opacity
property fixes.
-
Take the menu bar into account again when arranging windows.
-
Fix Window arrangement.
Miscellaneous
-
Don't call
gtk_window_set_resizable()
on popups, it makes their dimension incorrect.
-
Remove the popup left margin if it is not needed.
-
Remove
Panel
, HBox
, VBox
, HPanel
and VPanel
controls.
-
Change
events now automatically refresh the control they are sent to.
-
Fix horizontal centered arrangement with right-to-left direction.
-
Clear the Pango fontconfig caches after a fork to prevent deadlocks.
-
The
gb.gtk
component is now deprecated.
-
Raise the
Change
events in one loop.
-
Remove ScrollBar control.
-
Adapt to the new GB_TIMER structure.
GB.GTK.OPENGL
-
The
gb.gtk.opengl
component is now deprecated.
GB.GTK3
Application
-
Remove the
Animations
, Shadows
, Theme
properties.
-
The
Change
property is now writable. Writing it raises the Change
event everywhere.
-
Call
Stock.Refresh
if Application.Theme
changes.
-
Change
events now automatically refresh the control they are sent to.
Border
-
Add
Border.Styled
constant.
CheckBox
-
Fix width computation on automatic resize.
Color
-
Fix light background color.
-
Fix light foreground color.
Container
-
Add
._Children
hidden property for returning the direct children of a container ignoring its possible proxy.
-
ContainerChildren: Add
First
and Last
properties.
Control
-
TopLevel
is a new property that returns the top-level windows that contains the control.
-
Drop
property is not proxied anymore.
-
Fix default naming of controls so that GTK+3 style sheets work.
-
Control background is now drawn according to the possible
NoBackground
properties as expected.
-
Correctly take fractional font point size into account in custom control CSS.
-
Fix generated css for fonts with an integer size.
Font
-
Add
Spacing
property for letter spacing.
Key
-
The "Windows" key is now associated with the
Key.Meta
flag like with Qt.
-
Key.Code
returns the accurate values when hitting a numeric pad key with "num. lock" off.
-
Add
Key.Clear
constant used when hitting the 5
numeric pad key with "num. lock" off.
-
Key[]
now returns the expected values.
Mouse
-
Add
LeftOnly
, RightOnly
, MiddleOnly
properties, that return if a specific button is pressed and all the others are not.
-
State
correctly returns the META
key state now.
Paint
-
Paint.Opacity
is correctly saved by Paint.Save()
and restored by Paint.Restore()
.
RadioButton
-
Fix width computation on automatic resize.
Style
-
BackgroundOf()
and ForegroundOf()
now correctly handle control proxies.
TabStrip
-
Fix TabStrip arrangement.
-
TabStrip buttons do not shrink anymore as soon as a control internally using a GtkBox is created.
TextArea
-
TextArea: Workaround the utterly stupid broken design of GtkTextView so that setting the
Text
property works as expected.
TextBox
-
Remove round borders of flat TextBox.
UserContainer
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
_Container
property now correctly handles properties proxied to the actual internal container.
UserControl
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
Add
_SetBorderSize()
hidden method for defining the size of the control borders.
Window
-
The
MouseUp
event that can be raised by Window.ShowModal()
has valid mouse event data now.
-
Fix a possible automatic increase of window size of 1 pixel horizontally and vertically.
-
Opacity
property fixes.
-
Take the menu bar into account again when arranging windows.
-
Fix Window arrangement.
-
StartResize()
is a new method that asks the window manager to resize the window.
-
StartMove()
is a new method that asks the window manager to move the window.
-
Use
gtk_window_set_resizable()
, so that client-side decorations do not draw a useless maximize button when the window is not resizable. Alas the stupid Gnome window manager continues to draw it in that case on the server side.
-
Fix non-resizable windows whose minimum size was always forced to the size of all inner widgets.
-
Resize the window back to its original size when setting the
Transparent
property.
Miscellaneous
-
Don't call
gtk_window_set_resizable()
on popups, it makes their dimension incorrect.
-
Remove the popup left margin if it is not needed.
-
Remove
Panel
, HBox
, VBox
, HPanel
and VPanel
controls.
-
Change
events now automatically refresh the control they are sent to.
-
Fix horizontal centered arrangement with right-to-left direction.
-
Clear the Pango fontconfig caches after a fork to prevent deadlocks.
-
The
gb.gtk
component is now deprecated.
-
Raise the
Change
events in one loop.
-
Remove ScrollBar control.
-
Adapt to the new GB_TIMER structure.
-
Containers are now correctly refreshed when setting their background.
-
Fix mouse button tests and mouse management in popup menus.
GB.GTK3.WEBVIEW
WebView
-
Add
Find()
, FindNext()
and FindPrevious()
methods to search for a string.
-
Define the
FindIgnoreCase
constant.
-
The
Link
property is now accurate for Start
and NewView
events.
-
Always accept navigation requests on inner frames, without raising events.
-
Compile with WebKitGTK < 2.40.
GB.GUI.BASE
Application
-
Implement
Theme
, Animations
and Shadows
properties in Gambas.
-
Call
Stock.Refresh
if Application.Theme
changes.
ComboBox
-
AutoResize
is a new property that makes a read-only ComboBox resizes itself automatically to fit its contents.
-
Add Oxygen style workarounds for the popup placement.
-
Draw popup selection with a rounded box, and add more padding.
-
Add a GTK+3 painting bug workaround when the popup is closed.
-
Fix drawing with flat borders.
-
Always use a border and text background.
-
Add horizontal padding in the popup according to the styled border radius.
-
Fix popup vertical size.
-
Fix popup selection drawing.
-
Fix popup border.
-
Really fix popup border.
-
Make the arrow a bit smaller.
-
Fix popup drawing.
-
One pixel less for borderless editable ComboBox.
-
Add
ComboBox[].Display
property that allows to display some rich text instead of the actual item text.
-
Fix popup border shape when it opens on top of the control.
Font
-
Rewrite some Font methods in Gambas and put them here.
-
Don't convert font family to lowercase.
-
ToString()
now rounds letter spacing to one decimal.
-
Use no more than three decimal digits in font size.
GridView
-
Fix how current cell is drawn, and selection drawing.
-
Adapt default background to border flat style.
-
Correctly react to styled border changes.
-
Fix row refresh routine, and selection drawing.
-
Do not draw the bottom selection limit when it touches the GridView bottom border.
-
Choose a grid color adapted to the background style.
-
Fix how selection is drawn.
-
Selected color is more visible in flat style.
-
GridColor
is a new property that returns the color used for drawing the grid.
-
Try to make the selected lines more visible.
IconView
-
Draw selection desaturated when the control is disabled.
-
Icon selection now follows styled border properties.
-
Do not crash anymore if
Paint.ClipRect
returns NULL during the Draw
event handler.
-
Keep the current item at the same position as much as possible when the contents changes, to avoid problems during mouse events.
Label
-
Styled border support.
-
Spacing
is a new property that adds padding to the left and right side of the Label.
ListBox
-
Draw selection normally.
-
Add
ListBox[].Enabled
property that allows to disable some ListBox items.
-
Add
ListBox[].Display
property that allows to display some rich text instead of the actual item text.
Message
-
Fix
flat
message style.
-
Fix button panel background.
Panel
-
Draw background with the Style class when the
Border
property is set to Border.Raised
, Border.Sunken
or Border.Etched
.
-
Fix padding management.
-
Use
Border.Styled
for new border system.
-
Use the new
_SetBorderSize()
method to take the size of the border into account.
-
Do not take the hovered style flag into account when painting the background.
Picture
-
Make
Stretch()
arguments behave the same way as Image.Stretch()
.
PictureBox
ProgressBar
-
Draw them rounded.
-
Follow the styled border properties.
ScrollArea
-
Add
DefaultBackground
property.
-
Draw background with the Style class.
-
Fix scrolling management when the language direction is right to left.
-
Fix styled border and clipping.
-
Add
Shape
property to let the control use a custom border shape.
-
Fix clipping before calling the
Draw
event.
ScrollBar
-
The scrollbar button has now a minimum size.
-
Use
Style.BorderColor
to draw scrollbars.
-
Mouse wheel scrolls the scrollbar now.
-
Fix a possible overflow.
-
Fix a division by zero error.
-
Fix arrows colors.
ScrollView
-
Setting the
Arrangement
property recomputes the contents size immediately. It fixed the behavior of automatic arrangement of controls drawn with a ScrollView in the IDE.
-
Use extra padding when the new background drawing system requires it.
Slider
-
Make the slider button one pixel smaller so that it is not cropped when the control has the focus.
-
Fix overflows in internal computations.
-
Make the button bigger if possible.
-
Use a button a little bit smaller.
SpinBox
-
Add
MinText
property. The SpinBox will display that text when its value is the minimum value.
-
Add
Round
property. The SpinBox value will be rounded to the value of that property.
-
Add
Precision
property. It is the number of decimal digit that will be displayed.
-
The value of the control is now a Float.
-
Forgot to define the default value of the Border property correctly.
-
Add
ShiftStep
property. It's the step value used when the SHIFT
key is pressed.
-
Add
Suffix
and Prefix
properties.
-
Add
AutoResize
property.
-
Update documentation.
-
Only the mouse left button can change the value.
-
Add
ShiftStep
property to the control property list.
-
Add
Activate
event.
Splitter
-
Prevent possible divisions by zero while computing layout.
-
Order children so that styled borders can be merged.
-
Make splitter work again.
Spring
-
Do not inherit Panel anymore.
Style
-
New system for drawing styled borders and backgrounds.
-
Add
Shape
, BorderSize
and BorderRadius
properties.
-
Add
Flat
property. It is FALSE by default.
-
Add
Opacity
property.
-
The
FramedSelection
is now deprecated.
-
Add
PaintSelection()
method for drawing a selection frame according to the previous properties.
-
Add
ClipBackground()
method for creating a background clip region according to the previous properties.
-
Add
PaintBackground()
method for drawing a background according to the previous properties.
-
Add constants for the different shape types.
-
Add a list of shape options constants for squaring specific rounded borders, or hiding specific borders.
-
Paint focus frame even when the
Style.BorderFlat
property is set.
-
Make square border shapes the default, for backward-compatibility.
-
Add
Color
property to define the color used for drawing borders (Color.Foreground
by default).
TreeView
-
In multiple selection mode, if
ShowCheck
is set, then the SPACE
key toggles the selection of the current item.
-
In multiple selection mode, if
ShowCheck
is set, then there is no automatic selection anymore when the arrow keys are used.
-
Set the internal cursor when selecting a single item in multiple selection mode, and correctly raise the
Select
event.
-
Do nothing when trying to move an item before or after itself.
Miscellaneous
-
Update Italian translation.
-
Use $XDG_DATA_HOME for the last resort directory of the application desktop file.
-
Store the application desktop file inside one of the $XDG_DATA_DIR directories only if it is writable.
-
Try to standardize how selection is drawn in the different controls.
-
Implement
Panel
, HBox,
VBox
, HPanel
and VPanel
containers in Gambas.
-
Add support for background and selection drawn with the Style class in many controls.
-
Define
_Similar
property for container controls.
-
Automatically merge borders of contiguous controls arranged in the same direction (horizontally or vertically).
-
Rework message dialog layout in both normal and flat styles.
-
Changing HBox, VBox, HPanel and VPanel into other containers define the value of the
Arrangement
property.
-
ScrollBar control is now implemented in Gambas.
-
Replace timers by
After Do
where it was possible.
-
Fix symbolic link on gambas logo icon.
-
Only create the temporary application desktop file on Wayland as it is a Wayland workaround.
-
Add a Wayland warning about the desktop file creation.
-
Update message default icons.
-
Use the new
FromHtml()
routine instead of String.FromHTML()
.
-
Update documentation.
GB.GUI.QT.OPENGL
-
Fix
gb.gui.qt.opengl.component
description file.
GB.GUI.QT.WEBVIEW
-
gb.gui.qt.webview
is a new component that loads the webview component according to the GUI component loaded by gb.gui.qt
.
GB.HIGHLIGHT
TextHighlighter
-
Commands can take options with that syntax:
command(option,option...)
-
Implement
ignorecase
option for word
, keyword
and symbol
commands.
-
symbol
command can have children state.
-
Fix default state colors in highlighting files.
-
Print a warning if an highlighting state declares different default state colors.
-
Update color inversion for dark theme to the new Color.Invert() algorithm.
-
Forgot to add
Label
as a common state.
-
Print a warning if a non-common state has no default state color.
-
The colors of included highlightings are more visible in dark mode now.
-
Fix included highlighting colors again.
-
Do not merge highlighting of successive results of the
Symbol
command.
-
Use the
File.RealPath()
method instead of reimplementing the wheel when loading a theme.
TextHighlighterStyle
-
Add
Oblique
style property.
TextHighlighterTheme
-
AdaptToBackground()
is a new method that adapt the theme colors to a specific background color according to its luminance.
-
Names
is a new static property that returns the display names of the default themes.
-
List
is a new static property that returns the list of default themes.
-
Include background colors are a little bit better.
-
Calling
Adapt()
without argument resets to the not-adapted initial style.
-
Adapt()
keeps a save of the initial styles, so that you can call it several times.
-
Rename
AdaptToBackground()
method as Adapt()
.
-
Support for fake "Background" style for backward-compatibility.
-
Replace the
Adapt()
method by a Background
property.
-
Correctly recompute the value of the
Dark
property in all cases when setting the theme background color.
-
Adapt a theme to a background color by fixing colors having not enough contrast.
-
Do not crash when initializing a theme.
-
Fix theme adaptation to background color.
-
Use new
Oblique
style property in themes for comments and documentation.
-
Better theme adaptation to background colors.
-
Allow
.../
in the theme path.
CSS highlighter
-
Fix highlighting of identifiers starting with dashes.
CSV highlighter
-
Add CSV file highlighter.
-
Add default colors for CSV file columns.
Highlight highlighter
-
Make
highlight
highlighter takes command options into account.
-
Fix
highlight
highlighter.
Javascript highlighter
JSON highlighter
Settings highlighter
-
Add
settings
highlighting for settings files.
SQL highlighter
-
Support for case insensitive keywords.
XML highlighter
-
Add
XML
syntax highlighting.
Miscellaneous
-
Add the default highlighting themes to the
gb.highlight
component.
-
Clean up default highlighting themes.
-
Update French translation.
-
Don't use pure blue colors in highlighting themes, as they are hard to read on dark backgrounds.
GB.HTTPD
-
Remove a useless test in
GB_HTTPD_HOST
environment variable management.
-
Pass the
GB_JIT_DEBUG
variable to CGI scripts.
-
Destroy timers outside of
SIGCHLD
handler, as the timer destruction function is not reentrant.
-
Pass more headers to the CGI script.
-
Don't serialize forks anymore.
gb.httpd
can be used as a true CGI-only HTTP server.
GB.IMAGE
-
Color inversion while keeping hue now just uses a 180° hue rotation on the inverted color, so that the action is reversible.
-
Color.Contrast()
is a new method that returns the contrast between two colors as a number between 0 (same color) and 1 (maximum contrast).
-
Export blend color routine.
-
Color.Blend()
takes an extra optional opacity argument.
-
Color.Opacity()
is a new method that add some transparency to a color.
GB.JIT
-
Put all headers inside the translated code without using
#include
, so that the cache is not incorrectly used if the headers contents change.
-
Display compiler errors better.
-
If
$PATH
is not defined, define it using the directory where the compiler was found.
-
Prevent a crash at exit if the JIT temporary directory does not exist anymore for any reason.
-
Display the warning message about
$XDG_RUNTIME_DIR
being not set only in debugging mode.
-
use correct datatype in JIT method.
-
Add
-std=gnu17
to the compiler flags, so that JIT code compiles on recent gcc or clang versions.
-
Add
-std=gnu17
flag to all compiler executions.
-
Panic on AFTER / EVERY bytecode.
GB.LOGGING
-
Formatter: Replace
CStr()
by Str()
when printing date.
-
Formatter: Add more non showable Backtrace steps.
-
FileHandler: Throw an error on non valid paths.
-
Logger: Stop using
autom.FileHandler
when sOutput
is empty.
GB.MAP
GB.MEDIA.FORM
GB.NET
-
DnsClient: Fix host resolution when the host has both an IPv4 and IPv6 address.
-
Socket: Keep the status socket after an internal error has been raised, so that the posted
Error
event gets it.
-
Socket: Fix
Connect()
method with no arguments.
GB.NET.CURL
-
HttpClient: Don't crash if the sending callback is called whereas the client has been stopped.
-
Fix compilation warnings, and possible incorrectly set options.
-
Correctly ensure that the value of all curl numerical options are passed as
long
.
GB.NET.SMTP
-
Don't put tests inside
gb.net.smtp
.
GB.OPENGL
-
Use
libepoxy
instead of GLEW
if present.
GB.PCRE
-
Implement the
RegExp.__DebugCount
property that tells the debugger the real number of elements in the RegExp
array.
GB.PDF
-
Fix compilation of
gb.pdf
on last poppler library.
GB.QT4
Application
-
Remove the
Animations
, Shadows
, Theme
properties.
-
The
Change
property is now writable. Writing it raises the Change
event everywhere.
-
Call
Stock.Refresh
if Application.Theme
changes.
-
Change
events now automatically refresh the control they are sent to.
Border
-
Add
Border.Styled
constant.
CheckBox
-
Fix width computation on automatic resize.
Color
-
Fix light background color.
-
Fix light foreground color.
Container
-
Add
._Children
hidden property for returning the direct children of a container ignoring its possible proxy.
-
ContainerChildren: Add
First
and Last
properties.
-
FindChild()
correctly finds controls on top first.
Control
-
TopLevel
is a new property that returns the top-level windows that contains the control.
-
Drop
is not proxied anymore.
-
Use the same default naming of controls as
gb.gtk3
.
-
Control background is now drawn according to the possible
NoBackground
properties as expected.
Font
-
Add
Spacing
property for letter spacing.
Key
-
Add
Key.Clear
constant used when hitting the 5
numeric pad key with "num. lock" off.
Mouse
-
Add
LeftOnly
, RightOnly
, MiddleOnly
properties, that return if a specific button is pressed and all the others are not.
Paint
-
Paint.LineWidth
returns 1
when it has been set to 1
.
-
Paint.DrawImage()
takes Paint.Opacity
into account correctly now.
RadioButton
-
Fix width computation on automatic resize.
Style
-
BackgroundOf()
and ForegroundOf()
now correctly handle control proxies.
TrayIcon
-
Fix a possible crash while freeing an X11 tray icon.
UserContainer
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
_Container
now correctly handles properties proxied to the actual internal container.
UserControl
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
Add
_SetBorderSize()
hidden method for defining the size of the control borders.
Window
-
Opacity
property fixes.
-
Center newly opened windows by default on X11.
-
Take the menu bar into account again when arranging windows.
Miscellaneous
-
The
MouseUp
event that can be raised by Window.ShowModal()
has valid mouse event data now.
-
Fix global mouse coordinates after a mouse grab.
-
Remove
Panel
, HBox
, VBox
, HPanel
and VPanel
controls.
-
Fix horizontal centered arrangement with right-to-left direction.
-
The
gb.qt4
component is now deprecated.
-
Remove ScrollBar control.
-
Adapt to the new GB_TIMER structure.
GB.QT4.EXT
-
TextEdit:
Format.Color
and Format.Background
correctly take alpha channel and default color into account.
-
The
gb.qt4.ext
component is now deprecated.
GB.QT4.OPENGL
-
The
gb.qt4.opengl
component is now deprecated.
GB.QT4.WEBKIT
-
Update to the new
GB.SplitDate()
API.
-
The
gb.qt4.webkit
component is now deprecated.
GB.QT4.WEBVIEW
-
The
gb.qt4.webview
component is now deprecated.
GB.QT5
Application
-
Remove the
Animations
, Shadows
, Theme
properties.
-
The
Change
property is now writable. Writing it raises the Change
event everywhere.
-
Call
Stock.Refresh
if Application.Theme
changes.
-
Change
events now automatically refresh the control they are sent to.
Border
-
Add
Border.Styled
constant.
CheckBox
-
Fix width computation on automatic resize.
Color
-
Fix light background color.
-
Fix light foreground color.
Container
-
Add
._Children
hidden property for returning the direct children of a container ignoring its possible proxy.
-
ContainerChildren: Add
First
and Last
properties.
-
FindChild()
correctly finds controls on top first.
Control
-
TopLevel
is a new property that returns the top-level windows that contains the control.
-
Drop
is not proxied anymore.
-
Use the same default naming of controls as
gb.gtk3
.
-
Control background is now drawn according to the possible
NoBackground
properties as expected.
Font
-
Add
Spacing
property for letter spacing.
Key
-
Add
Key.Clear
constant used when hitting the 5
numeric pad key with "num. lock" off.
Mouse
-
Add
LeftOnly
, RightOnly
, MiddleOnly
properties, that return if a specific button is pressed and all the others are not.
Paint
-
Paint.LineWidth
returns 1
when it has been set to 1
.
-
Paint.DrawImage()
takes Paint.Opacity
into account correctly now.
RadioButton
-
Fix width computation on automatic resize.
Style
-
BackgroundOf()
and ForegroundOf()
now correctly handle control proxies.
TrayIcon
-
Fix a possible crash while freeing an X11 tray icon.
UserContainer
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
_Container
now correctly handles properties proxied to the actual internal container.
UserControl
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
Add
_SetBorderSize()
hidden method for defining the size of the control borders.
Window
-
Opacity
property fixes.
-
Center newly opened windows by default on X11.
-
Take the menu bar into account again when arranging windows.
-
StartResize()
is a new method that asks the window manager to resize the window.
-
StartMove()
is a new method that asks the window manager to move the window.
-
StartMove()
and StartResize()
require at least Qt 5.15.
Miscellaneous
-
The
MouseUp
event that can be raised by Window.ShowModal()
has valid mouse event data now.
-
Fix global mouse coordinates after a mouse grab.
-
Remove
Panel
, HBox
, VBox
, HPanel
and VPanel
controls.
-
Fix horizontal centered arrangement with right-to-left direction.
-
Remove ScrollBar control.
-
Adapt to the new GB_TIMER structure.
-
Workaround popup positioning bug of QT5 on Wayland. Not perfect.
GB.QT5.EXT
-
TextEdit:
Format.Color
and Format.Background
correctly take alpha channel and default color into account.
GB.QT5.WEBVIEW
WebView
-
Add
Find()
, FindNext()
and FindPrevious()
methods to search for a string.
-
Fix the
Find()
logic with case sensitivity.
-
Always raise the
Finish
event after the Error
event.
-
The
Link
property is now accurate for Start
events (but not for NewView
events).
-
Always accept navigation requests on inner frames, without raising events.
-
Do compile with Qt version < 5.14.
-
Fix incorrect declaration of slot only used with QT6.
GB.QT6
Application
-
Remove the
Animations
, Shadows
, Theme
properties.
-
The
Change
property is now writable. Writing it raises the Change
event everywhere.
-
Call
Stock.Refresh
if Application.Theme
changes.
-
Change
events now automatically refresh the control they are sent to.
-
Calls the event loop just after setting
Application.Font
, so that the effect is immediate like with Qt5.
Border
-
Add
Border.Styled
constant.
CheckBox
-
Fix width computation on automatic resize.
Color
-
Fix light background color.
-
Fix light foreground color.
Container
-
Add
._Children
hidden property for returning the direct children of a container ignoring its possible proxy.
-
ContainerChildren: Add
First
and Last
properties.
-
FindChild()
correctly finds controls on top first.
Control
-
TopLevel
is a new property that returns the top-level windows that contains the control.
-
Drop
is not proxied anymore.
-
Use the same default naming of controls as
gb.gtk3
.
-
Control background is now drawn according to the possible
NoBackground
properties as expected.
-
Remove the Wayland workaround in
ScreenX
and ScreenY
properties, it seems not to be useful anymore.
Font
-
Add
Spacing
property for letter spacing.
Key
-
Add
Key.Clear
constant used when hitting the 5
numeric pad key with "num. lock" off.
Mouse
-
Add
LeftOnly
, RightOnly
, MiddleOnly
properties, that return if a specific button is pressed and all the others are not.
Paint
-
Paint.LineWidth
returns 1
when it has been set to 1
.
-
Paint.DrawImage()
takes Paint.Opacity
into account correctly now.
RadioButton
-
Fix width computation on automatic resize.
Style
-
BackgroundOf()
and ForegroundOf()
now correctly handle control proxies.
TrayIcon
-
Fix a possible crash while freeing an X11 tray icon.
UserContainer
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
_Container
now correctly handles properties proxied to the actual internal container.
UserControl
-
Add
_NoBackground
property to prevent the control from automatically drawing its background color.
-
Add
_SetBorderSize()
hidden method for defining the size of the control borders.
Window
-
Opacity
property fixes.
-
Center newly opened windows by default on X11.
-
Take the menu bar into account again when arranging windows.
-
StartResize()
is a new method that asks the window manager to resize the window.
-
StartMove()
is a new method that asks the window manager to move the window.
Miscellaneous
-
The
MouseUp
event that can be raised by Window.ShowModal()
has valid mouse event data now.
-
Fix global mouse coordinates after a mouse grab.
-
Remove
Panel
, HBox
, VBox
, HPanel
and VPanel
controls.
-
Fix horizontal centered arrangement with right-to-left direction.
-
Remove ScrollBar control.
-
Adapt to the new GB_TIMER structure.
-
Workaround a QT6 bug that quits the application when a standard file dialog is closed.
-
Apparently QT 6.9 does not have a global thread pool GUI-specific anymore.
GB.QT6.EXT
-
TextEdit:
Format.Color
and Format.Background
correctly take alpha channel and default color into account.
-
Load the correct component interface and do not crash anymore.
GB.QT6.WEBVIEW
WebView
-
Add
Find()
, FindNext()
and FindPrevious()
methods to search for a string.
-
Fix the
Find()
logic with case sensitivity.
-
Always raise the
Finish
event after the Error
event.
-
The
Link
property is now accurate for Start
and NewView
events.
-
Workaround Qt6 bug so that the request can be cancelled by stopping the
Start
event.
GB.REPORT2
-
Hidden object are now taken in the count of elements processed by the vertical container.
-
The container is not pushed on next page if its size is exactly the remaining space.
-
The
ReportPanel
with None
arrangement correctly sets the index now.
GB.SCANNER
GB.TEST
-
Fix some documentation comments.
-
When printing all project tests, display one test by line.
GB.UTIL
-
Shell.Copy: Fix the behavior when the target is a directory.
-
Use
File.RealPath()
for decoding relative paths arguments of CSVFile
and Shell.Copy()
.
GB.UTIL.WEB
-
The component now has a part written in C that provides an almost 20 times faster version of
JSON.FromString()
.
-
Rewrite
JSON.ToString()
and JS()
in C so that it is a lot faster.
-
JSON.ToString()
now converts date values using the Javascript JSON format.
GB.VB
-
Update to the new
GB.SplitDate()
API.
GB.WEB
-
Request: Documentation fix.
GB.WEB.FEED
GB.WEB.GUI
Align
-
IsLeft()
and IsRight()
methods take System.RightToLeft
into account.
DrawingArea
-
Don't update explicitly on initialization, as the ResizeObserver already triggers it.
Font
-
A new class that represents a Paint and a Control font.
-
The string representation now follows the IDE convention.
-
Only the "size:xxx" property understand the
<size>/<line height>
CSS syntax.
-
Raise a
Change
event when one of its property changes.
-
The Font class has
Underline
and Strikeout
properties.
Paint
-
Paint.Font set a css font string for painting text with WebDrawingArea.
-
Setting the
Font
or the Brush
property makes a copy of their argument now.
-
Add
Background
property for the background color used for drawing.
-
Add
Paint.FillText
that draw filled text.
-
Add
Paint.StrokeText
, that draw stroked text.
-
Add
Font
property and DrawText()
method for drawing text with alignment.
-
Add
Opacity
property.
PaintBrush
WebContainer
-
DeleteChildren()
method acts on the _Container
property.
-
Some methods can be called by the WebControl constructor, when the children array is not yet initialized.
WebControl
-
The Font
Normal
property is correctly taken into account.
-
The Font property now takes and return a Font object.
-
Changing the Font object returned by the
Font
property updates the font and the control.
-
Deleting a control now removes the pending refresh javascript code.
WebDateBox
-
Take the
Enabled
and the ReadOnly
properties into account as expected.
-
Raise the
Click
event when a date is selected in the popup.
WebForm
-
Correctly generate
<div>
markups for embedded forms.
WebListBox
-
Raise the
Click
event as expected.
WebMenu
-
Popup sub-menus work correctly again.
WebScrollView
-
Update focus rectangle on scroll.
-
Implement a specific internal
WebScrollViewContainer
class, so that the control correctly refreshes.
WebTable
-
EnsureVisible()
does not trigger a refresh if the row is already visible.
-
EnsureVisible()
works correctly in all cases now.
-
Optimize table refresh when the selection changes.
Miscellaneous
-
Added new environment variable GB_HTTPD_HOST to set the binding of the embedded HTTP server.
-
Update French translation.
-
Automatically stops session processes if the server process disappears.
-
Make "favicon" a symbolic link.
-
Do not export test forms, as they are not put into the executable anymore.
-
Add documentation.