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 roundess, flatness and contrast.
-
A better debugging of web applications.
-
A image editor with better selection and grid drawing, and with faster shape 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.
-
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
Otherwise
-
Support for recent versions of
gcc
.
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
aka debian testing
for the moment.
-
Fix debian
control
and rules
files.
-
Ignore
Unknown command @{package}
@
commands when the corresponding package is disabled.
-
Add support for
Ubuntu 25.04
.
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.
-
Interface sightly redesigned.
-
Fix layout.
-
Redesign the layout behavior.
-
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.
-
Some interface redesign.
-
Some layout enhancement.
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
-
New look.
-
Some look tweaks.
-
Adapt look to styled border properties.
-
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.
-
Do not put a flat solid background behind the cell editor.
-
Ignore cell padding when setting the size of 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 new background drawing system in many controls.
GB.FORM.DIALOG
-
Dialog.SelectFont: Use style 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.
-
Fix a possible crash while drawing, that may have triggered because of the new background drawing system.
-
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.
-
Use a global styled border only when the preview is visible.
-
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
-
Fix matrix shear transformation.
-
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
-
Fix matrix shear transformation.
-
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. Beware that sorting does not take it into account.
-
The
Display
property of the items is taken into account when sorting.
-
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. Beware that sorting does not take it into account.
-
The
Display
property of the items is taken into account when sorting.
Message
-
Fix
flat
message style.
-
Fix
flat
message style again.
-
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.
-
Fix padding management when new borders are used again.
-
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 him use a custom border shape.
-
Fix clipping before calling the
Draw
event.
-
Fix drawing when the
Shape
property is set.
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" control 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.
-
Use the same opacity for flat background in dark and light themes.
-
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.