Gambas 3.16.0
What's new?
This is a huge release, with more than a thousand of changes, optimizations and bug fixes.
Here are some of the main features:
-
GTK+3 and QT5 components now support Wayland.
-
GTK+3, QT4 and QT5 new web browser components using the same interface.
-
GTK+3 component is now on a par with QT5 component, allowing the development environment to run with GTK+3!
-
IDE compressed files are not stored in the project anymore. They are generated when the executable is made. Projects are automatically converted at opening.
-
Array access is now about 15% faster.
-
Add binary search methods to the array classes.
-
Date localization support has been redesigned, so that complex formats of languages like Chinese are supported. The new design should be backward-compatible with the old ones on western languages.
-
Compiler is now faster by using all the CPU cores.
-
Scripter has been redesigned, cleaned-up, enhanced and optimized.
-
Label, TextLabel, MovieBox, Frame and Separator controls are now written in Gambas.
-
A lot of new stock icons were added and updated.
-
The ODBC database driver works far better.
-
zstd
compression format support.
-
aarch64
architecture support.
Compilation and installation
Read the instructions
there.
If everything was fine, type "gambas3" to run the development environment.
Enjoy it !
Changelog
CONFIGURATION
-
Uninstall mimetypes for Gambas script and server pages.
-
Install an icon for the Gambas IDE.
-
Update Gambas IDE icons.
-
Fix installation of IDE icons and menu.
-
Fix
make install
that should now correctly remove all installed files.
-
Workaround a bug in
xdg-desktop-menu
that triggers on Alpine systems.
-
Add actions to the Gambas IDE desktop file to run it with a specific GUI component.
-
Correctly uninstall interpreter metadata files.
-
Correctly remove
gb.component
file from installation once the metadata has been generated.
-
Only keep the
gb.component
file for the native component and remove gb.so
and gb.la
.
-
Add detection of
aarch64
architecture.
-
Use gcc option
-O2
instead of -Os
by default.
-
Fix some spaces in
gambas3.desktop
file.
-
Fix uninstallation of gambas icons.
-
Components having a Gambas part now compile it with translation enabled.
-
Use 64x64 icons for controls now.
-
Update
AUTHORS
file.
-
Sort
AUTHORS
file by name and by contribution type (developer, example developer, translator). Remove general contributions like "bug fixes" or "testing", and rewrite fuzzy ones.
-
Add support for Ubuntu 21.04 (hirsute hippo) in GitLab CI.
-
Add support for OpenSuse 15 (.2 & .3) in GitLab CI.
-
Detect git/svn version with a macro instead of creating a header file.
DEVELOPMENT ENVIRONMENT
About dialog
-
Fix contents for
gb.gtk3
.
-
Display the platform and the GUI toolkit.
-
Make it larger for wide fonts.
Automatic completion
-
Run after a little delay, so that repeated cursor moves trigger it once.
-
More keys now validate the completion then close the popup.
-
The automatic completion and signature popups should not overlap anymore.
-
Gambas keywords are now automatically inserted with a space after them when it makes sense.
-
Property variables declared with
USE
are now correctly considered as private.
Code editor
-
Hitting
F2
on a non-existing label does not crash anymore.
-
Make private symbols darker in the procedure list so that they are easier to read.
-
Do not hide automatic completion and signature popup when we are scrolling horizontally.
-
Correctly hide automatic completion and signature popups when saving.
-
Use the new
wrap
stock icon.
-
Add filter buttons to the procedure list.
-
Error tooltip now uses the foreground color.
-
Keep the runtime error tooltip indefinitely.
-
Use the editor font for error and watch tooltips. Add a little padding.
-
Commenting and uncommenting is now a lot faster.
-
Use the wait cursor during printing initialization.
-
Display cursor position and overwrite state in the status bar.
-
The
UNSAFE
keyword is now correctly taken into account in function detection.
-
Make compiler and runtime errors tooltips more readable.
Code snippets
-
Use the project tabulation size for indentation.
Color chooser dialog
-
Color insertion automatically detects the color under the cursor and highlights it, so that it will be replaced if the dialog inserts a new color.
-
Correctly handle double-click when the first tab is selected.
-
Enhance color chooser dialog.
Compiler management
-
Correctly locate compiler errors when the errors occurs at the very end of the class file.
-
Sort compiler output messages so that the result does not depend on the order of the compiler background tasks.
Components management
-
Scanning a class that declares a structure using the name of an already existing class does not loop forever anymore.
-
The
AutoCreatable
flag is now correctly taken into account by inheritance of exported classes.
-
Fix scan of project classes having a parent class.
Connection editor
-
Request duration is now displayed in the status bar.
-
Running a request that is not a SELECT now automatically updates the table list.
Debugger
-
Change the
Run
menu into Continue
when the debugger is running.
-
Disable
Run with
menu when the debugger is running.
Debug panel
-
Display the local variables and the watch expressions in one half of the panel, and the global variables in the other half.
-
The close button has an opaque background now.
Farm client dialog
-
Don't set the Foreground color of Software boxes, it makes GTK+3 css system slow as hell.
-
Fix the layout of filter panel.
-
Trim the software name if there is not enough horizontal space to display it.
-
Cache the autocompletion tag list.
File compression
-
The "of" javascript keyword is now correctly taken into account.
-
Compressing a void file does not crash anymore.
-
Compressing or uncompressing a file now marks the project as modified.
-
Automatically convert compressed files when opening old projects.
-
Compressed files are not stored in the project anymore. They are generated when the executable is made.
Form editor
-
Do not set the Name property if a virtual control has no Name property.
-
Floating point number properties are now edited in american format, they do not use the current localization.
-
The control selection menu now uses two levels of menus not to display too many items in the same popup.
-
Changing the class of a public control from the "Change into" menu now works as expected.
-
The menu editor view now remembers its scrolling position, provided that you open it on the same form.
-
Grid is lighter.
-
Clicking on the
Invert
button of the list property editor when the list is void does not crash anymore.
-
New arrangement indicators.
-
Pasting controls put them at the first free place found now.
-
Add a back and forward button to the preview.
-
Double-clicking on a toolbox control now inserts it at the first free place in the selected container.
-
Remove container does not incorrectly move the children anymore.
-
Arrange containers after first load, and mark the form as modified if the loaded arrangement had to be changed.
-
Correctly detect stacking order changes caused by automatic arrangement.
-
Support for forms that are multicontainers.
-
Changing the toolbar icon size now keeps the current tab.
-
Sort toolbox controls in the alphabetical order.
-
Center buttons now always act on the selected controls, not their children.
-
Support for
Picture:NoCache
property kind.
-
Multicontainer tab moving does not crash anymore.
-
Don't use brush for painting the selection. As brush is always a repeated pattern, edges got incorrect pixels on rotation.
-
Add a "show deprecated" button in the toolbox.
-
Add a popup menu to the toolbox.
-
Right-clicking to get help on a control is replaced by an entry in the popup menu.
-
Control groups are now translated in the toolbox.
-
Do not show deprecated controls is similar list, unless they are visible in the toolbox.
-
Fix custom drawing of Splitter and Toolbar.
-
Clicking on the clear button while editing a property value now resets the property to its default value.
-
Support for the MovieBox Animation property.
-
Don't use the deprecated MovieBox.Path property anymore.
-
Support for the new
_DefaultText
constant of Multicontainer controls.
-
Multicontainer tabs title are now initialized with a default text.
-
Control restacking now can be undone correctly, and works on forms with automatic arrangement.
Gambas fonts
-
Merge all different sizes in two SFD files (one for regular, one for bold).
-
Update Gambas fonts.
-
Put the
*.bdf
files into the project data, even if they are generated from the *.sfd
files.
Help browser
-
Deal with possible missing GUI component information files.
-
Layout the loading spinner later to be kind with GTK+.
-
Display an accurate message in online help when a unsupported wiki command is used.
-
Correctly stop the spinner if the page loading is cancelled.
-
Use a circle Spinner.
-
Remove unused MovieBox.
-
Handle component documentation written inside code automatically, like the wiki.
-
The style sheet is correctly reset after the offline help has been updated.
-
Use substitutes for missing components only in the help browser.
-
Use the new Web browser of the
gb.gui.webview
component.
-
Use the new WebView.Clear method to resets the view, as clearing the history does not really work.
-
Help widget keeps its zoom when being cleared.
-
Help widget does not refresh if we ask it the same URL.
Icon chooser dialog
-
Redesign the dialog a bit.
-
Add a check box that toggles displaying icons using the selected size or not.
-
Add a icon name filter.
Image editor
-
Fill rule button is visible again.
-
Use the new "line cap" and "line join" stock icons.
-
Apply a zoom fit after an image resizing.
-
Default image resize mode is stretching now.
-
Selection resizing dialog can create a border.
-
Use SpinBox controls for grid options.
-
Add an invert button for testing the dark version of an icon.
-
Correctly refresh property panel when switching to another file.
-
Do not crash undo management anymore after a right or middle mouse click on the image.
-
Correctly reset the current shape when the selection is cleared.
Make executable dialog
-
Add an option to globally disable file compression (useful for debugging).
-
Add an help label for substitution patterns.
-
Don't show the console automatically when running the after command.
-
$(VERSION)
is now correctly replaced by project version in the after command.
-
It is possible to explicitly set the version instead of incrementing it.
-
Do not warn when generating the executable twice without any change, if project version comes from a
VERSION
file.
-
Fix executable desktop shortcut generation.
-
Add
$(DIR)
, $(VERSION)
, $(NAME)
and $(TITLE)
to the "Run command after" substitution patterns.
Make source archive dialog
-
Support for
zip
format.
-
Display the right error message when an unsupported archive format extension is selected.
-
Use a custom dialog with a "fool GMail" explicit option.
-
The source archive target directory is now correctly saved into the project.
-
Fix source archive generation with
tar
.
-
Support for a new source archive format that should be able to fool GMail.
Main window
-
Fix GUI default layouts.
-
Fix global toolbars layout management.
-
All messages now use message boxes.
-
Add a message label on the bottom right of the IDE main window, besides the debug panel buttons.
-
Make panel close buttons tiny.
Menu editor
-
The "Paste" button now pastes after the current menu.
-
Add a "Paste before" button so that we can paste before the first menu.
-
Use a true toolbar.
-
Add buttons to directly jump to menu event handlers.
Option dialog
-
Hide proxy configuration button, as it is not yet supported by the new webview.
-
Add an option to choose the message style.
-
Add a global option for defining the number of compiler background jobs.
-
Changing the icon theme now has an immediate effect.
Output terminal
-
Handle code positions emitted by the
DEBUG
instruction as links.
-
Always ensure that the terminal bottom is visible once a program or a test is finished.
-
Remove TerminalView resizing workaround.
Packager wizard
-
Debian packages now use icons in
png
format instead of xpm
, that format being not supported by GTK+.
-
Common extra dependencies and extra files are not lost anymore when the target systems change.
Profiler
-
Each profiling window has now its window button inside the bottom toolbar.
-
Remove the now useless minimize toolbar button.
-
Reorder profiling menus.
Project arguments dialog
-
Save dialog geometry.
-
Quote arguments only if really needed.
-
Fix overlapping text when drawing project titles.
-
Backward-compatibility with older IDE versions for storing program arguments in the project file.
Project creation dialog
-
Replace balloons by message boxes, as they do not work on Wayland.
-
webform
project template now uses gb.web.gui
instead of gb.web.form
.
Project management
-
Make
.project
format backward-compatible. All unknown options in the project configuration file are now preserved when writing it.
-
The
CompressFile
project option key has been renamed as CompressedFiles
, with an automatic upgrade.
-
Fix a possible infinite recursion when checking for project files metadata flags.
-
Project info box now correctly displays the current branch besides the version number.
-
Project info box is now automatically reloaded if the project configuration file has changed.
Project open dialog
-
Project lists scroll to the top when the filter changes.
-
Change the layout of the buttons to fix behaviour with GTK+3.
Project properties dialog
-
The project icon is visible again the first time the dialog is opened.
-
Add
GB_GUI_DARK_THEME=1
to the pre-defined environment variables.
-
Remove the white background color of icon button.
-
Environment variables now can be individually disabled.
-
Don't try to display the average number of lines by function if there is no function in the project.
-
Inserting a new environment variable now edits the correct cell.
-
Unset the
AutoResize
property on a container so that the "Authors" field is visible on GTK+3.
-
Going back in the component help browser does not raise an error anymore.
-
Do not hide component if it has the same name as the project.
-
Environment variables menu has been grouped with sub-menus.
-
Environment variables can be reordered.
-
Fix a possible crash when closing the dialog.
-
The variable name column of the environment grid now enlarges itself when inserting a new variable.
Project tree
-
Fix directory creation.
-
Pasting a file now correctly updates its version control state.
-
The tree filter can now display compressed files only.
-
Check for compressed files only if we display the current project.
-
Fix the size of file icons.
-
Compressed files are drawn with a darker icon now.
-
Source files icons follow dark themes again.
-
Renaming a file now highlights its basename by default as before.
-
Failing to rename a file does not crash anymore.
-
Add a duplicate menu entry for data files.
-
Add a "show untranslatable files" filter.
-
File renaming takes "compress file in executable" flag into account.
-
Creating a directory named
CVS
or CVSROOT
is now forbidden.
-
Ignore
CVS
, CVSROOT
and .svn
directories when browsing the project.
Search dialog
-
Global replace does not lock text editors anymore.
-
Hide the dialog immediately when browsing the project.
-
Use a round spinner.
-
Fix search result line numbers.
-
Highlight of
C++
files does not crash anymore in search results.
-
Limit the width of the search list location column.
-
Renaming a file displayed in the search result list does not crash anymore.
-
Replace the balloon by a message box, because of Wayland.
System information dialog
-
Add the
GDK
library.
-
Add default font name and desktop scale.
Test panel
-
Display the test result with a colored label inside the test panel toolbar.
-
Send the test suite name and not the full test list to the tested program.
-
Use the project environment when running in test mode now.
-
Add a spinner to the test panel.
-
If the program test crashes, then the fail test label is shown.
-
Always show after a test has been run.
-
Update the tests configuration file as soon as a test module is modified, deleted or renamed.
-
Disable editor popup when the test output terminal gets the focus.
-
Start test button is now disabled while the project is tested.
Text editor
-
Add a preview panel for Markdown and HTML documents, based on a WebView and some javascript.
-
Add a button for loading images in HTML preview. By default they are not loaded.
-
Add line anchors to HTML preview. It works only if markups do not span on several lines.
-
SVG files are now highlighted with the HTML mode.
-
The procedure popup has now the same width as the procedure button.
Translation dialog
-
Importing a translation now correctly refreshes the translation view.
Translations
-
Update French translation.
-
Update Chinese translation.
Version control
-
Fix
git branch
listing.
-
The version control dialog now opens only if the project compiles correctly.
-
Ignore changes in white spaces in the diff.
-
Ignore changes in white spaces when displaying
git log
history with changes.
-
Support for git worktrees.
-
Fix a possible crash if the password dialog is cancelled.
-
Highlight the "merge" lines in git history.
-
Don't show modified lines on history editors.
-
Form history now takes the associated class file into account.
-
Use explicit commit buttons now.
-
Always save the commit log, even if the dialog is cancelled.
-
Add a checkbox to hide changes in translations.
-
If there is no change to commit, display a little warning on the bottom left of the dialog, and hide the change tab.
-
Error message is now top aligned.
-
Add a checkbox that allows to include changes with the commit history. Only implemented for
git
at the moment.
-
Automatically set the
$EDITOR
environmental variable if not set.
-
If not editor is found for
$EDITOR
, display a warning message.
-
The git root directory including a project is now correctly detected when there is a symbolic link somewhere in the path.
-
Make the defaut dialog size smaller.
-
Fix error message layout routine.
Welcome dialog
-
Void example tab does not crash anymore.
-
Some fixes in snow.
-
Make snow flakes fade when they have landed.
-
Do not draw tears on X-Mas.
Miscellaneous
-
Redraw and fix control icons.
-
Remove now useless classes.
-
Use
gb.gui
instead of gb.gui.qt
, so that gb.gtk3
component can be used.
-
Remove now useless custom icons.
-
Update "zen" color theme.
-
Update "gambas" color theme.
-
Display an accurate error message if the compiler crashes.
-
Fix my e-mail address displayed in many places.
-
The "tips of the day" window is now an utility window.
-
Use
String.RemoveDiacritics()
instead of the old local utility function.
-
Custom control icons size is now proportional to the font size.
-
Update background image list.
-
Slightly update symbols icons.
-
Bigger Atari bomb icons.
-
Use "small" icon size instead of fixed size almost everywhere.
-
Automatic generation of deprecated controls icons.
-
Update support file.
-
Increment project modification time stamp when creating, deleting, renaming files, updating translations...
-
Put the close menu of editors popups at the end.
WIKI
-
Update Chinese translation.
-
Use
gb.qt5
information file for all GUI components now.
-
Fix index sorting.
-
Add
how-to-install
special command.
-
Display monospace text with a light gray background.
-
Change website icon.
-
Fix css of message boxes.
-
Use a different URL for editing pages, so that CloudFlare can be used.
-
Automatic usage of help coming from the source code comments.
-
Less margins around paragraphs.
-
Update message icons.
-
Handle
-->
link syntax in default help.
-
If a class is virtual (its name does not begin with a letter), then use the page title instead of the class name if present.
-
Update the list of ignored components used for generating the TODO page.
-
Syntax for string constants are correctly generated.
-
==>
at the beginning of a page introduces an automatic HTTP redirection. This is different from -->
which is a link to another page.
INTERPRETER
Array management
-
Fix Variant arrays sort when a mode is specified.
-
Array access is now about 15% faster.
-
Raise a memory error if the size of an array element overflows. The maximum size is now 16 MB minus one byte.
-
Fix multi-dimensional arrays management.
-
Object[].Find()
now correctly takes the optional Start
argument in account.
-
Add
FindSorted()
, ExistSorted()
... methods to the array classes. They use a binary search algorithm (in other words, they assume the array to be sorted).
-
Fix string array search with special comparisons.
-
Fix automatic conversion of multi-dimensional arrays.
-
A class that inherits an array class now inherits its internal array flag too.
Component API
-
GB.Array.Get()
does not check array bounds anymore.
-
GB.IsRaiseLocked()
is a new API that tells if raising an event is useless because no observer will receive it.
-
GB.IsLocked()
is a new API that tells if an object is locked.
-
Add
GB.String.Split()
API.
-
Fix a crash when
GB.ReturnNewString()
is used with a zero length.
-
The enumerator object now can register a free function that is called when the enumeration ends or is aborted.
-
Add an API to set the read-only flag of an array.
-
Change the
GB_FUNCTION
structure so that it stores the index of the method instead of its description pointer.
-
GB.Call()
API now works correctly again when calling static methods.
-
Add
GB.HasError()
API to know if a native error has already been raised.
-
Add
GB.DateFromString()
API.
Date management
-
Str()
now uses gb.Standard to format dates, so that Val()
and IsDate()
can understand them.
-
Formatting a date with
gb.Standard
now uses gb.MediumDate
concatenated to gb.MediumTime
, as gb.GeneralDate
now is a different format.
-
Rework and simplify internal date/time formatting routine.
-
Date format with distinct separators and tail separators (like the Chinese date format) are now correctly supported.
-
If the current localization uses the same separator for all date elements having a separator, then the element having no separator will use that same element if the
"/"
format character is used in the Format()
function. Same change for the time separators.
Error management
-
Correctly catch errors raised inside event handlers in all cases.
-
Add a debug API that returns the current error message, and remove the API that printed it.
-
Errors cannot be propagated outside of an event handler, because the event may result from a library signal that do not support exceptions (like the
glib
library).
-
Stop stack unfolding on exception only up to an event raise now.
File management
-
Opening a file for creation in direct mode now implies the write flag.
-
Redesign internal file constants.
-
Add
gb.Input
and gb.Output
constants.
-
Child processes do not inherit locks anymore.
-
Stat().Device
is a new property that return the device containing the file as a string.
-
File.DefaultDirAuth
is a new property that defines the default authorizations used when using MkDir
.
Internationalization
-
Use the current language to load translations, not what
setlocale()
returns.
-
Always define
LC_ALL
and LANG
with the effective language chosen.
-
Fix possible buffer overflow on localisation environment variables.
-
If no language environment variable is defined, use
C
locale instead of en_US
.
-
System.GetFormat()
is a new method that returns the format string associated by a predefined format constant.
-
Format(0, "#")
now returns "0"
and not a void string anymore.
-
Use the correct thousand separators.
JIT compiler
-
Disable jit compiler if no compiler is found.
-
Fix panic message displayed when a JIT method is not found.
String management
-
Fix
&=
operator optimization when the added string is void.
Task management
-
Timers are not inherited anymore by background tasks. They are actually inherited, but immediately disabled the first time they trigger inside the background task.
-
Task.Kill()
method is now a synonymous of Task.Stop()
.
Miscellaneous
-
Add process id in warning messages.
-
Workaround libraries that override
SIGCHLD
handler by checking and reinstalling it at each event loop (!), at component request. All components using glib
should request that using a new API.
-
Add a
-a
option that allows to override the program path (i.e. Application.Path
and Args
).
-
Undef
PACKAGE_
preprocessor constants from gambas.h
, if they are defined.
-
Min()
and Max()
are now faster.
-
System.Cores
is a new property that returns the number of cores.
-
Change the internal signature of the implementation of the class "fast methods".
-
Fix compilation on 32-bits systems.
-
The interpreter can compile without
libffi
again.
-
Url$()
does not encode spaces with the +
character anymore, as this is deprecated, and works only inside query part of the URL.
COMPILER
-
Ignore
CVS
and CVSROOT
directories when searching for source files to compile.
-
Add a
-j
option to run multiple jobs in background to speed-up compilation. -j0
option means the number of cores plus one.
-
If the
Class
word follows the End
keyword, it is recognized as a keyword.
-
Do not crash when using
("")
as value for a string constant.
-
Always raise a syntax error if a preprocessor line starts with an unknown reserved identifier.
-
#Include
is a new preprocessor reserved identifier.
-
Allow
ON ... GOTO
/ GOSUB
to span on multiple lines.
-
Support for
#Script
preprocessor keyword.
-
When compiling forms, errors at the end of the class file are not associated with the form anymore.
INFORMER
-
Fix a warning message.
-
Running the informer for all components will not analyze the
gb
component. The metadata of gb
must be generated explicitly.
SCRIPTER
-
Scripter has been reworked, cleaned-up, extended and optimized by Brian Grindley.
-
Added a test suite to verify very basic scripter functionalities.
-
It is possible to include more that one file per line.
-
#Include
is now supported as well as Include
.
SELF-TESTER
-
A new program that aims at checking the interpreter.
BENCHMARKS
-
Add a
-count
option to tell how many times the benchmark will be run. The displayed times will be the mean of all runs.
GB.ARGS
-
Disable default handling of
-V
and -h
options if they are handled manually.
GB.COMPRESS.ZSTD
-
New
zstd
compression driver made by Laurent Carlier.
GB.DATA
-
The new
GB_FUNCTION
structure allows to reduce the size of the GRAPH_DESC
structure.
GB.DB
-
Do not quote
*
field name in SQLRequest.Select()
method.
-
Enumerating subcollection now silently ignores elements that do not exist anymore, instead of raising an error.
-
Don't call the collation driver routine if the
no_collation
flag is set by the database driver.
-
Do not try to seek anywhere in the Result object if the
no_seek
flag is set, even if the row count is positive.
-
Result.Delete()
never removes a row from the result set if its row count is negative (i.e. if it is forward-only).
-
The
Result.Release()
driver API now tells if the connection has already been closed.
-
Raise an error when retrieving the primary key fails, if the driver has not already raised it.
GB.DB.FORM
DataBrowser
-
Find()
is a new method that moves to the first row matching a specific SQL condition next to the current position.
DataComboView
-
Prevent the popup contents from scrolling horizontally.
-
Fix default event.
-
Draw grid inside the combo if the grid property is set.
-
Ignore vertical alignment when drawing the contents.
-
Handle keyboard shortcuts:
Space
, Enter
, Down
, and Escape
key.
DateSource
-
FindNext()
is a new method that returns the index of the first row matching a specific SQL condition next to the current position.
-
Find()
is a new method that returns the index of the first row matching a specific SQL condition.
DataView
-
Find()
is a new method that moves to the first row matching a specific SQL condition next to the current position.
Miscellaneous
-
Update Chinese translation.
-
New icon for DataSource control.
GB.DB.ODBC
-
Get rid of a warning by using
snprintf()
instead of strncpy()
.
-
Fix component as much as possible.
GB.DB.POSTGRESQL
-
Workaround a stupid postgresql
#define
.
-
Remove the undefinition of
PACKAGE_
constants. It is now handled directly in gambas.h
.
-
Support of PostgreSQL 12 and newer versions by Laurent Carlier.
-
Correctly build the database version number in all cases.
GB.DB.SQLITE2
-
Correctly handle
~
in database directories.
GB.DB.SQLITE3
-
Correctly handle
~
in database directories.
GB.DBUS
-
DBusConnection: Validate the path sent to the
_Introspect()
method, to replace a crash by an error or a void result.
GB.DBUS.TRAYICON
-
TrayIcon: Update the DBus menu only if necessary.
-
The default tray icon ignores dark theme now.
-
Toggle menus are now correctly updated in the tray icon exported popup (beware that no update works at the moment with Gnome / Ubuntu indicators).
GB.DEBUG
-
The debugger now correctly saves and prints the current error message.
-
Stop watching debugger file descriptor as soon as there is a read error.
-
Tabs and newlines are now replaced by spaces inside error messages. Otherwise the debugger breaks.
GB.DESKTOP
-
On KDE5, don't try to use old KDE4 wallet if it is not available.
-
Desktop.SendMail()
now waits for the completion of the xdg-email
script, so that errors are raised.
-
Support for desktop component plugins. Unsupported APIs (on wayland) now raise an error.
GB.DESKTOP.X11
System tray support
-
The tray now creates its own window.
-
Show()
now should take the handle of a top-level window.
-
The
Arrange
event is raised immediately after the end of the Show()
method.
-
Move()
and Resize()
are two new methods that define the geometry of the tray inside the window specified by the Show()
method.
Miscellaneous
-
This component is now a
X11
plugin for gb.desktop
.
-
Fix stack overflow when using
X11.RootWindow
property.
-
X11.ShowDesktop
now silently fails if the _NET_SHOWING_DESKTOP
X11 property is not set.
GB.DRAW
-
Add PaintExtents
W
and H
properties as synonymous of Width
and Height
.
GB.EVAL
-
If the
Class
word follows the End
keyword, it is recognized as a keyword.
-
Fix parser on multi-line text.
-
Fix preprocessor lines highlighting.
-
Fix how highlighting deals with spaces.
-
Keywords and subroutines are now returned by two different properties of the System class.
-
System properties
Keywords
, Subroutines
and Datatypes
now return a read-only array.
-
Support for
#Script
preprocessor keyword.
GB.EVAL.HIGHLIGHT
-
HTML highlighting: Markups can now span on multiple lines.
-
TextHighlighter.CanRewrite
is a new property that tells if highlighting is allowed to rewrite.
-
Take the previous property into account in Gambas highlighter.
-
Remove escape character
\
from operator list.
-
Support for the new System
Keywords
and Subroutines
properties.
GB.FORM
ButtonBox
-
Draw the default background color correctly.
-
Clicking on the clear button triggers filtering immediately now.
ColorButton
-
Display the inner color the same way in all GUI components.
DateBox
-
Chinese language should be correctly supported now.
DateChooser
-
Handle mouse wheel events on time boxes better.
-
ShowWeek is a new property that toggles the display of weeks.
DirButton
-
Take the
Design
property into account.
DirChooser
-
Raise an
Uncompress
event when a custom compressed file is requested to be uncompressed.
-
Add an
UncompressFilter
property that defines a list of additional LIKE
regexp filters for custom compressed files.
-
Ask for overwriting selected file if in single selection mode and if not read-only.
DocumentView
-
Some fixes in property validation.
-
The useless
Layout.Orientation
property has been removed.
-
AutoCenter
has been renamed as Center
, Column
is now Columns
, Row
has been removed.
-
Setting
Center
property now correctly relayout the preview.
-
Rename
FirstVisibleDocument
and LastVisibleDocument
as FirstVisiblePage
and LastVisiblePage
.
-
Remove useless methods
MoveFirst()
, MoveLast()
and MoveTo()
.
-
Fix a possible infinite recursion in document layouting.
Expander
-
Disable animations, they are broken.
FileChooser
-
Raise an
Uncompress
event when a custom compressed file is requested to be uncompressed.
-
Add an
UncompressFilter
property that defines a list of additional LIKE
regexp filters for custom compressed files.
-
Ask for overwriting selected file if in single selection mode and if not read-only.
-
Hide the bookmark button and its separator accordingly.
-
Correctly disable the bookmark edit menu entry when there is no bookmark defined.
-
AutoExt is a new property that automatically sets the file extension according to the current filter.
FileView
-
Path
is a new read-only property that return the absolute path of the current selected file.
-
The first column now has a maximum width when it is resized at refresh.
-
Sort configuration is kept when the view is refreshed.
-
Ignore newlines when displaying the name of a file.
FontChooser
-
Define pangrams for some languages.
-
Add a
ShowFont
property that toggles the display of fonts inside the font tree.
-
Redesign GUI.
-
Implement a font thumbnail cache to speed up redrawing.
-
Support for fonts whose name is made of digits only.
-
Correctly handle focus when the layout changes.
IconPanel
-
Add a
RichtText
property to IconPanel tabs.
ListEditor
-
Better behavior in design mode.
MenuButton
-
Fix hidden shortcut button for GTK+ components.
-
Fix drawing for GTK+3.
-
Fix background color.
-
Make the background transparent.
MessageView
SidePanel
-
Hidden side panels have now a one pixel size. Because GTK+ components cannot handle zero-size controls at the moment.
SliderBox
-
Use the new
Slider.Orientation
property.
Spinner
-
Add a
Type
property that allows to choose between three different spinners.
-
Take the padding into account correctly.
-
Add a margin property that represents an inner padding of
Desktop.Scale
.
Stock
-
Add a debugging message that displays the icon theme.
-
Read the Mate desktop icon theme with the
dconf
tool, as apparently the mate tool has been deprecated.
-
Merge the detection of
gnome
, mate
and cinnamon
desktops.
-
Support for Cinnamon desktop.
-
Stock.Refresh()
now should refresh all application pictures associated with the application theme.
-
Update icons and add new ones.
SwitchButton
-
Keep color hue when transitioning between selected and normal background color.
TabPanel
-
Clicking on a tab button now gives it the focus.
-
Changing the
CloseButton
property now correctly updates the layout.
-
The tab close button is tiny now.
TableView
-
Columns automatic width is now a bit larger to support inner padding of TextBox control.
ToolPanel
-
Use the new
_DefaultText
multicontainer constant.
-
Fix animation and layout.
Wizard
-
Unset the
AutoResize
property on wizard title label, it breaks with GTK+ components.
Miscellaneous
-
Update translations.
-
Update control icons.
-
Update documentation.
GB.FORM.DIALOG
File dialog
-
Propagate the
AutoExt
property to the FileChooser.
-
Do not check for file existence. It is now done in the FileChooser control.
-
Set focus on FontChooser control at opening.
Password dialog
-
Do not raise the dialog.
-
The password dialog is not stacked above other windows anymore, but just raised on opening.
Miscellaneous
-
Update Chinese translation.
GB.FORM.EDITOR
-
Line numbers do not overlap expanders anymore when text editor has custom highlighting.
-
Draw the shadow after the margin again.
-
Margin is not transparent anymore.
-
Draw the matching brace under the cursor with an underline.
-
Use the standard background and foreground colors by default.
-
Do not stop keyboard event if the key is not handled by the editor.
-
Keep displaying the cursor and the matching braces when the editor does not have the focus.
-
Do not optimize character layouting for non-ASCII text, so that lines including non-western characters are displayed correctly whatever the font.
-
The matching character under the cursor does not blink anymore.
-
Use
FAST
on two heavy functions.
-
Fix shortcuts.
-
Avoid some computations when nothing is folded.
-
Access theme style properties directly.
-
Use the new
FindSorted()
array method in a function.
-
Highlight lines the later as possible: when the
Text
or SelectedText
property is read, or when the line is drawn.
-
Highlight immediately if the highlighting mode is known to not rewrite its text.
-
Checking the
Limit
property of a line now highlights until that line.
-
Current line is now highlighted with a light margin color.
-
Text wrapping now adapts its frequency to the computer speed.
-
Preview folding synchronization is now instantaneous.
-
GetSelectedLines()
is a new method that return an array of the selected lines.
-
SaveCursor()
now disables indent check and matching braces check until RestoreCursor()
is called.
-
Line number color is now correct when
LineOffset
property is used.
-
Fix
TextEditor.Styles
interface.
-
Add documentation.
-
Fix
GetIndent()
method.
-
Fix
TextEditor[].Paint()
method.
-
Fix multi-line marker painting.
-
Highlight current tabulation context with a thinner line using the margin limit color.
-
Scroll to the top left when reinitializing the view.
-
Alternate color is a bit less transparent.
-
Support for shell highlighting mode.
-
Redraw the TextEditor icon.
-
Middle click paste is now ignored if the editor is read-only.
-
Put TextEditor control in the
View
group.
-
Setting line flags does not reset the highlighting anymore.
GB.FORM.MDI
Toolbar
-
Configuration of toolbars having the same key but on different forms are now distinct.
-
Layout
is a new synonymous property of Settings
.
-
Don't hide separators followed by an expander.
-
It can now replace any container similar to "Panel" in the IDE form editor.
-
Don't use a specific dark theme background pattern for toolbars in configuration mode
-
Update the layout later on resize, to help GTK+ components.
Miscellaneous
-
Update Chinese translation.
GB.FORM.PRINT
-
Update Chinese translation.
-
Clicking of the selected view mode button now does not unselect it anymore.
-
Use the new DocumentView interface.
-
Use the new stock icons for preview page layout buttons.
GB.FORM.STOCK
-
Add many new icons and update old ones.
GB.FORM.TERMINAL
-
Take padding into account when computing the number of visible lines.
-
Support for
ESC [ 3 J
sequence (clear screen).
-
Paste UTF-8 into terminal.
-
Added
WindowCommands
boolean property to enable window manipulations escape sequences.
-
Printing an incorrect UTF-8 string does not lock the output anymore.
-
The padding is now correctly taking into account when computing the terminal character width.
-
The last lines are now automatically relayouted when the width of the terminal changes.
-
SelectedText
and Text
property now take into account line wrapping.
-
Text
property correctly takes into account line wrapping.
-
ShowLink
is a new property that toggles link management.
-
Click
is a new event raised when a link has been clicked.
-
Link
is a new property that returns an object for managing links.
-
Link
is a new event raised during mouse move for detecting links.
-
Support for file URL drops.
-
Do not handle the
Drop
event if the user has defined its own event handler.
-
Bell
is a new event that is raised when the terminal bells, and that overrides the default behaviour if handled.
-
Handle terminal bell with a screen flash.
-
Use a bit more readable yellow colors.
-
Update Chinese translation.
-
Update French translation.
-
Disable paste and clear menu entries on read-only terminals.
GB.GMP
-
Fix error message of
BigInt.ToString()
.
GB.GSL
-
Add statistic functions through a
Stat
property added to the Float[] class.
GB.GTK
Animation
-
Animation is a new class that represents an animated image.
Application
-
Fix a memory leak in the
Application.Restart
property.
-
Setting
Application.Font
to NULL
now resets the default font.
Button
-
Unmapped default or cancel buttons are now ignored.
-
The default and cancel buttons of all embedded forms of the current window are now taken into account.
-
Fix button click animation.
-
Draw buttons the same way as in QT components.
-
Text is not truncated anymore.
-
Disabled button icons are now correctly desaturated.
-
Add minimum size to buttons.
CheckBox
-
CheckBox.Invert
is a new property that put the check mark on the other side.
ComboBox
-
Setting the
List
property does not raise the Click
event anymore, like in Qt components.
-
Setting the
Index
property to -1
does not raise the Click
event anymore.
Container
-
Arrange contents only when mapped, as in QT components.
-
Fix containers
Indent
property.
-
Container children are not incorrectly shown in some cases anymore.
-
FindChild()
now takes UserContainer into account.
-
Fix arrangement of containers having the
AutoResize
property set.
-
Do not crash if expanded widgets change during arrangement.
-
Centered
is a new container property that centered its contents. It works for horizontal, vertical and fill arrangement only.
-
Fix a crash occuring if a container loses one of its children while arranging them.
-
Arrangement now behaves almost exactly like in QT components.
Control
-
Make
MoveResize()
method behave the same way as in QT components.
-
Modifying the
Expand
property does not trigger an arrangement anymore if the Ignore
property is set.
-
Void tooltips do not display anything anymore.
-
Widget tooltips now handle newlines and linefeeds the same way as in Qt.
-
Moving or resizing a control with Ignore property set does not trigger a arrangment anymore.
-
Fix
Refresh()
method when the update area is specified.
-
Fix
Lower()
and Raise()
methods.
-
Fix an uninitalized internal control flag.
-
Design
property has been implemented.
-
When changing the geometry of a control, the move is done before the resize, to get the same behaviour as the Qt components.
-
Reparent()
now correctly restores the control position in all cases.
-
Controls initial geometry is now the same as in Qt components.
-
Creating a control with a
NULL
container now raises an error instead of crashing.
-
Resizing a control now take the minimum size into account.
-
Fix
ScreenX
and ScreenY
properties.
-
Control resize now ignores new width or height if its container constraints it.
-
Fix deferred control deletion.
-
NoTabFocus
property now correctly handle proxies.
-
Showing or hiding a control does not trigger a parent arrangement if the
Ignore
property was set.
-
Initial widget size is always taken into account even if the parent arrange its contents.
-
Hide control before marking it destroyed, otherwise we may arrange an invalid object.
-
Compute control screen coordinates differently because of Wayland.
-
Controls cannot have a zero size anymore. It does not work.
Drag & drop
-
A control being dragged cannot be explicitely destroyed anymore.
-
DragLeave
event is now always raised before entering another drop target.
DrawingArea
-
Paint default color is now its foreground color.
Event management
-
Mouse key modifiers properties are now available outside of Mouse event handlers as in Qt components.
-
Make keyboard data available the same way as in Qt components.
-
Handling the
Menu
event does not prevent the native menus of TextBox and TextArea to popup anymore.
-
Emit keyboard events from the top-level window when no control has the focus.
-
Button grab is now automatically released when a new event loop is started.
-
Keyboard events are now propagated to the parent containers.
-
Mouse.StartX
and Mouse.StartY
are now always available during mouse events.
-
Workaround the default accelerator management of GTK, so that they are triggered only if no other widget handle the keyboard event.
-
Handle key events before global shortcuts only for GtkEntry and GtkTextView widgets.
-
Fix keyboard event management.
-
Fix management of
Enter
and Leave
events.
-
Lazy initialization of input methods for widgets having none by default.
-
Fix management of default and cancel buttons shortcuts.
-
Do not propagate key events if the target widget has been unrealized.
Focus management
-
Fix focus management so that it behaves like Qt.
-
Handle focus traversal our owns way.
-
Focus navigation now ignore unmapped controls.
-
Do not lose control focus when the control is temporarily hidden because it is too small or being restacked.
-
Ignore internal focus moves that do not target the official active control.
Font management
-
Cache font metrics to speed up some font properties.
-
Font.TextHeight()
now works the same way as in Qt components.
-
Compute font height in a way compatible with older versions of Pango.
-
Font size computation takes into account Pango ink rectangle.
-
Font.RichTextWidth()
now takes a width optional argument like RichTextHeight()
.
-
Font.RichTextSize()
is a new method that returns the rich text width and height as a rectangle.
-
Font.TextSize()
is a new method that returns the text width and height as a rectangle.
-
Support for fonts whose name is made of digits only. In that case, the family name in Font string representation must be enclosed with double quotes.
-
Recompute font height when the Bold or Italic properties change too.
Form
-
Load()
now behaves correctly if the static instance is already created.
Frame
-
Remove Frame container, now implemented in Gambas.
Label
-
Remove Label control, now implemented in Gambas.
Menu
-
Shortcuts are now automatically disabled when the menu or one if its parent is disabled.
-
Fix shortcut management.
-
Fix Menu proxy management.
-
Menu
Show
event now behaves as expected, and allow recreating the menu contents during its event handler.
-
Fix menu shortcuts.
-
Fix management of menus and make them behave like in Qt components.
-
Checking or unchecking a menu does not raise the
Click
event anymore.
-
Menu having children cannot be checked anymore.
-
Icons of disabled menus are now desaturated.
-
Fix crash when clicking on a top-level menu.
-
Menu
Click
event is now delayed, like in Qt components.
-
Fix menu layouting routine.
-
Fix menu icons that were sometimes too small.
-
Fix how menus are destroyed.
-
Hidden menu bar is now moved in the negative horizontal coordinates so that a click on the CSD title bar does not see it.
-
Radio menu are correctly managed now.
-
Fix menu deferred deletion.
MovieBox
-
Remove MovieBox control, now implemented in Gambas.
Painting
-
Drawing a null rich text string does not crash anymore.
-
Fix management of
Paint.Font
. Underline
and Strikeout
properties are now correctly taken into account.
-
Save drawing context when running a style method.
-
Style drawing routines now work correctly on UserControl.
Panel
-
Arrangement is now correctly triggered when the background color is set.
Printer
-
Setting the
OutputFile
property to a void string does not toggle printing to file anymore.
RadioButton
-
RadioButton.Invert
is a new property that put the radio button on the other side.
Rich text management
-
Allow the value of markup attributes not to be embedded between quotes in rich text.
-
Fix conversion to pango markup language when a rich text markup has spaces after the
<
character.
-
<p>
in rich text is replaced by a single line break.
-
Replace
<code>
by <tt>
in rich text.
-
Rich text with attribute values containing spaces does not crash anymore.
Screen management
-
Screen.ResolutionX
and Screen.ResolutionY
are two new properties that return the resolution of a screen.
Separator
-
Remove Separator control, now implemented in Gambas
ScrollBar
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Add orientation constants.
-
Fix ScrollBar resize behavior.
-
Fix declaration of
ScrollBar.DefaultSize
property.
Slider
-
Max
property works correctly again.
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Fix Slider resize behavior.
-
Add minimum size.
TabStrip
-
Fix client area size computation.
TextArea
-
Fix minimum size when scrollbars are disabled.
-
TextArea now have no minimum size if they have no scrollbars.
TextBox
TextLabel
-
Remove TextLabel control, now implemented in Gambas.
ToolButton
-
Do not steal the focus anymore when clicked.
-
Draw button the same way as in QT components.
UserControl
-
UserControl now can paint itself through a
UserControl_Draw
method.
-
Use the new
GB_FUNCTION
structure to optimize support of UserControl_*
pseudo event handlers.
-
Support for the
Change
pseudo event.
-
Call
UserControl_Font()
handler when the UserControl font changes.
Window
-
Lower()
and Raise()
methods now work as expected.
-
MinWidth
and MinHeight
are two new properties that allow to define the minimum size of a resizable window.
-
Windows can now take focus by default.
-
Close management is now similar to QT components' one.
-
Fix an uninitialized flag in
gmainwindow.cpp
.
-
Popup the same window several times now works correctly.
-
Fix keyboard and mouse grab when opening a popup.
-
Fix popup management.
-
Fix spurious resizing of embedded windows having menus.
-
Deleting a window now raises the
Close
event immediately, like in Qt components.
-
Fix explicit destroying of non-persistent windows.
-
Window.Resize()
now works on non-resizable windows.
-
The size of a window is now always the size of its contents, without the decorations.
-
Fix
Window.Background
property behavior.
-
Resizable utility windows now have a minimum size like QT components.
-
Closing a window during the
Open
event now works like in Qt.
-
Do not post window resize events, because the window can be destroyed in the meantime.
-
Fix management of default minimum size of modal and utility windows.
-
Window layout management now should work both on X11 and Wayland.
-
Fix enumeration of the controls of a specific window.
-
When opening a modal dialog or a popup while a mouse button is pressed, generate a fake
MouseUp
event because the true one is eaten by the modal dialog or the popup.
Miscellaneous
-
Get rid of
glib
deprecation warnings.
-
Get rid of the
g_typ
gControl variable.
-
Watcher objects now correctly follow controls that recreate their inner widget.
-
React to widget theme change.
-
Remove deprecated Stock class.
-
Get rid of unused code of native message boxes.
-
Desktop.Platform
is a new property that returns the current platform in use.
-
Fix GTK+ warnings and errors when freeing stuff before the GUI is initialized.
-
Request
SIGCHLD
handler check because of glib
.
-
WAIT
instruction now processes all pending events.
GB.GTK3
Animation
-
Animation is a new class that represents an animated image.
Application
-
Fix a memory leak in the
Application.Restart
property.
-
Setting
Application.Font
to NULL
now resets the default font.
-
Setting
Application.Font
is now almost instantaneous.
Button
-
Unmapped default or cancel buttons are now ignored.
-
The default and cancel buttons of all embedded forms of the current window are now taken into account.
-
Fix button click animation.
-
Draw buttons the same way as in QT components.
-
Text is not truncated anymore.
-
Disabled button icons are now correctly desaturated.
-
Add minimum size to buttons.
CheckBox
-
CheckBox.Invert
is a new property that put the check mark on the other side.
Color management
-
Fix button, tooltip and link system colors and support more themes.
ComboBox
-
Setting the
List
property does not raise the Click
event anymore, like in Qt components.
-
Setting the
Index
property to -1
does not raise the Click
event anymore.
-
Use GTK+ internals to make
Border
, Foreground
and Background
properties work as expected.
-
No padding in borderless combobox.
-
Fix mouse cursor handling.
-
Don't hide background if borderless.
-
Read-only combo-boxes do not have inner vertical padding anymore.
-
Editable combo-boxes having a small width now behave correctly.
Container
-
Arrange contents only when mapped, as in QT components.
-
Fix containers
Indent
property.
-
Container children are not incorrectly shown in some cases anymore.
-
Fix arrangement of containers having the
AutoResize
property set.
-
Do not crash if expanded widgets change during arrangement.
-
Centered
is a new container property that centered its contents. It works for horizontal, vertical and fill arrangement only.
-
Fix a crash occuring if a container loses one of its children while arranging them.
-
Fix
ClientWidth
and ClientHeight
computation.
-
Arrangement now behaves almost exactly like in QT components.
Control
-
Make
MoveResize()
method behave the same way as in QT components.
-
Modifying the
Expand
property does not trigger an arrangement anymore if the Ignore
property is set.
-
Void tooltips do not display anything anymore.
-
Widget tooltips now handle newlines and linefeeds the same way as in Qt.
-
Moving or resizing a control with
Ignore
property set does not trigger a arrangment anymore.
-
Fix
Refresh()
method when the update area is specified.
-
Fix
Lower()
and Raise()
methods.
-
Fix an uninitalized internal control flag.
-
The
Design
property has been implemented.
-
When changing the geometry of a control, the move is done before the resize, to get the same behaviour as the Qt components.
-
Reparent()
correctly moves the control if the parent is not changed.
-
Controls initial geometry is now the same as in Qt components.
-
Creating a control with a
NULL
container now raises an error instead of crashing.
-
Resizing a control now take the minimum size into account.
-
Fix
ScreenX
and ScreenY
properties.
-
Control resize now ignores new width or height if its container constraints it.
-
Fix deferred control deletion.
-
The
NoTabFocus
property now correctly handle proxies.
-
Showing or hiding a control does not trigger a parent arrangement if the
Ignore
property was set.
-
Initial widget size is always taken into account even if the parent arrange its contents.
-
Hide control before marking it destroyed, otherwise we may arrange an invalid object.
-
Compute control screen coordinates differently because of Wayland.
-
Allow other GTK+3 components to patch their widget.
-
Fix GTK+3
get_preferred_height_and_baseline_for_width
overriding.
-
Define the minimum size of controls better, so that less GTK+ spurious warnings are emitted.
-
Resize()
now correctly arranges parent even if the control was too small to be visible.
-
Controls cannot have a zero size anymore. It does not work.
Drag & drop
-
A control being dragged cannot be explicitely destroyed anymore.
-
DragLeave
event is now always raised before entering another drop target.
DrawingArea
-
Paint default color is now its foreground color.
-
Drawing is clipped by the control border now.
-
Correctly restore drawing context when an error is raised during the
Draw
event handler.
Event management
-
Mouse key modifiers properties are now available outside of Mouse event handlers as in Qt components.
-
Make keyboard data available the same way as in Qt components.
-
Handling the
Menu
event does not prevent the native menus of TextBox and TextArea to popup anymore.
-
Emit keyboard events from the top-level window when no control has the focus.
-
Button grab is now automatically released when a new event loop is started.
-
Keyboard events are now propagated to the parent containers.
-
Mouse.StartX
and Mouse.StartY
are now always available during mouse events.
-
Workaround the default accelerator management of GTK, so that they are triggered only if no other widget handle the keyboard event.
-
Handle key events before global shortcuts only for GtkEntry and GtkTextView widgets.
-
Fix keyboard event management.
-
Fix management of
Enter
and Leave
events.
-
Lazy initialization of input methods for widgets having none by default.
-
Fix management of default and cancel buttons shortcuts.
-
Do not propagate key events if the target widget has been unrealized.
Focus management
-
Fix focus management so that it behaves like Qt.
-
Handle focus traversal our owns way.
-
Focus navigation now ignore unmapped controls.
-
Don't hide TextBox or TextArea internal window if the control has the focus.
-
Do not lose control focus when the control is temporarily hidden because it is too small or being restacked.
-
Ignore internal focus moves that do not target the official active control.
Font management
-
Cache font metrics to speed up some font properties.
-
Font.TextHeight()
now works the same way as in Qt components.
-
Compute font height in a way compatible with older versions of Pango.
-
Font size computation takes into account Pango ink rectangle.
-
Font.RichTextWidth()
now takes a width optional argument like RichTextHeight()
.
-
Font.RichTextSize()
is a new method that returns the rich text width and height as a rectangle.
-
Font.TextSize()
is a new method that returns the text width and height as a rectangle.
-
Support for fonts whose name is made of digits only. In that case, the family name in Font string representation must be enclosed with double quotes.
-
Recompute font height when the Bold or Italic properties change too.
-
Implement a workaround for Pango not being able to display the Gambas font correctly.
Form
-
Load()
now behaves correctly if the static instance is already created.
Frame
-
Remove Frame container, now implemented in Gambas.
Label
-
Remove Label control, now implemented in Gambas.
Menu
-
Shortcuts are now automatically disabled when the menu or one if its parent is disabled.
-
Fix shortcut management.
-
Fix Menu proxy management.
-
Menu
Show
event now behaves as expected, and allow recreating the menu contents during its event handler.
-
Fix menu shortcuts.
-
Fix management of menus and make them behave like in Qt components.
-
Checking or unchecking a menu does not raise the
Click
event anymore.
-
Menu having children cannot be checked anymore.
-
Icons of disabled menus are now desaturated.
-
Fix crash when clicking on a top-level menu.
-
Menu
Click
event is now delayed, like in Qt components.
-
Fix menu layouting routine.
-
Fix menu icons that were sometimes too small.
-
Fix how menus are destroyed.
-
Hidden menu bar is now moved in the negative horizontal coordinates so that a click on the CSD title bar does not see it.
-
Radio menu are correctly managed now.
-
Fix menu deferred deletion.
-
Fix indicator drawing.
-
New menu positioning functions are available since GTK+ 3.22 only.
-
Menu.Popup()
does not print GTK+ warnings anymore when run outside of an event handler.
-
Fix popup menus that didn't pop up with some widget themes like
Yaru
.
-
Fix
Menu.Popup()
on Wayland.
MovieBox
-
Remove MovieBox control, now implemented in Gambas.
Painting
-
Drawing a null rich text string does not crash anymore.
-
Fix management of
Paint.Font
. Underline
and Strikeout
properties are now correctly taken into account.
-
Save drawing context when running a style method.
-
Fix
Style.PaintCheck()
and Style.PaintOption()
.
Platform management
-
Add support for specific platforms: X11 & Wayland.
-
Desktop.Platform
is a new property that returns the current platform in use.
-
The
GB_GUI_PLATFORM
environment variable allows to override the default platform.
-
Do not include wayland specific includes if
GDK_WINDOWING_WAYLAND
is not defined.
Printer
-
Setting
OutputFile
property to a void string does not toggle printing to file anymore.
RadioButton
-
RadioButton.Invert
is a new property that put the radio button on the other side.
Rich text management
-
Allow the value of markup attributes not to be embedded between quotes in rich text.
-
Fix conversion to pango markup language when a rich text markup has spaces after the
<
character.
-
<p>
in rich text is replaced by a single line break.
-
Replace
<code>
by <tt>
in rich text.
-
Rich text with attribute values containing spaces does not crash anymore.
Screen management
-
Screen.ResolutionX
and Screen.ResolutionY
are two new properties that return the resolution of a screen.
Separator
-
Remove Separator control, now implemented in Gambas
ScrollBar
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Add orientation constants.
-
Fix ScrollBar resize behavior.
-
Fix declaration of
ScrollBar.DefaultSize
property.
Slider
-
Max
property works correctly again.
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Fix Slider resize behavior.
-
Add minimum size.
Style sheet management
-
Globally override minimum size of buttons in CSS stylesheet.
-
Update control style sheet only if the control is visible.
-
Don't use CSS for the background color of controls that do not need it.
-
Make stylesheet global, so that styling sub-node work everytime.
-
Don't use css stylesheets on containers having no child that draw nothing by themselves.
TabStrip
-
Fix client area size computation.
-
Fix TabStrip control.
-
Workaround GTK+ layouting errors on TabStrip.
TextArea
-
Fix minimum size when scrollbars are disabled.
-
TextArea now have no minimum size if they have no scrollbars.
-
Fix
Font
and Background
properties.
-
Fix mouse cursor handling.
TextBox
-
Add minimum size.
-
Fix
Border
property.
-
Fix mouse cursor handling.
-
Don't hide background if borderless.
-
Minimum size is correctly updated when the
Border
property changes.
TextLabel
-
Remove TextLabel control, now implemented in Gambas.
ToolButton
-
Do not steal the focus anymore when clicked.
-
Draw button the same way as in QT components.
UserControl
-
UserControl now can paint itself through a
UserControl_Draw
method.
-
Use the new GB_FUNCTION structure to optimize support of
UserControl_*
pseudo event handlers.
-
Support for the
Change
pseudo event.
-
Call
UserControl_Font()
handler when the UserControl font changes.
Window
-
Lower()
and Raise()
methods now work as expected.
-
MinWidth
and MinHeight
are two new properties that allow to define the minimum size of a resizable window.
-
Windows can now take focus by default.
-
Close management is now similar to QT components' one.
-
Fix an uninitialized flag in
gmainwindow.cpp
.
-
Popup the same window several times now works correctly.
-
Fix keyboard and mouse grab when opening a popup.
-
Fix popup management.
-
Fix spurious resizing of embedded windows having menus.
-
Deleting a window now raises the
Close
event immediately, like in Qt components.
-
Fix explicit destroying of non-persistent windows.
-
The size of a window is now always the size of its contents, without the decorations.
-
Fix
Window.Background
property behavior.
-
Resizable utility windows now have a minimum size like QT components.
-
Closing a window during the
Open
event now works like in Qt.
-
Do not post window resize events, because the window can be destroyed in the meantime.
-
Fix management of default minimum size of modal and utility windows.
-
Window layout management now should work both on X11 and Wayland.
-
Fix enumeration of the controls of a specific window.
-
When opening a modal dialog or a popup while a mouse button is pressed, generate a fake
MouseUp
event because the true one is eaten by the modal dialog or the popup.
-
Embedded windows now correctly raise their
Resize
event.
-
Support for client-side decorations.
-
Popups now work on Wayland compositors.
Miscellaneous
-
Get rid of the
g_typ
gControl variable.
-
Watcher objects now correctly follow controls that recreate their inner widget.
-
React to widget theme change.
-
Remove deprecated Stock class.
-
Get rid of unused code of native message boxes.
-
Fix GTK+ warnings and errors when freeing stuff before the GUI is initialized.
-
Request
SIGCHLD
handler check because of glib
.
-
WAIT
instruction now processes all pending events.
-
Get rid of many deprecated GTK+ API (not all yet).
-
Fix compilation on GTK+ < 3.22.
-
Fix a buffer overflow that makes the component crash on aarch64.
-
Enhance
gb.gtk3
API for child components like gb.gtk3.webview
.
GB.GTK3.WAYLAND
-
This is the GTK+3 Wayland platform component.
GB.GTK3.WEBVIEW
-
New web browser component based on WebKitGTK.
GB.GTK3.X11
-
This is the GTK+3 X11 platform component.
GB.GUI
-
Enhance debugging messages.
-
Use
$XDG_CURRENT_DESKTOP
before $KDE_FULL_SESSION
to know if we are running KDE.
-
Do not crash if
$XDG_CURRENT_DESKTOP
is not defined.
GB.GUI.BASE
Action
-
Setting action tooltip does not crash anymore on menus.
ColumnView
-
Items have now a
Tag
property.
Frame
-
Frame is now implemented in Gambas.
-
Add an
Alignment
property for the relative position of the title and the frame top border.
-
Draw border differently to avoir differences in coordinates rounding between Qt and Cairo.
GridView
-
Columns have now a
Tag
property.
-
Cells have now a
Tag
property.
-
Do not raise the
MouseDown
event twice.
HSplit
-
This control is now deprecated. Use Splitter instead.
IconView
-
Items have now a
Tag
property.
-
The renaming widget does not propagate the ESC key anymore.
Label
-
This control is now implemented in Gambas.
ListBox
-
Click event is now raised on the next event loop.
-
Setting the
Index
property with an incorrect value now raise an explicit error.
ListView
-
Items have now a
Tag
property.
-
The left part of the items is now clickable as expected.
Message
-
Text is not vertically truncated anymore when using a GTK+ component.
-
Rework the message box. Copying the message is now done through a popup menu.
-
Focus on the cancel button by default.
-
The message can only be closed by clicking on a button.
-
Provide default buttons if none are specified.
-
Default buttons are now replaced as soon as at least one button is specified.
-
Test a new look for the message boxes.
-
Add the title to the message box, and make it movable.
-
ColoredButtons
is a new property that defines if the buttons should be colored or not.
-
Style
is a new property that defines the message box style. At the moment, "default"
and "flat"
are supported.
-
Message.Warning()
now has only one "OK" default button.
MovieBox
-
This control is now implemented in Gambas.
Paint
-
Paint.TrimText()
and Paint.TrimRichText()
now return a null string if the specified maximum width is too low.
-
Paint.TrimRichText()
now returns the text without ...
if the maximum width is big enough.
-
Paint.TrimRichText()
now returns a void string if the maximum width is negative or null.
-
Paint.TrimRichText()
now correctly trim void markups.
-
Paint.TrimText()
now trims at each character.
-
Use
Font.TextHeight()
instead of Font.Height
in Paint.TrimText()
and Paint.TrimRichText()
, because some fonts can have a negative leading for some sizes in Qt!
Picture
-
Picture.Load()
was overriden so that it can deal with "icon:/"
paths, but without cache, dark theme or right-to-left support like Picture static array accessor.
-
Picture.Refresh()
reload all application pictures coming from the stock icons.
-
Picture.Stretch()
is a new button that stretches a picture by internally converting it to an Image first.
PictureBox
-
Reimplement the deprecated
Cached
property.
-
Use the new UserControl
Draw
pseudo-event.
ProgressBar
-
Use the new UserControl pseudo-events instead of an embedded DrawingArea.
ScrollArea
-
Delete shadows differently to better support GTK+.
-
Remove some useless lines in scrollbar management.
-
Add a
NoAnimation
property to disable the scrolling animation explicitly.
-
Use the new
ScrollBar.Orientation
property.
-
Clip children for GTK+2 by forcing control background.
-
Always defer the contents size computation to the next event loop.
Separator
-
Use the new painting pseudo-event of UserControl.
SpinBox
-
The
Background
property now works as expected.
-
Start the auto-repeat timer before raising the
Change
event.
-
Draw the arrows at the same vertical position whether there is a border or not.
-
If
ReadOnly
is set, the SpinBox is grayed out, and the arrows are hidden.
-
ShowSign
is a new property that adds the "+" character to the positive numbers.
Splitter
-
Splitter is a new container that replaces HSplit and VSplit. Its orientation is defined by its
Arrangement
property.
TextLabel
-
This control is now implemented in Gambas.
TreeView
-
Renaming an item automatically cancel any other pending item renaming.
-
Eat the key shortcuts used:
F2
, +
, -
and SPACE
.
-
Modifying the font of an item now correctly updates its height.
-
Items have now a
Tag
property.
-
TreeView item height is now writable.
-
Fix generation of
MouseDown
events.
-
Collapsing an item does not scroll the view to the current selected item anymore.
-
TreeView item has a new
Depth
property that returns the depth of the item.
-
Indent
is a new property that returns the indent width.
-
Draw
is a new event that allows to override default tree item drawing.
-
Removing an item or clearing the view now correctly update the list of selected items.
VSplit
-
This control is now deprecated. Use Splitter instead.
Miscellaneous
-
Update Chinese translation.
-
Shortcut.FromKey()
now uses an internal cache.
-
Shortcut.FromKey()
now does not duplicate a modifier key with its modifier prefix (i.e. it does not return "Shift+ShiftKey"
anymore but just "ShiftKey"
).
-
Add some documentation.
-
Hide an apparently unused public function.
GB.GUI.OPENGL
GB.GUI.QT
-
Enhance debugging messages.
-
Use
$XDG_CURRENT_DESKTOP
before $KDE_FULL_SESSION
to know if we are running KDE.
-
Do not crash if
$XDG_CURRENT_DESKTOP
is not defined.
GB.GUI.QT.OPENGL
-
Fix error message choice.
GB.GUI.QT.WEBKIT
-
Fix error message choice.
GB.GUI.TRAYICON
-
The
TrayIcon.Picture
property kind is now Picture:NoCache
so that the trayicon icon is not modified when the current theme is dark.
-
Support for the
GB_GUI_TRAYICON_NO_DBUS
environment variable.
GB.GUI.WEBVIEW
-
New QT/GTK+ web browser switcher component.
-
Fix error message choice.
GB.IMAGE
-
Add more color constants.
GB.JIT
-
Use
-march=native -mtune=native
to compile JIT translated code.
-
Don't crash if no compiler is found, but just tell the interpreter.
-
Fix the default NULL value for objects. JIT functions returning NULL objects as default value do not crash anymore.
-
Make a project icon.
GB.MAP
-
Map: Force Layers reloading when the
Refresh
method is called.
-
_MapShape: Remove reloading when removing a shape object.
-
Add a new
Header
property to _MapTile Class to set up the HTTP client header.
GB.MARKDOWN
-
Markdown.LinkAnchors
is a new property that insert anchors for each line of the markdown text, but not in the index.
GB.MEDIA.FORM
-
MediaView: Ensure that the video DrawingArea has its own window on GTK+ components.
-
Use a 64x64 control icon.
GB.NCURSES
-
Screen.Suspend
and Screen.Resume
are two new methods which allow to temporarily leave ncurses mode, restoring the original tty settings, and to come back, restoring ncurses's tty settings and screen content.
GB.NET
SerialPort
-
Add a
Clear()
method that clears the buffers specified in its argument. Use gb.Read
for the input buffer and gb.Write
for the output buffer.
Socket
-
Automatically create an internal timer to handle connection timeout.
-
Net.ConnectionTimeout
is a new status constant indicating a connection timeout.
UdpSocket
-
Add multicast support.
-
Writing does not crash anymore if the target is not defined.
-
Fix declaration of
SourcePath
property.
GB.NET.SMTP
-
Do not encode newline characters as newlines (!) in quoted encoding. See
RFC 2049
at the end of page #10.
GB.PDF
-
Fix poppler version detection.
GB.POPPLER
-
PdfDocument:
Antialiasing
, TextAntialiasing
and TextHinting
are three new properties that define rendering hints. All are TRUE by default, except TextHinting
.
-
Use
poppler-cpp
for rendering, and poppler-glib
for the other features.
GB.QT4
Animation
-
Animation is a new class that represents an animated image.
CheckBox
-
CheckBox.Invert
is a new property that put the check mark on the other side.
ComboBox
-
PlaceHolder
property does not crash anymore on read-only ComboBox.
Container
-
Fix containers
Indent
property.
-
Fix foreground color inheritance through containers.
-
Do not crash if expanded widgets change during arrangement.
-
Centered
is a new container property that centered its contents. It works for horizontal, vertical and fill arrangement only.
Control
-
Showing a control with
Ignore
property set does not trigger a parent arrangement anymore.
-
Rework
Design
property management so that it works better.
-
Rework support of
Background
and Foreground
colors.
-
Control resize now ignores new width or height if its container constraints it.
-
Initial widget size is always taken into account even if the parent arrange its contents.
-
Avoid arrangements in some cases.
-
Ignore resize when the parent container has
Fill
arrangement.
DrawingArea
-
Paint default color is now its foreground color.
Font management
-
Fix
Font.TextHeight
implementation that checked incorrectly for optional arguments.
-
Font.RichTextWidth()
now takes a width optional argument like RichTextHeight()
.
-
Font.RichTextSize()
is a new method that returns the rich text width and height as a rectangle.
-
Font.TextSize()
is a new method that returns the text width and height as a rectangle.
-
Support for fonts whose name is made of digits only. In that case, the family name in Font string representation must be enclosed with double quotes.
-
Font.Height
now uses the same metrics as Font.TextHeight()
.
Frame
-
Remove Frame control, now implemented in Gambas.
Label
-
Remove Label control, now implemented in Gambas.
Menu
-
Never export the menu bar through DBus, it crashes on Mate.
MovieBox
-
Remove MovieBox control, now implemented in Gambas.
Painting
-
Disabled state is now correctly taken into account by style drawing methods.
-
Fix raised borders for some styles.
-
All Paint text routines now workaround the font assignment bug.
-
Border drawing routine now preserves paint color.
RadioButton
-
RadioButton.Invert
is a new property that put the radio button on the other side.
Screen
-
Screen.ResolutionX
and Screen.ResolutionY
are two new properties that return the resolution of a screen.
ScrollBar
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Add orientation constants.
Separator
-
Remove Separator control, now implemented in Gambas.
Slider
-
Orientation
is a new property that allows to define the orientation explicitly.
TabStrip
-
TabStrip should not crash anymore with an undefined symbol.
TextArea
-
Setting background and foreground colors now should work correctly in all cases.
TextLabel
-
Remove TextLabel control, now implemented in Gambas.
UserControl
-
UserControl now can paint itself through a
UserControl_Draw
method.
-
Use the new
GB_FUNCTION
structure to optimize support of UserControl_*
pseudo event handlers.
-
Support for the
Change
pseudo event.
-
Call
UserControl_Font()
handler when the UserControl font changes.
Window
-
MinWidth
and MinHeight
are two new properties that allow to define the minimum size of a resizable window.
-
Explicitly hidden startup forms do not popup at startup anymore.
-
Fix window x11 properties initialization.
-
Fix management of default minimum size of modal and utility windows.
-
When opening a modal dialog or a popup while a mouse button is pressed, generate a fake
MouseUp
event because the true one is eaten by the modal dialog or the popup.
Miscellaneous
-
Remove some useless X11-related includes.
-
Desktop.Platform
is a new property that returns the current platform (always "x11"
).
-
Try to fix compilation on
alpine
.
-
Set application desktop file name to the application name.
-
Don't set the QDialog flag on modal dialogs. It makes Qt dizzy, and can even freeze Gnome on Wayland.
-
Don't leak a control if we quit between a
MouseDown
and a MouseUp
event.
GB.QT4.WEBVIEW
-
New web browser component based on QtWebKit.
GB.QT5
Animation
-
Animation is a new class that represents an animated image.
CheckBox
-
CheckBox.Invert
is a new property that put the check mark on the other side.
ComboBox
-
PlaceHolder
property does not crash anymore on read-only ComboBox.
Container
-
Fix containers
Indent
property.
-
Fix foreground color inheritance through containers.
-
Do not crash if expanded widgets change during arrangement.
-
Centered
is a new container property that centered its contents. It works for horizontal, vertical and fill arrangement only.
Control
-
Showing a control with
Ignore
property set does not trigger a parent arrangement anymore.
-
Rework
Design
property management so that it works better.
-
Rework support of
Background
and Foreground
colors.
-
Control resize now ignores new width or height if its container constraints it.
-
Initial widget size is always taken into account even if the parent arrange its contents.
-
Avoid arrangements in some cases.
-
Ignore resize when the parent container has
Fill
arrangement.
DrawingArea
-
Paint default color is now its foreground color.
Font management
-
Fix
Font.TextHeight
implementation that checked incorrectly for optional arguments.
-
Font.RichTextWidth()
now takes a width optional argument like RichTextHeight()
.
-
Font.RichTextSize()
is a new method that returns the rich text width and height as a rectangle.
-
Font.TextSize()
is a new method that returns the text width and height as a rectangle.
-
Support for fonts whose name is made of digits only. In that case, the family name in Font string representation must be enclosed with double quotes.
-
Font.Height
now uses the same metrics as Font.TextHeight()
.
Frame
-
Remove Frame control, now implemented in Gambas.
Label
-
Remove Label control, now implemented in Gambas.
Menu
-
Never export the menu bar through DBus, it crashes on Mate.
MovieBox
-
Remove MovieBox control, now implemented in Gambas.
Painting
-
Disabled state is now correctly taken into account by style drawing methods.
-
Fix raised borders for some styles.
-
All Paint text routines now workaround the font assignment bug.
-
Border drawing routine now preserves paint color.
Platform management
-
Support for platform components.
-
Remove direct X11 dependencies.
-
Remove some useless X11-related includes.
-
Desktop.Platform
is a new property that returns the current platform.
-
Better support of popups when run on Wayland.
-
The
GB_GUI_PLATFORM
environment variable allows to override the default platform.
-
Don't try to activate windows on Wayland, it does not work.
-
The default resolution on Wayland is 96 DPI instead of 72 DPI.
RadioButton
-
RadioButton.Invert
is a new property that put the radio button on the other side.
Screen
-
Screen.ResolutionX
and Screen.ResolutionY
are two new properties that return the resolution of a screen.
ScrollBar
-
Orientation
is a new property that allows to define the orientation explicitly.
-
Add orientation constants.
Separator
-
Remove Separator control, now implemented in Gambas.
Slider
-
Orientation
is a new property that allows to define the orientation explicitly.
TabStrip
-
TabStrip should not crash anymore with an undefined symbol.
TextArea
-
Setting background and foreground colors now should work correctly in all cases.
TextLabel
-
Remove TextLabel control, now implemented in Gambas.
UserControl
-
UserControl now can paint itself through a
UserControl_Draw
method.
-
Use the new
GB_FUNCTION
structure to optimize support of UserControl_*
pseudo event handlers.
-
Support for the
Change
pseudo event.
-
Call
UserControl_Font()
handler when the UserControl font changes.
Window
-
MinWidth
and MinHeight
are two new properties that allow to define the minimum size of a resizable window.
-
Explicitly hidden startup forms do not popup at startup anymore.
-
Fix management of default minimum size of modal and utility windows.
-
When opening a modal dialog or a popup while a mouse button is pressed, generate a fake
MouseUp
event because the true one is eaten by the modal dialog or the popup.
-
Window properties are correctly set on Wayland now.
Miscellaneous
-
Try to fix compilation on
alpine
.
-
Set application desktop file name to the application name.
-
Don't set the QDialog flag on modal dialogs. It makes Qt dizzy, and can even freeze Gnome on Wayland.
-
Don't leak a control if we quit between a
MouseDown
and a MouseUp
event.
-
Breeze and oxygen theme fixes should not crash anymore.
-
Do not crash when quitting if the GUI has not been initialized.
-
Fix compilation on Qt < 5.7.
GB.QT5.WAYLAND
-
This is the QT5 Wayland platform component.
GB.QT5.WEBVIEW
-
New web browser component based on QtWebEngine.
GB.QT5.X11
-
This is the QT5 X11 platform component.
-
Do not use a deprecated API to grab the screen.
GB.REPORT
-
Rename a duplicated class that prevented the project to be opened.
GB.REPORT2
Report
-
Use the new
_DefaultText
multicontainer constant.
-
Report.Print()
now works correctly whatever the toolkit or the printer.
-
New
Path
property that allows to define the output file.
-
Report now does not inherit ReportSection anymore.
ReportView
-
Use the new DocumentView interface.
-
Checking or unchecking the grayscale checkbox now correctly refreshes the preview.
-
Use the new stock icons for page layout buttons.
Miscellaneous
-
Update Chinese translation.
-
Redraw the ReportSvgImage control icon.
GB.SCANNER
-
Remove empty entry in list.
-
Better progress tracking.
-
Use
pnm
format instead of jpeg
to avoid libjpeg
problems.
GB.SDL2
-
By default, the SDL2
wayland
video driver is used if the WAYLAND_DISPLAY
environment variable exists.
-
The
GB_GUI_PLATFORM
environment variable allows to select the platform between x11
or wayland
.
GB.SETTINGS
-
Remove a debugging message.
-
Settings files are now saved in a more reliable way, without locking, using the
MOVE … KILL
instruction.
-
Add documentation.
GB.TERM.FORM
-
Update Chinese translation.
-
Make that experimental component exclude any other GUI component.
GB.TEST
-
Remove the marking of some string as translatable which are just formats, like
"&1: &2"
.
-
Fix a typo in an help comment.
-
Ignore case of method names of test fixtures.
-
Improve diagnostics of
Approximate
and RelativeApproximate
assertions, showing the original values too.
-
Report
Error.Where
on error and crash.
-
Test.BailOut()
now raises an error to quit later, instead of quitting immediately. That avoids circular references warning.
-
Use dot instead of colon in TAP output for
"testmodule.testmethod"
.
-
Prints line numbers in TAP output so that the IDE can create clickable links to the code.
GB.UTIL
-
Update Chinese translation.
-
Add a new rule to
String.ToPhonetic()
to deal with "mpt"
and "mt"
patterns.
-
Add documentation.
GB.UTIL.WEB
-
Url.Query.Remove()
is a new method for removing an argument from the query of an URL.
GB.WEB
-
Response.SetCookie()
now sets the SameSite
cookie property to Lax
as Firefox wants.
-
Store the cookie path inside the session, and use it when removing the cookie.
-
Add
"SameSite=Lax"
when removing the cookie.
-
Decode
+
as spaces in the query part of forms using application/x-www-form-urlencoded
mimetype.
-
Fix a possible crash in
Session.Abandon
when using sqlite sessions.
GB.WEB.FEED
-
Update Chinese translation.
GB.WEB.FORM
-
Update Chinese translation.
GB.WEB.GUI
WebComboBox
-
Use the
onclick
event instead of onselect
, so that initial click on first list element is detected.
-
Setting the text on editable comboboxes correctly sets the Index property and raises the
Click
event.
-
Read-only combo-boxes have now the same height as the editable ones.
WebDateBox
-
Set a default width according to the
DateTime
property.
-
Fix date formatting.
WebForm
-
Custom form javascript files are now different for each form.
-
AddHeader()
is a new method that allows to add a custom page header.
WebMenu
-
Use the busy sign when waiting for the
Click
event answer.
Miscellaneous
-
Log is now disabled by default. Setting the
GB_WEB_GUI_DEBUG
environment variable to "1"
enables it.
-
Update Chinese translation.
-
Popups now use absolute position, so that they follow the document scrolling.
-
Scroll view to make popup windows visible as much as possible.
-
The component is now stable but not terminated.
-
Add some color constants.