If everything was fine, type "gambas3" to run the development environment.
-
Fix an ambiguous shortcut: opening file properties dialog is now triggered by CTRL+SHIFT+I.
-
Use a long dash to separate the application name in the IDE window title.
-
Display the current branch in the IDE window title.
-
Refresh the IDE window title only if necessary.
-
Add buttons on top of tab bars to show hidden panels.
-
Add a button to toggle sort by inheritance in the project tree.
-
Remove the show property help
option.
-
Use tab bar extra buttons for showing project tree, property sheet, control tool box and property help.
-
Add a specific output tab for the unit tests result.
-
Add a test
button, that run the project in test mode, using the debugger.
-
Reorder debug panel buttons.
-
Add menu entries for toggling most of the debugging environment variables.
-
Adapt the background image to dark themes automatically.
-
Update Gambas fonts.
-
Make Gambas 16 pixels size font less round and fix many characters.
-
Move the bytecode folder instead of copying it.
-
Add .startup
, .list
and .info
to projet default gitignore file.
-
Update financial support list.
-
Update Zen color theme.
-
If chromium
is selected as default browser, then stable Google Chrome can be used if Chromium is not installed.
-
Do not crash if the layout user directory does not exist yet.
-
Add support for test modules.
-
Use bold text instead of shadows to display project titles.
-
Relative paths on command-line are now assumed to be relative to the current working directory.
-
Ignore untranslated title and description when displaying project information.
-
The first opening of the console waits a bit so that the arrangement of its container is made.
-
Add gb.test.tap
to the list of components.
-
Allow any form family to use the menu editor.
-
Support for custom stock icons sizes depending on the form family.
-
Support for gb.web.gui
component.
-
Redraw the module icons.
-
Hitting ESC key when the focus is on the console immediate command textbox now always closes the console tab.
-
Change the version control synchronize icon to the download
icon.
-
Use global constants for IDE blue and orange colors.
-
Use -r
interpreter option to redirect standard error output.
-
Ignore hidden components specified in the project file.
-
Automatically load gb.test
information.
-
Get rid of big orange panels.
-
Redraw the class symbols icons, and make them adapt to the desktop font size.
-
Start to clean up the image directory.
-
Use new stock icons.
-
Remove some useless icons.
-
Remove dark versions of many icons, now they are automatically generated.
-
Better default IDE configuration.
-
Check for duplicated class files when opening a project.
-
Do not set current project bookmark if opening the project fails.
-
Update financial support file.
-
Support for the new gb.poppler
component.
-
Implement "save as" action for external files.
-
Read-only arrays are now really read-only.
-
Add a -t
option that dumps to the standard error the position of each executed line of code.
-
Floating-point number to string conversion is now 1.7 times faster.
-
System.Trace is a new property that toggles the dump of the position of each executed line.
-
Add command-line help for the -t
option.
-
Do JIT compilation after class loading. Otherwise the JIT compiler may want to load the class that triggers the compilation again.
-
Remove a useless global variable.
-
Fix exponent sign printed twice in float to string conversion.
-
Fix Find() method on Float, Single, and Long arrays.
-
Fix compilation of function calls with variable arguments passing.
-
Disable some compiler warnings that generate false positives.
-
Fix static array management. They are not read-only anymore. Only methods that want to modify the size of the array are forbidden, as well as the ReadOnly property.
-
Reading a string on a memory stream now correctly skip the terminating null byte.
-
Fix serialization of NULL values.
-
Remove an old debugging message displayed when writing a pointer to a stream.
-
Stream.NullTerminatedString is a new property that tells if writing a string on the stream emits the string length first, or a null terminated zero byte. This property is TRUE by default on memory streams.
-
OPEN NULL
is a new syntax that opens a null stream. Reading always returns end of file, and writing does nothing except advancing the file pointer, allowing to know how many bytes were written.
-
Rename macro that convert a Gambas stream object to the internal stream structure and add a macro that does the reverse conversion.
-
_read
and _write
are two new special methods that allow to make any object serializable by the READ and WRITE instructions.
-
Serializing an object is not ambiguous anymore.
-
Use one byte for writing the class name length when serializing objects.
-
Memory-mapped component archives file descriptors are now automatically closed when a child process is executed.
-
WAIT NEXT
is a new instruction that waits for the next event and process it.
-
Signals are now correctly unregistered if the program exits during a signal handler.
-
Object.Count() does not fail anymore if the object is invalid.
-
A class can declare a public _invalid
boolean variable. The value of that variable will indicates if the object is invalid.
-
gbx3 -L
now displays the same Gambas version as gbx3 -V
.
-
Error.Text, Error.Where and Error.Backtrace are now available inside the Application_Error handler.
-
Check special methods return value datatype and raise a dedicated error if it is incorrect.
-
Opening a pipe for reading does not block anymore if the pipe has not been opened for writing yet. It help synchronizing applications using the same pipe a lot!
-
Add class name in incorrect symbol declaration
error message.
-
Fix possible memory leaks when reading objects or variants with the READ instruction.
-
Application.ParentHandle is a new property that returns the parent process id.
-
Fix release of return value of JIT methods called from non-JIT methods.
-
Internal name of libraries uses a point now between vendor and library name, not a slash anymore.
-
Running a process without an event name does not reference its observer for nothing anymore.
-
IsAscii()
, IsLower()
, IsPunct()
... instructions are now a bit faster.
-
PEEK
is a new instruction that peek some bytes from a stream without removing them, so that they are available to the next READ instruction.
-
VarPtr()
on variants now returns a pointer to the variant contents.
-
VarPtr()
on local strings are forbidden again.
-
Converting a string to a pointer returns a pointer pointing at the beginning of the string.
-
Call the event loop just after the JIT compiler has aborted, so that its processes are correctly freed.
-
&=
operator optimization.
-
Strings greater than 4096 bytes are allocated by 4096 bytes steps.
-
Support for JIT &=
optimization.
-
Enabling an already enabled timer has no effect anymore.
-
Use -r
option now to redirect standard error output. No conflict anymore with -t
.
-
Update help message and display options in alphabetic order.
-
Add -T
option to run test modules.
-
Interpreter options now accept a void argument.
-
Automatically load gb.test
component when the -T
option is used.
-
Make READ and INPUT return void strings instead of NULL, otherwise JIT compiler fails.
-
Make a public function static.
-
Use time_t
in GB.MakeDateFromTime API.
-
Correctly generate metadata file for events so that there is no spurious ByRef arguments anymore.
-
Remove some useless structure packing directives.
-
Fix compilation of function calls with variable arguments passing.
-
Correctly detect help comments in all cases.
-
Allow initialization of variables associated with property declaration.
-
Allow static arrays to be used with the point operator.
-
OPEN NULL
is a new syntax that opens a null stream.
-
Function names can be put between parenthesis to disable possible warnings on them.
-
Support for the new WAIT NEXT
instruction.
-
Workaround a gcc 8 compiler optimization bug.
-
Fix a comment typo.
-
Support for the new PEEK
instruction.
-
Support for test modules.
-
Fix an uninitialized local variable.
-
Do not crash anymore by looking for help comments in form files when controls are public.
-
Support for &=
operator optimization.
-
Automatically add gb.test
component information when a project includes a test module.
-
Order options in displayed help.
-
Output a class flag for test modules.
-
Fix compilation of OPEN STRING
instruction that sometimes failed.
-
Remove now useless structure fields.
-
ButtonBox: Settings the Filter property to FALSE correctly destroy the internal associated button, and prevent the control to crash if you set the property again.
-
ButtonBox: Custom buttons added with _AddButton() are now always between the clear button, and the standard button.
-
ButtonBox: Filter icons are now a little darker.
-
ColorChooser: Use icons instead of labels for color components.
-
DirChooser: ShowToolbar is a new property that toggles the toolbar.
-
DirChooser: Custom bookmarks are now correctly refreshed when they change.
-
DirView: Do not display an error when a directory is unreadable.
-
DocumentView: Some little design changes.
-
FileChooser: Correctly deal with &
in bookmark names.
-
FileChooser: Add a separator above the bottom filters when Border property is unset.
-
FileChooser: ShowToolbar is a new property that toggles the toolbar.
-
FileChooser: Custom bookmarks are now correctly refreshed when they change.
-
FileProperties: Click is a new event that is raised when a tab is selected.
-
FileProperties: Index is a new property that returns or sets the current tab index.
-
FileProperties: Add() now returns the index of the added tab.
-
FileProperties: Adding a tab does not raise the Click event anymore.
-
FileProperties: Fix an error triggered by the preview.
-
FileView: Display a lock icon when a directory is unreadable.
-
FileView: Display a text inside the view when a directory is empty.
-
FontChooser: Initializing the font tree is now a lot faster.
-
IconPanel: Scale the panel icons so that each panel title has the same height.
-
ListEditor: Activate event is now emitted if the user clicks twice on the list.
-
ListEditor: Unique is a new property that ensures that all ListEditor elements are unique.
-
ListEditor: Add Remove() method.
-
ListEditor: Add Find() method.
-
ListEditor: Add Index property.
-
ListEditor: Text property now returns or sets the text currently edited.
-
ListEditor: The insert button text is now "Add".
-
MenuButton: Correctly deal with &
shortcut character.
-
SliderBox: The default value is now applied when double-clicking on the spinbox, not the slider.
-
SliderBox: Add a Picture property.
-
Spinner: Add a Padding property.
-
Stock: Analyze icon directories in alphabetic order, so that numeric directory names are always identified first.
-
Stock: Better support of some icon themes.
-
TabPanel: Add TabBarPaddingStart and TabBarPaddingEnd properties. They allow to define space on the left and the right of the tab bar, so that you can put some widgets on top.
-
TabPanel: Fix tab bar layout routine.
-
TabPanel: The "close all" button is now drawn after the right padding.
-
TabPanel: TabBarSize is a new property that returns the height of the tab bar.
-
Use the KDE SVG version of Tux that is a lot smaller.
-
Add may new stock icons.
-
Update translations.
-
TextBox: Add Placeholder property. Beware that it does nothing as GTK+2 entry widget does not support placeholder text.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to full screen.
-
Windows whose Utility property is set now use _NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Do not imbricate focus events.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
TextBox and TextArea KeyPress events cannot be stolen by other controls anymore.
-
Support for the new WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Printer.Paper now works as expected.
-
The Window State event is correctly raised now, and the state properties are now correctly synchronized.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Negative values are replaced by zero when setting Application.Busy.
-
Opening a popup always raises it to the pop now.
-
TextBox: Add Placeholder property.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to fullscreen.
-
Windows whose Utility property is set now use _NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Do not imbricate focus events.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
TextBox and TextArea KeyPress events cannot be stolen by other controls anymore.
-
Support for the new WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Printer.Paper now works as expected.
-
The Window State event is correctly raised now, and the state properties are now correctly synchronized.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Fix Style.PaintCheck() and Style.PaintArrow() for GTK+ >= 3.14.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Negative values are replaced by zero when setting Application.Busy.
-
Opening a popup always raises it to the pop now.
-
GridView: Selecting while moving the mouse cursor now raises the Select event only when the mouse button is depressed.
-
GridView: Select event is not raised twice on click anymore.
-
IconView: Fix grid height computation.
-
IconView: Do not use rounded rectangles anymore for selection frames.
-
ListBox: Click event is now raised when the Index property is modified.
-
Message: The ENTER key now selects the button having the focus, not the default one, so that message boxes behave the same with GTK+ and Qt.
-
Message: Add a button in message boxes to copy the message in the clipboard.
-
Message: Message boxes now correctly handle multi-line text in buttons.
-
Paint: Paint.Check() is a new method that draws a check mark.
-
Picture: Fix how Picture[] interprets relative paths.
-
Picture: Picture[] now automatically inverts the image for dark themes.
-
ScrollArea: Do not show the shadows in some cases when they should not be visible.
-
TreeView: ShowCheck is a new property that uses checkboxes to handle selection mode.
-
TreeView: Fix right-to-left layout management.
-
TreeView: Take padding into account when interpreting mouse events.
-
TreeView: Use radio buttons when ShowCheck property is set with single selection mode.
-
TreeView: Calling Add() or Remove() now automatically cancels the current renaming.
-
TreeView: Fix multiple selection.
-
TreeView: Setting the Key value with an unknown key now unselects the current key.
-
TreeView: The Selection property now handles single selection mode correctly.
-
Fix drag & drop frame management.
-
Prevent possible flickering of drag & drop frame.
-
The DragLeave event is now emitted reliably when the mouse leaves the drag and drop frame.
-
Default message icons are now visible when gb.form
component is not used.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Use the new Application.DarkTheme property.
-
Add translations.
-
TextBox: Add Placeholder property.
-
Window: set the window size at creation to 1x1, so that there is no default size.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to fullscreen.
-
Windows whose Utility property is set now use _NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Control.Next and Control.Previous now never return invalid controls.
-
Do not imbricate focus events.
-
Apply Paint.FontScale only when Paint.Font is assigned. Not when one of the Paint.Font properties changes.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
Support for the new WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
Drawing on a cached DrawingArea does not display a warning message anymore.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Some theme-specific workarounds for Style paint methods.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Modal windows are now actually modal before entering their Open event.
-
Negative values are replaced by zero when setting Application.Busy.
-
A modal window can be opened on top of a popup window without breaking the event loop.
-
TextBox: Add Placeholder property.
-
Window: set the window size at creation to 1x1, so that there is no default size.
-
Window: Add a State event that is raised when the window is minimized, maximized or set to full screen.
-
Windows whose Utility property is set now use _NET_WM_WINDOW_TYPE_DIALOG
instead of _NET_WM_WINDOW_TYPE_DIALOG
.
-
Control.Next and Control.Previous now never return invalid controls.
-
Do not imbricate focus events.
-
Workaround "Setting a QCompleter on non-editable QComboBox is not allowed" message
-
Apply Paint.FontScale only when Paint.Font is assigned. Not when one of the Paint.Font properties changes.
-
Utility windows now kept being in front of their parent window correctly.
-
Paint.FontScale is now "transparent". Paint.Font.Size is not changed anymore when assigning the Paint.Font property.
-
Support for the new WAIT NEXT
instruction.
-
Fix Drag() that was returning the drag frame instead of the target control.
-
X11 event filter correctly handle ClientMessage events now.
-
Drawing on a cached DrawingArea does not display a warning message anymore.
-
Application.DarkTheme is a new property that returns if the current color scheme is dark.
-
Some theme-specific workarounds for Style paint methods.
-
Style.Name is now lowercase.
-
Mouse.Click is a new property that returns the click index in a multi-click event.
-
Modal windows are now actually modal before entering their Open event.
-
Negative values are replaced by zero when setting Application.Busy.
-
A modal window can be opened on top of a popup window without breaking the event loop.