Gambas 3.18.0
What's new?
There are almost one thousand of changes in this release since the 3.17.3 version.
The main features of this release are:
-
Many interpreter optimizations making it faster.
-
The debugger interface was moved to the left panel of the IDE.
-
A project browser was added to the IDE that allows to browse the project data files.
-
A DBus browser was added to the IDE.
-
Bool@()
, Byte@()
... functions can be the target of an affectation now.
-
Integer arithmetic and conversion now raise an error if overflow is detected. This can be disabled at runtime for backward-compatibility.
-
Properties can be write-only now.
-
The database component now allows to define connection options specific to the underlying database server.
-
The FileView control view modes have been redesigned and file preview has been enhanced.
-
Many stock icons have been added.
-
gb.hash is a new component that implements the
Md5()
, Sha1()
, Sha256()
and Sha512()
functions, thanks to BusyBox.
-
Many enhancements and fixes to the Web application development component.
Compilation and installation
Read the instructions
there.
If everything was fine, type "gambas3" to run the development environment.
Enjoy it !
Changelog
CONFIGURATION
-
New bytecode version 3.18.
-
Fix detection of C++11 and C++17 compilation flags.
-
Update configuration files to autoconf 2.71.
-
Update
README
and README.md
files.
-
Make
Makefile
more silent.
-
Add 48x48 version of mimetypes and application icons.
-
Add
m4/pkg.m4
to .gitignore
list.
-
Do not use the default
CFLAGS
provided by autotools
. Either use the CFLAGS
provided on the command-line, or the default one of the project.
DEVELOPMENT ENVIRONMENT
Automatic completion
-
Take local variables declared inside loops into account.
-
Correctly ignore properties when completing the dot operator.
Code editor
-
Selecting an item in the procedure list failed sometimes at the first click.
-
Setting a breakpoint does not mark read-only files as modified anymore.
-
Fix keyword detection (ME, SUPER...) when analyzing an expression to jump to a definition.
-
Fix a possible crash in automatic completion of event handlers.
-
Use the
gb.form.editor
new goto line panel instead of the custom one.
-
Call the TextEditor.Reset() method when loading the contents, not to raise the Change event.
-
Procedure popup is larger now.
-
Paste special now automatically replaces no-break spaces by normal spaces.
Bottom panel
-
Add a DBus explorer.
-
Console output: Define the icon of the "raise to top" toolbar button.
Debugger
-
Allow to ignore up to eight processes in extern debugging mode.
-
Workaround
gnome-terminal
that is not able to hold its child process.
-
The console automatic show should work correctly when the console is undocked now.
-
Use the new TreeView item Span property, so that the headings of the debugger trees display correctly.
-
Move the terminal option from global configuration to debugging configuration.
-
Fix
xfce4-terminal
and mate-terminal
support.
-
Closing the internal debugger browser now stops the debugger.
-
Ignore namespace when searching for current debugged class.
-
Display component name in stack backtrace.
-
Stack backtrace and variable list headers are not selectable anymore.
-
New way of storing breakpoints into configuration file.
-
Support for breakpoints inside components.
-
Clear the WebView when closing the debugger browser.
-
Allow to bypass the name check when searching for a component or library project location.
-
Fix a possible crash in stack display during debugging.
-
Allows internal browser to access clipboard from javascript code.
-
Sort local and global variables.
-
Clearing breakpoints outside of debugging mode now works correctly.
-
Use the new debugger stock icons.
-
Put the debugger in the left panel with the project tree.
-
Add a button to reset the location of component projects in the debugger configuration dialog.
-
Allow to choose the browser used for debugging web applications, between Firefox, Chromium or the internal debug browser.
-
Add an internal browser for debugging web applications.
-
The browser used for debugging is now run in its own process and in private mode. Create a custom profile in Firefox for that.
-
Support for debugging inside project components. Breakpoints inside components do not work correctly yet.
Color selection dialog
-
The color chooser dialog does not overflow anymore when selecting an alpha component greater or equal than 128.
File creation dialog
-
The dialog is now used for creating directories.
Form editor
-
Fix multicontainer menu icon.
-
Make the property sheet row height padding a bit larger, following
Desktop.Scale
.
-
Fix reading and writing of color properties so that they do not trigger an overflow. Forms must be updated and recompiled!
Help browser
-
Correctly handle project help links in online mode.
-
Information about project classes is correctly displayed again.
-
Fix tree refresh on project change.
-
Fix layout of IDE shortcuts help window.
-
Use the
https
URL for the Gambas web site.
-
Links to a class or a symbol of the current project now do not open in a new window anymore.
-
Fix the online help browser settings management.
-
Fix links to project classes and symbol documentation.
Image editor
-
Change default line join and line cap.
-
Selecting a position is more accurate.
-
Support for composition operation when pasting the clipboard.
-
Do not try to optimize the shape when using the line selection tool.
-
Make the resize / stretch dialog remember the last selected ratio.
-
Fix mouse button management during press and release events.
-
Add a toolbar button that expands or shrinks the selection of the paste frame to the image size.
Main window
-
Hide side panels handles.
-
Add a menu button to the main toolbar to choose the debug browser.
Make executable dialog
-
When making an executable, copy the executable path to the clipboard so that you can paste it to copy the file manually if you need.
Options dialog
-
Fix the list of different terminals.
-
Remove the ability to choose the external browser. The default one given by the environment is always used.
Packager
-
Fix an infinite recursion in category selection.
-
Switch Debian helper minimum version to 10.
-
Correctly ignore all components provided by the runtime when generating dependencies.
Pretty printer
-
A line with PRINT ending with a comma does not indent the next line.
Project browser
-
Add a project browser to the IDE, based on the
FileView
control.
-
Add a button that toggles the new project browser.
Project make executable dialog
-
When installing a library, do not add the vendor prefix if the project name already has it.
Project open dialog
-
Ignore
.project
files at the root of home folders.
Project properties dialog
-
Add local repository user and e-mail in git version control information.
Project tree
-
Component files now use the same sort than the project files.
-
Fix popup menu entries state according to context.
-
Fix visibility of version control information menu entry.
-
Fix a possible crash while opening a project.
-
Use a fixed size for the emblems.
-
Do not crash anymore when opening the
Open with
popup twice.
-
Change the icon for filtering compressed files.
-
Lock the project tree while closing the current project, so that it raises no deferred events.
Search
Software farm dialog
-
Fix layout of project description.
-
Do not crash anymore when login to the farm.
System information dialog
-
Add the version of some programs.
-
Add
librsvg
to the system information.
Test suites support
-
Fix test result label colors.
Text editor
-
Call the TextEditor.Reset() method when loading the contents, not to raise the Change event.
-
Fix the zoom buttons of the preview toolbar.
-
Selecting an item in the procedure list failed sometimes at the first click.
-
Fix a crash in automatic completion.
Version control
-
Detect errors when git commit is impossible.
-
Better detection of
ssh
prompts.
-
Use
kate
if kwrite
is not available as version control text editor.
-
Add a menu entry that opens a terminal at the root svn / git repository.
-
Add a menu entry that opens the file manager at the root svn / git repository.
-
Add a bookmark that points at the svn / git repository directory the current project is part of.
-
Support for creating branches.
-
Add fields to define your Git repository identity in
Repository
tab.
-
Move version control statistics to a new
Repository
tab in publish dialog.
-
Display the state of the file on top in the information dialog.
-
Check more editors for filling the EDITOR environment variable.
-
Fix the routine that associates a color with a branch name.
-
The command timeout is now 30 seconds instead of 15 seconds.
-
Remove the
Revert all changes
button in the bottom panel. It can be dangerous to leave it there.
-
Fix a possible crash triggered by version control initialization while opening another project.
Welcome dialog
-
Stop the media player when the form is closed.
-
Don't crash when stopping the medial player.
-
Try to compute the dialog size better.
-
Load and show the welcome dialog only if needed.
-
Fix project items layout.
Miscellaneous
-
Update French translation.
-
The list of translatable properties is now case insensitive.
-
Update module icons.
-
Update some control icons.
-
Update default
compact
layout.
-
Support for write-only properties.
-
Use the
paste-special
stock icon where appropriate.
-
Redesign the unique file name generation function.
-
Add
gb.geom
to the list of components.
-
Running a project does not remove disabled environment variables anymore.
-
Add the component name in IDE tab title for files from other projects.
-
Do not clear the version control and the test console when the project is reloaded.
-
Better find a web browser when opening an URL.
-
Support for
gb.hash
component.
-
Send crash reports to the mailing-list only if the attachment size is not too big, otherwise use my personal new e-mail address.
-
Default language of newly created project is the current system language now.
-
Start to fix and enhance automatic project documentation.
-
The
Project
menu has been reorganized.
-
Add a menu entry and a button to compile and create the executable without opening the executable configuration dialog.
-
Always open the project executable configuration if the executable file does not exist on disk.
-
Don't load the wiki documentation at exit if the wiki has never been used.
-
Add shell script test-fast in root dir for quick selftest.
-
Automatic local variable declaration is now enabled by default.
-
Redraw the icon of source files that must not be translated.
-
Hitting ESC does not crash anymore.
-
Disable all actions that could modify the source code while debugging.
-
Snow starts to fall one day before X-Mas now.
-
Extend the snow period until the Epiphany.
-
Use the new
application
stock icon for the farm dialog.
-
Draw the current branch button with a Label and its new border properties.
-
Fix colors constants overflow in all forms.
-
Fix icon size in the unsaved file dialog.
-
Add
fuse_hiddenxxxx
files to .gitignore
SELF-TESTER
-
Fix the tests that now overflow.
INTERPRETER
-
Array:
Empty
is a new property that returns if an array is empty.
-
Collection:
Empty
is a new property that returns if a collection is empty.
-
Allow to ignore up to 8 processes in external debugging mode.
-
WAIT 0
is now an equivalent of WAIT
alone, but with processing of input events.
-
Program exit now can be hold by the debugger to workaround a missing feature of the Gnome terminal.
-
Fix
GB_Wait()
calls as the meaning of its argument changed.
-
Allow errors to propagate from event handlers when the event is internally raised by the interpreter. All events raised from a component written in Gambas through the Gambas API still do not propagate errors.
-
QUIT
now ends the process brutally. C++ static exit routines from unloaded shared libraries are not called anymore, avoiding crashes.
-
Always flush buffered streams at exit even if the exit is immediate.
-
Application.Task
is a new property that returns if we are executing a Task object.
-
GB.Every()
API now creates a timer that is ignored by the event loop.
-
Add all comparison constants to
gambas.h
API header file.
-
Fix
String[].FindSorted()
and String[].ExistSorted()
when using gb.Like
or gb.Match
comparison methods.
-
Replace a global variable by a function argument in CLASS_look() and CLASS_find() functions.
-
Add component name in debugger positions.
-
Add an API to retrieve the last error message.
-
The exported name of a class does not overwrite the name field of the class structure anymore, fixing the stack backtrace.
-
Remove a now useless flag in the internal class structure.
-
Support for breakpoints inside project components.
-
Support for write-only properties.
-
Add a class flag for bytecode strictly older than 3.18.
-
Remove useless LIKELY() and UNLIKELY() macros.
-
Enhance
GB.SubstStringAdd()
and add GB.SubstStringUnquote()
API to support custom quoting in gb.db
.
-
Optimize array access and basic arithmetic operator on integer and floats.
-
Fix compilation on non-C99 compiler.
-
Some optimizations of the main interpreter loop.
-
Fix optimization of dynamic variable reading.
-
Fix optimization of dynamic variable writing.
-
Always check bytecode version when the current class changes during interpreter execution loop.
-
Don't use 3.18 multiply and divide optimization if current bytecode version is lower than 3.18.
-
Various optimizations of the interpreter execution loop.
-
Avoid unneeded type conversions when manipulating local variables.
-
NULL
can be serialized on streams correctly now.
-
Optimizations of local variables and argument assignments.
-
Optimization of small integer floating point constants.
-
Bool@()
, Byte@()
... functions can be the target of an affectation now.
-
Move some code outside of
gbx_exec_loop.c
source file.
-
Fix JIT compilation of class inheriting from another class.
-
Add an API for the JIT compiler that retrieves the address of an object or a class for external functions.
-
The timezone now can be specified in a string representing a date, by adding a space followed by "UTC" or "GMT", a plus or minus sign, the hours, and optionnaly a colon followed the minutes.
-
Fix Format$() on numbers when the format string uses "0" character in the exponant part and the exponant is negative.
-
The divide operator now raises "Mathematic error" when the numerator is infinity, and raises "Division by zero" error only if the numerator is zero.
-
Integer arithmetic and conversion now raise an error if overflow is detected.
-
Check for overflow detection only if the
__has_builtin
pseudo-macro is implemented by the compiler.
-
Avoid conversion to boolean when possible in conditional jumps.
-
Optimization of conditional jumps based on values known to be Boolean.
-
Prevent
Add()
, Remove()
and Resize()
methods on read-only arrays.
-
Check all child terminations when we detect that the
SIGCHLD
handler has been replaced by an idiotic library like glib
.
-
System.IgnoreOverflow
is a new property that allows to ignore overflows in arithmetic operations.
-
Replace most of boolean global interpreter flags by bit fields.
-
Don't use
-O3
. It makes benchmarks slower than using -O2
.
COMPILER
-
Add the branch to the version number when it comes from a
VERSION
file.
-
Display bytecode statistics in verbose, no background task mode.
-
PROPERTY WRITE
now declares a write-only property.
-
Does not crash anymore when a negative integer is used for the value of a floating point constant.
-
Remove useless LIKELY() and UNLIKELY() macros.
-
Forbid
PROPERTY WRITE
when compiled bytecode version is strictly lower than 3.18.
-
Free 14 bytecode slots by using
ADD QUICK
for numbers between -255 and 255 only.
-
Support for local variable manipulation optimization.
-
Optimization of small integer floating point constants.
-
Bool@()
, Byte@()
... functions can be the target of an affectation now.
-
Make the compiler more clever when deciding if an identifier is a reserved keyword or not.
-
Some optimizations in the parser.
-
Optimize jumps pointing at a JUMP bytecode.
-
The
/
operator correctly returns a Float if its arguments are Float.
-
Optimization of conditional jumps based on values known to be Boolean.
-
Workaround incorrect use of unsigned color constants by the IDE form editor.
-
Don't crash anymore if an error is raised while reading command-line arguments.
-
Fix parsing of
Debug
symbol in preprocessor lines.
-
Optimize variable initialization.
ARCHIVER
-
Add the
-l
option to list all files included in an archive.
BENCHMARKS
-
Port Python benchmarks to Python 3.
-
Add java benchmarks.
GB.COMPLEX
-
Raise a "Mathematic error" if the real or imaginary part of a complex number is not finite.
GB.DATA
-
Remove uses of deprecated LIKELY() macros.
GB.DB
-
Connection: Request substitution methods now support
[&1]
and `&1`
quoting syntax to quote a table name or a column name.
-
Connection: It's now possible to specify the password in the connection URL.
-
Connection: The URL argument of the Connection constructor is now handled by the Gambas part.
-
Result:
Editable
is a new property that returns if the result is editable.
-
Connection:
Options
is a new property that allows to define the specific options of a connection.
GB.DB.FORM
-
DataSource: Prevent
Save()
method to call itself.
-
DataView: Custom column alignment is taken into account now.
-
DataView: Make blob editor fully translated.
-
Update control icons.
-
Update French translation.
GB.DB.MYSQL
-
Support for the
Connection.Options
property.
-
Use
VARCHAR
for string fields up to 65535 characters maximum length.
GB.DB.ODBC
-
Support for the
Collection.Options
property.
GB.DB.POSTGRESQL
-
Support for the
Collection.Options
property.
-
Fix a possible buffer overflow.
-
Support for partitioned tables.
GB.DB.SQLITE2
-
Support for the
Collection.Options
property.
GB.DB.SQLITE3
-
Support for the
Collection.Options
property.
GB.DBUS
-
DBusProxy: Fix symbol signature generation.
-
DBusProxy: Take annotations into account when generating signature.
-
DBusConnection:
DBusConnection
now returns the DBusApplication object registered on the specific bus.
-
DBusProxy:
_GetSymbols()
is a new undocumented method for decoding introspection.
-
DBusProxy:
_GetSignature()
is made public for getting the signature of a DBus method, property or signal, both in native or Gambas syntax.
-
Enhance conversion from DBus datatype to Gambas datatype.
GB.DBUS.TRAYICON
-
Raise the
LayoutUpdated
D-Bus signal when the current desktop is Cinnamon
, otherwise the menu is not refreshed. Cinnamon seems to ignore the return value of the AboutToShow
event.
GB.DEBUG
-
Program exit now can be hold by the debugger to workaround a missing feature of the Gnome terminal.
-
Add component name in debugger positions.
-
Do not display class name
^
prefix in backtraces.
-
Support for breakpoints inside project components.
-
Add a command to remove all breakpoints in one shot.
-
Fix incorrect
printf
format on 32-bits architectures.
-
Save
errno
before running the debugger, and restore it after.
-
The debugger now indicates if the printed information is from the current stack frame or from another one.
GB.DESKTOP
-
DesktopFile:
GetIcon()
now works correctly.
-
DesktopMime: Fix
GetIcon()
so that stock mime icons are preferred.
-
DesktopFile: Clean up the internal desktop file decoding method.
-
DesktopFile: Add an hidden method for clearing the internal cache.
-
DesktopFile: Fix
FromMime()
method that searched mime information files incorrectly.
GB.DESKTOP.X11
-
DesktopWindow:
Activate()
uses the X11
class directly now.
-
The component must require
gb.desktop
.
GB.DRAW
-
Paint:
LineDashOffset
is now a synonymous for the DashOffset
property.
-
Paint:
LineDash
is now a synonymous for the Dash
property.
-
Paint:
Rectangle()
with a border radius now works as expected with a negative width or height.
GB.EVAL.HIGHLIGHT
-
TextHighlighter: Fix
ToHTML()
, ToRichText()
and ToANSI()
methods.
-
TextHighlighter: Use
<tt>
instead of <pre>
in ToHTML()
method.
-
Update some CSS properties.
-
Check first for bracket after function keyword.
GB.FORM
DirBrowser
-
A new control that displays an horizontal directory browser.
DateBox
-
Editor
is a new property that returns the internal MaskBox.
DirChooser
-
Find the best associated bookmark when setting the root directory.
-
Showing the toolbar now automatically updates its contents according to the current view.
-
Add the
View
property.
-
SHIFT + F5
now refreshes the preview cache.
-
Add a preview progress bar.
-
Add a menu entry that disables the preview size limit.
-
Default view is now
Normal
.
DirView
-
Display unwritable directories with a lock emblem.
-
Display directory custom icons.
FileChooser
-
Showing the toolbar now automatically updates its contents according to the current view.
-
Add the
View
property.
-
SHIFT + F5
now refreshes the preview cache.
-
Use the new Clipboard.CopyPaths() method.
-
Add a preview progress bar.
-
Add a menu entry that disables the preview size limit.
-
Default view is now
Normal
.
FileProperties
-
Use the new
Trim
property for the file name label.
-
Add file last access time.
FileView
-
Display a
lock
emblem on non-readable files in icon view mode.
-
Add a permission column in detailed view mode.
-
Add FileCount, DirCount and TotalSize properties, to get statistics on the current directory contents.
-
Add a Refresh event that triggers just after the FileView has refreshed its contents.
-
Correctly refresh icons on icon theme change.
-
Add a
Selected
property that returns if at least one item is selected.
-
Correctly set the item texts so that renaming works as expected in all cases.
-
Add a
Rename
event that allows to implement a custom file renaming.
-
Copy()
is a new method that copy the selected elements to the clipboard as a "text/uri-list".
-
Automatic support of drag & drop.
-
Paths
is a new property that returns the absolute paths of all selected elements.
-
Add a
Filter
event, that allows to filter what is displayed file by file.
-
The preview background task is now automatically stopped as soon as the control is hidden.
-
MaxPreviewSize
is a new property that allows to define the size limit of previewed file.
-
The preview size limit does not apply to text files and video files.
-
Remove file details in icon view mode. It's ugly.
-
Fix preview refresh when the control is shown or hidden.
-
Fix a crash when filling the popup menu.
-
Add preview of
webp
image files.
-
The image file previews are now cached in the
/tmp
directory. The cache is cleared when the process terminates.
-
Fix generation of svg file previews.
-
Add column padding to the detailed view, as there is no implicit padding anymore in
ColumnView
.
-
Display directory custom icons.
-
Memorize a different icon size for
Compact
and Normal
view.
-
The
ShowDetailed
property is now deprecated.
-
View
is a new property that allows to define the view style between Normal
, Compact
, Detailed
and Preview
.
-
Generate thumbnails differently so that they are smooth on Qt.
-
Display icons for XDG user directories having no explicit
.directory
desktop file.
-
Add preview of text files and PDF files.
-
Add preview of video files if
ffmpeg
is installed.
-
Add preview of OpenOffice and EPub files.
-
Add the file mime icon on top of its preview, except for video and images.
-
Add line count in text files preview.
-
Add page count in PDF or OpenOffice files preview.
-
Correctly abort the preview background task when the
Dir
property changes.
-
Reload() method takes an optional boolean argument for refreshing the preview cache.
-
Do not forget to kill the preview background task is some cases.
FontChooser
-
Display font preview correctly in dark mode.
ListEditor
-
Add a
Grid
property that toggles a grid.
MenuButton
-
Don't crash anymore when triggering the MenuButton shortcut.
SidePanel
-
ShowButton
is a new property that hides the little arrow buttons that toggle the panels, and also hides the side handle in transparent mode.
-
Fix layout according to the different combinations of
Transparent
, Separator
and Border
properties values.
Stock
-
Implement the
./
syntax for Gambas
icon theme.
-
Update stock icons.
-
Fix icon map so that the generated Gambas icon theme is better.
-
Add icon for Gambas 3 application in Gambas icon set.
SwitchButton
-
Make the middle bar narrower.
TabPanel
-
Make
ShowTabPanel
property visible in the IDE.
-
Fix layout routine.
-
Inner container was one pixel too short vertically!
-
Fix container layout when
ShowTabBar
property is false.
-
Ensure that the current tab button is always visible even if the last tab is hidden.
ValueBox
-
SelectAll()
is a new method that selects the text inside the ValueBox internal editor.
Miscellaneous
-
Bookmarks: Changing the bookmarks automatically updates all
DirChooser
and FileChooser
controls.
-
Update French translation.
GB.FORM.EDITOR
-
TextEditor: The
Remove()
method now normalizes its arguments to avoid crashing if they are outside the document.
-
TextEditor: ShowFindPanel() and ShowGotoPanel() are now public methods for showing the action panels.
-
TextEditor: Add a panel to go to a specific line.
-
TextEditor: Add a default popup menu.
-
TextEditor: Setting the
Breakpoint
property correctly raises the Change
event.
-
TextEditor: Raise the
Change
event when loading a file, settings the bookmarks or the disabled breakpoints.
-
TextEditor: Raise the
Change
event when setting the Text
property.
-
TextEditor: Update French translation.
-
TextEditor: Redesign the
goto
panel.
-
TextEditor: Do not show the
goto
panel if there is only one line.
-
TextEditor: Application.MiddleClickPaste is taken into account.
GB.FORM.HTMLVIEW
-
HtmlView: Fix a crash triggered by the Clear() method.
-
Fix use of C++11 compilation flags.
GB.FORM.MDI
-
Toolbar: Configuring is a new property that returns if the toolbar is in configuration mode.
-
Use the new
Cursor
constants.
GB.FORM.PRINT
-
Update French translation.
-
Update the layout of the option panel.
GB.FORM.STOCK
-
Many icon added or redrawn.
-
Gambas icon theme does not inherit
gnome
icon theme anymore.
-
Fix Gambas IDE application icon in Gambas icon theme.
-
Gambas icon theme now can have specific icons for applications.
-
Update the list of icons that must be reversed with ltr languages.
GB.FORM.TERMINAL
-
TerminalView: Don't open the default popup if the Menu event handler exists.
-
TerminalView: Correctly update the popup menu when it opens.
-
TerminalView: Compute the character width so that non-fixed font characters are not truncated.
-
TerminalView: Use the new support of file paths in the Drag.Paste() method.
-
Update project icon.
GB.GEOM
-
Make the component visible.
-
Add
ALIGN_MAKE()
macro in gb.geom.h
.
-
Add Expand() and Shrink() methods to the rectangle classes.
GB.GTK
-
SvgImage: Painting routine has been redesigned and is now faster.
-
TextArea: Modifying the contents by code now refreshes the control as expected.
-
TextArea: Fix drag and drop.
-
UserControl: Call the UserControl_Resize() public method on resize.
-
The
WAIT
instruction alone now ignores input events like Qt components.
-
Support for
WAIT 0
syntax.
-
Remove the native ComboBox.
-
UserControl_Draw()
event handler is called before drawing the control children.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Allow calling
WAIT
alone during a keyboard event handler.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Closing the main window when it is persistent correctly quits the application.
-
Reparenting a window correctly triggers automatic arrangement.
-
The parent window of a modal window is now always the current active window.
-
Hide menu before destroying it, so that the top-level menu bar is correctly updated.
-
Container are now still arranged when they are hidden because of a null size.
-
Container hidden because of a null size do not disable arrangement.
-
Restarting a timer during its event handler should not lead to a possible crash anymore.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Fix menu relayout after the
Show
event has been handled..
-
Watcher
now should finally raise their Show
event correctly.
-
Setting the
Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Update deferred arrangements before handling focus changes (and other posted routines).
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix drag & drop management.
-
Popup menus are scrollable again.
-
Fix some use of deprecated functions.
-
Fix compilation with old versions of
librsvg
.
-
Fix some default control sizes.
-
WAIT
now runs the deferred routines even if there is no pending GUI event.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste. The global GTK+ settings is taken into account at application startup.
-
Paint.DrawText()
and Paint.DrawRichText()
do not move the current point anymore.
-
Fix value of
Key.Shift
, Key.Control
, Key.Alt
, Key.Meta
and Key.Normal
.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Correctly release the current grab when the debugger wakes up.
-
Starts program by assuming the clipboard has been modified.
GB.GTK3
-
SvgImage: Painting routine has been redesigned and is now faster.
-
TextArea: Modifying the contents by code now refreshes the control as expected.
-
TextArea: Fix drag and drop.
-
UserControl: Call the UserControl_Resize() public method on resize.
-
The
WAIT
instruction alone now ignores input events like Qt components.
-
Support for
WAIT 0
syntax.
-
Remove the native ComboBox.
-
UserControl_Draw()
event handler is called before drawing the control children.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Allow calling
WAIT
alone during a keyboard event handler.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Closing the main window when it is persistent correctly quits the application.
-
Reparenting a window correctly triggers automatic arrangement.
-
The parent window of a modal window is now always the current active window.
-
Implement
Application.ShowTooltips
property.
-
Hide menu before destroying it, so that the top-level menu bar is correctly updated.
-
Container are now still arranged when they are hidden because of a null size.
-
Container hidden because of a null size do not disable arrangement.
-
Restarting a timer during its event handler should not lead to a possible crash anymore.
-
The changes in main window stylesheet do not apply to the embedded title bar anymore.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Fix menu relayout after the
Show
event has been handled..
-
Watcher
now should finally raise their Show
event correctly.
-
Setting the
Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Update deferred arrangements before handling focus changes (and other posted routines).
-
Top-level window background color is correctly taken into account again.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix drag & drop management.
-
Popup menus are scrollable again.
-
Fix some use of deprecated functions.
-
Fix compilation with old versions of
librsvg
.
-
Fix some default control sizes.
-
WAIT
now runs the deferred routines even if there is no pending GUI event.
-
Remove debugging messages on dnd.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste. The global GTK+ settings is taken into account at application startup.
-
Paint.DrawText()
and Paint.DrawRichText()
do not move the current point anymore.
-
Fix value of
Key.Shift
, Key.Control
, Key.Alt
, Key.Meta
and Key.Normal
.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Correctly release the current grab when the debugger wakes up.
-
Starts program by assuming the clipboard has been modified.
GB.GTK3.WEBVIEW
-
WebView:
GetHtml()
is a new method that retrieve the HTML contents of the view.
-
WebView:
Language
is a new property that allows to define the HTTP Accept-Language
headers. By default the current language is used.
-
Fix use of GB.Wait().
-
Don't recreate the view when clearing it, it segfaults on Wayland. Just fill it with a void page.
-
WebView.Cookies.Clear()
is a new method that removes all cookies.
GB.GUI.BASE
Clipboard
-
Paste()
now returns a file path array as soon as the mime type is "text/uri-list".
-
Copy()
now can takes a file path array as soon as the mime type is "text/uri-list".
ComboBox
-
It's now a control written in Gambas!
Drag
-
The Dnd Frame now has a darker border.
-
Drag()
now can takes a file path array as soon as the mime type is "text/uri-list".
GridView
-
Save and restore the Paint context before calling the Draw event.
-
Take custom row border into account correctly.
-
Use
Color.TextBackground
when the Background
property is set to Color.Default
.
-
RowAt()
now returns rows at negative coordinates.
-
Add
GridView.Rows.Padding
property for an additional cell vertical padding.
-
Add
GridView.Columns.Padding
property for an additional cell horizontal padding.
-
Start scroll timer immediately.
-
Fix integer overflow in cell span management.
-
Fix row and column spanning algorithm.
IconView
-
Selection is now updated during rubberband selection.
-
Selection
is a new property that returns an array of the keys of all selected items.
-
Fix computation of text icon position when renaming.
-
ESC key now unselects all items.
-
UnselectAll()
now always resets the current item.
-
Use
Color.TextBackground
when the Background
property is set to Color.Default
.
-
Support for DnD.
-
Rubberband selection is more clever.
-
Add
Scroll
event.
-
Select
event is correctly raised again in single selection mode.
-
Item shape now follows the icon size and the text size.
-
The layout algorithm has been cleaned up and fixed.
-
Fix drawing and selection in horizontal orientation.
-
Check an update hovered item at each refresh.
-
Handle
PageDown
and PageUp
keys.
-
Fix icon layout so that the number of text lines specified by
IconLines
is actually displayed.
Label & TextLabel
-
Use the new UserControl_Resize() handler. It saves one Watcher.
-
Take the frame width into account when aligning the contents.
-
Clip frame drawing for style that draw an unwanted background.
-
Add BorderRadius, BorderWidth and BorderColor property.
-
Trim
is a new property that trims the text if it overflows its frame.
-
Vertically centered TextLabels take the
AutoResize
property into account correctly.
ListBox
-
Add a
Grid
property, that adds a grid and some padding inside cells when set.
Picture
-
Refresh() does not try to refresh invalid windows anymore.
ScrollArea
-
Automatic scrolling during DnD now should work as expected.
SpinBox
-
Buttons in wide mode correctly follow the enabled state now.
Splitter
-
Support of the
Invert
property.
-
Proportional resize when there is more than two children.
-
Layout does not include separator size anymore.
-
A double-click on the handle now resets the layout.
-
Fix layout in vertical mode.
TreeView, ColumnView & ListView
-
Items have a new
Span
boolean property, that tells if the first column spans the control width.
-
No column padding by default.
-
Add
Padding
property to the ColumnView.Columns
object.
-
Fix automatic resizing of the first column.
-
Treeview items now have a
Selectable
property. If set to FALSE, the item is not selectable anymore.
-
Do not cancel the row change if the row is set to -1 (no selected row).
-
Add a
Selected
property that returns if at least one item is selected.
Miscellaneous
-
The _Gui.MustAnimate() internal method is accurate now, so that animations occur on the activated window only.
-
Do not crash while checking if an animation must be triggered when
Application.ActiveWindow
is invalid.
-
Paint.StretchImage()
now returns the frame of the drawn image as a rectangle.
-
Rewrite and fix
Paint.TrimRichText()
method.
GB.HASH
-
This is a new component that implements the Md5(), Sha1(), Sha256() and Sha512() functions. The code comes from BusyBox.
-
Hash
is a new static class with methods that implement The Md5
, Sha1
, Sha256
and Sha512
hash functions.
GB.HTTPD
GB.IMAGE
-
The Image constructor now fills the image data with
Color.Transparent
color by default. To get uninitialized image data, you must specified Color.Default
as fill color.
GB.JIT
-
Optimization of small integer floating point constants.
-
Bool@()
, Byte@()
... functions can be the target of an affectation now.
-
Fix compilation of
Left$()
, Right$()
and Mid$()
routines.
-
Fix JIT compilation of extern function calls.
-
Implement overflow detection in integer arithmetic operations. The UNSAFE keyword disable them to get full speed.
-
Support for conditional jumps optimization.
-
Factorize exception management in JIT code.
GB.MAP
-
Update GoogleMap tile version to make it work again.
-
_ShapeItem
now has a more accurate name _MapShapeItem
and is exported.
-
Now
_MapLayer
have hidden functions for mouse events (_MouseMove
, _MouseUp
...)
-
Add a new hidden function to map to add generic _MapLayer. This will allow to easily create information layer or other.
-
Continue fixing bugs.
GB.MARKDOWN
-
Add error location when displaying an error message in the generated HTML.
GB.MEDIA
-
Add support for
GstValueArray
datatype.
-
Get rid of deprecated
GValueArray
datatype.
GB.MEDIA.FORM
-
MediaView: Ensure that the internal media player is deleted with the control.
GB.OPENSSL
-
Use the API instead of directly including interpreter header files. It breaks compilation on Ubuntu 22.10.1.
-
Fix the
sort_and_dedupe()
internal method.
GB.PCRE
-
Print an explicit message during configuration telling if we are using
libpcre
or libpcre2
.
-
Fix compilation on systems that only have
libpcre2
installed.
GB.PDF
-
Try to make
gb.pdf
compile with poppler 22.06, and disable it for higher versions.
GB.POPPLER
-
Add C++ 17 compilation flag to make
gb.poppler
compile everywhere.
-
Mark the component as "unfinished" instead of "unstable".
-
Don't try to free unallocated things when releasing the PdfDocument object.
GB.SETTINGS
-
Settings: The Maximized property of a window is now correctly restored when it is present in the settings.
GB.QT4
-
Drag & Drop: Eat the
DragMove
event as soon as the Drop
event has an event handler.
-
UserControl: Call the
UserControl_Resize()
public method on resize.
-
Support for
WAIT 0
syntax.
-
Remove the native ComboBox.
-
Style methods draw focus and tab focus.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Remove now useless ComboBox source code.
-
Allow calling
WAIT
alone during a keyboard event handler.
-
Ensure that the copy of a
Font
is internally completely detached from its source.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Use the
explicit
keyword in all C++ constructors.
-
Fix
gb.qt4
compilation.
-
The parent window of a modal window is now always the current active window.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Correctly send wheel events to widgets that handle them when the associated control is a proxy.
-
Setting the
Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix some default control sizes.
-
Ignore spurious duplicated mouse move events.
-
Fix the use of a local variable out of scope.
-
Prevent a possible infinite recursion when initializing window menu bar.
-
UserControl
now automatically refreshes itself when its enabled state changes.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Fix reference leak in drag & drop target management.
-
Starts program by assuming the clipboard has been modified.
GB.QT4.EXT
-
TextEdit: Add
InsertRichText()
method, a more obvious way to set TextEdit.Selection.RichText
.
GB.QT4.WEBVIEW
-
WebView:
GetHtml()
is a new method that retrieve the HTML contents of the view.
-
WebView: Add the
Language
property, but it has no effect on Qt4.
-
WebView.Cookies.Clear() is a new method that removes all cookies.
GB.QT5
-
Drag & Drop: Eat the
DragMove
event as soon as the Drop
event has an event handler.
-
UserControl: Call the
UserControl_Resize()
public method on resize.
-
Support for
WAIT 0
syntax.
-
Remove the native ComboBox.
-
Style methods draw focus and tab focus.
-
UserControl._Focus
is a new property that defines if a UserControl can take focus.
-
Remove now useless ComboBox source code.
-
Allow calling
WAIT
alone during a keyboard event handler.
-
Ensure that the copy of a
Font
is internally completely detached from its source.
-
The new proxy of a control is now correctly unlinked if it was already the proxy of another control.
-
Do not use the deprecated printer functions anymore.
-
Use the
explicit
keyword in all C++ constructors.
-
The parent window of a modal window is now always the current active window.
-
Menu.Parent
is a new property that returns the parent menu of a menu, or NULL
if the menu is a top-level one.
-
Correctly send wheel events to widgets that handle them when the associated control is a proxy.
-
Setting the
Drop
property now acts on the proxy, and the DnD events are handled by the proxy first.
-
Align.Make()
is a new method that build an alignment constant from its horizontal and vertical parts.
-
Fix some use of deprecated functions.
-
Fix some default control sizes.
-
Ignore spurious duplicated mouse move events.
-
Make window activation specific to the GUI platform, in the hope of finding a workaround to the fact that window activation request is impossible in Wayland.
-
Fix the use of a local variable out of scope.
-
Prevent a possible infinite recursion when initializing window menu bar.
-
UserControl
now automatically refreshes itself when its enabled state changes.
-
Application.MiddleClickPaste
is a new property that tells if middle click should paste.
-
Control.Drag()
now calls Drag()
, so that text/uri
mimetype is supported.
-
Fix reference leak in drag & drop target management.
-
Starts program by assuming the clipboard has been modified.
GB.QT5.EXT
-
TextEdit: Add
InsertRichText()
method, a more obvious way to set TextEdit.Selection.RichText
.
GB.QT5.WAYLAND
-
Implement the
SetTransientFor()
API by using a Qt 5.13 non-documented public method.
-
Add a message to warn that
Window.Stacking
property does not work with Wayland and Qt5.
GB.QT5.WEBVIEW
-
WebView:
GetHtml()
is a new method that retrieve the HTML contents of the view.
-
WebView:
Language
is a new property that allows to define the HTTP Accept-Language
headers. By default the current language is used.
-
WebView:
Settings
property is now actually specific to the view.
-
Fix use of GB.Wait().
-
Remove an unused class public slot.
-
WebView.Cookies.Clear()
is a new method that removes all cookies.
GB.REPORT2
-
The German translation by Claus Dietrich is now complete.
-
Remove the use of deprecated and removed function of DocumentView in ReportView. The page detection is available now
GB.SDL
-
Remove useless LIKELY() and UNLIKELY() macros.
GB.SDL2
-
Support for
WAIT 0
syntax.
-
Key.IsPressed()
is a new method that tells if a specific key is pressed. An optional argument allows to ignore the keyboard layout.
-
Correctly synchronize the image texture when the image has been modified by a method from
gb.image
.
-
Clear the modified flag after the image texture has been synchronized.
GB.SETTINGS
-
Settings: Reading a collection from a settings file now works correctly.
-
Store and restore the maximized state of windows.
GB.SIGNAL
-
Signal[].Send()
is a new method for sending a signal. It's an alternative syntax to the Signal.Send()
method.
GB.TEST
-
Adapt
Assert.Ok()
method to the new backtrace format.
GB.UTIL
-
CsvFile: Reading the Fields property now automatically reads the fields from the first line of the file if needed.
-
Date.DaysInMonth()
is a new method that returns the number of days in a month of a specific year.
-
String.IsIPv6()
is a new function that checks if a string is an IPv6 address.
-
String.IsIP()
is a new function that checks if a string is an IPv4 address.
-
String.IsEmail()
is a new function that checks if a string seems to be an e-mail address.
-
Language.GetTranslations()
method now browses the correct language files in executables.
GB.WEB
-
Request.Language
now correctly ignores the encoding part of the current system language.
-
The contents of the
.public
directory is now automatically served by webpages.
GB.WEB.FORM
-
Fix upload management when
Request.TempDir
is set.
GB.WEB.GUI
WebAudio
-
Tracking
is a new property that tells if the Position
property is updated in real-time.
-
Fix a lot of bugs and implementation problems.
-
Add
Tracking
to the properties visible to the IDE.
-
Clean up code and add inline wiki help to WebAudio.
-
Do not reset play position to 0 on play in
lib.js
so audio can un-pause.
-
Property
Paused
gets or sets paused state.
-
Property
Position
gets or set song position.
-
Property
Duration
gets song length.
-
Pause
event triggers when audio pauses.
-
End
event fires when a track finishes
-
Position
event fires as audio position changes during play.
-
Ready
event fires when audio has loaded.
-
Add
Sources
property for alternative
-
Add
AutoPlay
property to enable automatic playing on loading.
-
Length
is a synonym for Duration
.
-
For backward compatibility,
Play()
will play from start if not in paused state.
WebControl
-
Implement
Enter
and Leave
event.
WebDrawingArea
-
A new DrawingArea control based on a HTML canvas.
-
Paint
is a new class that draws on a WebDrawingArea.
WebForm
-
Correctly cancel refreshes on
Open
event, as the entire window will be redrawn.
-
Disable global shortcuts when a popup -or- a modal dialog is opened.
-
Disable the web page until it is fully loaded.
WebLabel
-
Fix center align, by replacing
justify-content:center
by text-align:center
.
WebTabPanel
-
Correctly render all tabs, even the invisible ones.
-
Optimize refresh when the current tab changes.
WebTextArea
-
Change
event works again.
-
Accumulate text changes on the client side, and send them just before the next request.
WebTextBox
-
Change
event works again.
-
Accumulate text changes on the client side, and send them just before the next request.
WebTimer
-
Deleting a timer now always emits the javascript code that stops it on the client side.
WebTree
-
Fix selection management.
-
Add documentation.
-
Works correctly now if there is only one item.
-
Raise the
Select
event in single selection mode.
-
Don't trigger useless refreshes when selection changes.
-
The
Clear()
method correctly triggers a refresh.
-
Settings the Mode' property correctly updates the control.
-
In single selection mode, you can't unselect the selected item with the mouse anymore.
-
Item
Selected
property does not crash anymore.
Miscellaneous
-
Color: Replace
WebControl._GetColor()
by Color.ToHTML()
.
-
Session: Add the server port to the session cookie.
-
Keyboard events are now sent to the server only if needed (i.e. if a control or a form has a KeyPress event handler).
-
New custom focus management.
-
Flush the standard output before quitting.
-
Remove the useless
Message.Name
property.
-
Focus frame should be managed correctly in all cases now.
-
Error raised by the Gambas code on the server should now normally be displayed in the browser within an alert box.
-
Remove a possible stack overflow in javascript focus management.
-
Key events modifiers do not have two different names anymore according to the context.
-
Replace the
$()
javascript function by $_()
in the internal library to avoid conflict with other libraries like jquery
.
-
Fix conversion of Gambas opacity to HTML transparency in colors.
-
Color:
Color.ToHTML()
is a new method that converts a Gambas color to HTML color.
-
Add
gb.geom
as a new dependency.
-
Make the
;
explicit in internally generated javascript.
-
Fix component dependencies.
-
Move focus frame when the window is resized.
-
The cookie name now depends on the application name, so that you can run different applications on the same server.
-
When checking keyboard events for shortcuts on the client side, take a possible undefined key code into account.