[GB.FORM]
* NEW: Use the new 'Control.RightToLeft' property instead of the global 'System.RightToLeft' one.
* NEW: Add 'text-list' and 'text-list-order' stock icons.
[GB.FORM]
* NEW: ButtonBox: Make the filter timer be ignored at program end.
* NEW: SidePanel: AutoHide is a new property that let the side panel automatically hide on mouse leave and show on mouse enter.
* NEW: FontChooser: Double-click now opens a font tree item only if the 'Activate' event is not handled.
[GB.GUI.BASE]
* NEW: Message: 'DefaultButton' is a new property that makes the first message dialog button the default one. It is TRUE by default to restore the last year behaviour.
[GB.FORM]
* NEW: DirBox: Add a 'Title' property.
* NEW: FileBox: Make 'Filter' property use the same syntax as 'Dialog.Filter' property.
* NEW: FileBox: If the 'Filter' property is set, automatically select the first filter.
* NEW: Update FileBox icon.
[GB.FORM]
* NEW: Add FileBox control, supports open/save mode, filters, custom picture and placeholder.
* NEW: Add Path property to DirBox and FileBox as a synonym for Value and show it in the IDE.
[GB.GUI.BASE]
* NEW: GridView: Use standard arrows to paint sort indicator. Do not use widget style anymore.
* NEW: TreeView: Tree arrows are a bit darker now.
* BUG: Paint.Arrow now takes the line width into account, so that stroking the arrow does not overflow the rectangle bounds.
[GB.GUI.BASE]
* NEW: Label: Try to take italic fonts into account in text alignement.
* BUG: Label: Workaround a Qt bug where using Paint.TextExtents() on a bitmap font makes it unable to be drawn correctly.
[GB.FORM]
* BUG: MenuButton: Fix a possible "Invalid object" error when a MenuButton is destroyed during its Click event.
* NEW: More icons for Gambas icon theme.
[GB.GUI.BASE]
* NEW: The hidden API that estimate the character width of a specific font now returns by default an estimated value for non-fixed fonts.
[GB.EVAL.HIGHLIGHT]
* BUG: TextHighlighter: Paint() correctly takes into account the new highlighter theme design.
* NEW: TextHighlighter: Paint() method takes an optional argument that defines the position of the first character of the highlighted text to paint.
[GB.GUI.BASE]
* NEW: IconView: Add 'Next' and 'Previous' properties to the IconView item class.
* NEW: IconView: The 'Add()' method now inserts the new item at the beginning when the 'After' is explicitly specified as 'NULL'.
[GAMBAS-WIKI]
* NEW: The translation is now complete.
[GAMBAS-SELFTEST]
* NEW: The translation is now complete.
[DEVELOPMENT ENVIRONMENT]
* NEW: The IDE translation is now complete.
[GBS3]
* NEW: The translation is now complete.
[GB.ARGS]
* NEW: The translation is now complete.
[GB.EVAL.HIGHLIGHT]
* NEW: The translation is now complete.
[GB.FORM.TERMINAL]
* NEW: The complete translation.
[GB.FORM]
* NEW: The translation is now complete.
[GB.GUI.BASE]
* NEW: The translation is now complete.
[GB.WEB.FORM]
* NEW: The translations is now complete.
[GB.WEB.GUI]
* NEW: The translations is now complete.
[GB.DBUS.TRAYICON]
* BUG: Detect if we are on a Gnome desktop. In that case the _AboutToShow()
signal always returns FALSE, otherwise submenus are not displayed. But the
Gnome system tray seems to still be buggy, never reacting to any change in
menu properties.
* BUG: Be more robust when a tray icons has no popup menus.
* BUG: Do no crash when freeing remaining tray icons at program clean-up.
[GB.DESKTOP]
* BUG: Desktop.OpenTerminal() now correctly interprets again 'Desktop.Type',
which does not include the entire contents of $XDG_CURRENT_DESKTOP, but
only the first one of that colon-separated desktop names list.
[GB.FORM.EDITOR]
* NEW: TextEditor: In "gambas" mode, `ALT+'` and `ALT+"` now respectively add single quotes and double quotes around the current selection.
[GB.EVAL.HIGHLIGHT]
* NEW: TextHighlighterTheme: Load() now convert old theme to new theme by initializing unset styles with old styles.
* NEW: Enhance 'Diff' highlighter.
[GB.FORM.EDITOR]
* NEW: TextEditor: Theme is a new property that allows to define the TextHighlighterTheme associated with the editor.
* NEW: TextEditor: The Styles property is now deprecated. It returns now the array of TextHighlighterStyle associated with editor theme.
* NEW: TextEditor: The editor lines have now a little padding on the top and on the bottom, whose size is proportional to the font height.
* BUG: TextEditor: The line wrap markers now are correctly colorized when selected.
* NEW: TextEditor: Colorized text can be striked out.
[GB.EVAL.HIGHLIGHT]
* NEW: Highlight: Styles is a new property that returns the string key available for all TextHighlighterStyle objects. The integer id of a style is its position in that array.
* NEW: Highlight: GetStyleName() is a new method that returns the translated name of a specific style.
* NEW: TextHighlighter: List is a new static property that returns a list of all implemented highlighter names.
* NEW: TextHighlighter: Name is a new property that returns the name of an highlighter.
* NEW: TextHighlighter: FullName is a new property that returns the human name of an highlighter.
* NEW: TextHighlighter: Styles is a new property that returns the styles actually used by an highlighter.
* NEW: TextHighlighter: ToAnsi(), ToHTML(), ToRichText() and Paint() method now take a TextHighlighterTheme or an array of TextHighlighterStyle as last argument.
* NEW: TextHighlighterStyle: Add Key, Name, Color, Bold, Underline, Dotted, Strikeout properties.
* NEW: TextHighlighterStyle: The Background property tells if the style is a background style according to its key.
* NEW: TextHighlighterStyle: The InvertedColor property returns the style color inverted for dark themes.
* NEW: TextHighlighterStyle: The ToString() method serializes the style to a string.
* NEW: TextHighlighterStyle: The FromString() method creates a style from a string returned by ToString().
* NEW: TextHighlighterTheme: A new class that represents a highlighting theme
* NEW: All highlighter classes were ported to the new design.
[GB.MAP]
* BUG: The MapBound.Contain function really return if a bound can be contained.
* NEW: Add a new function to the shape layer that return an array of _ShapeItems contained in a mapbound.
[GB.FORM.STOCK]
* BUG: Set "FollowsColorScheme" flag back into Gambas icon theme generation description file.
* NEW: Add 'pointer' and 'theme' icons. Redraw some icons. 360 different icons is a nice count.
[GB.FORM.TERMINAL]
* NEW: TerminalView: CursorStyle is a new property that allows to define how the cursor is drawn.
* NEW: TerminalView: CursorBlock, CursorUnderline and CursorText are three new constants that represents how the cursor is drawn.
[GB.GUI.BASE]
* NEW: ScrollArea: The EnsureVisible() method now takes an extra optional argument, that tells which scroll direction is allowed.
* NEW: GridView: GridView.Rows[].EnsureVisible() is a new method that ensures that a specific row is visible by scrolling vertically only.
* NEW: GridView: GridView.Columns[].EnsureVisible() is a new method that ensures that a specific column is visible by scrolling horizontally only.
* NEW: TreeView: Automatic scrolling on item change is now vertical only.
[GB.FORM]
* NEW: Format file sizes with no more than three digits.
* BUG: Stock: Don't duplicate 'Gambas' and 'Gambas-Mono' icon themes in Stock.Themes property.
* OPT: FileView: Use the directory cache instead of Stat() when drawing the items.
[GB.FORM.STOCK]
* NEW: Add an hidden API to install the stock icons as system icon theme in '~/.local/share/icons'.
* NEW: Add icon for special home folders.
* NEW: Redraw the 'watch' icon.
[GB.DBUS.TRAYICON]
* BUG: TrayIcon: Do not raise the 'LayoutUpdated' DBus signal anymore. Instead, just return TRUE in the 'AboutToShow' event handler.
That should fix the menu refresh problems inside the system tray.
[GB.FORM.DIALOG]
* NEW: Dialog.FilterIndex is a new property that returns or defines the current filter of the file dialog.
[GB.GTK]
* NEW: Dialog.FilterIndex is a new property that returns or defines the current filter of the file dialog.
[GB.GTK3]
* NEW: Dialog.FilterIndex is a new property that returns or defines the current filter of the file dialog.
[GB.QT4]
* NEW: Dialog.FilterIndex is a new property that returns or defines the current filter of the file dialog.
[GB.QT5]
* NEW: Dialog.FilterIndex is a new property that returns or defines the current filter of the file dialog.
[GB.FORM]
* NEW: Add 'bluetooth' and 'json' stock icons.
* NEW: MessageView: Remove text from buttons. Use less vertical space.
* BUG: MenuButton: Try to not take the focus on click, like a ToolButton.
[GB.EVAL.HIGHLIGHT]
* BUG: TextHighlighter: Fix Paint() method signature.
* OPT: TextHighlighter: Add the FAST keyword to the Add() method.
* BUG: '<<' operator was defined twice in 'Sh' highlighting.
[GB.DESKTOP]
* NEW: Desktop.RunAsRoot() now takes an optional argument to wait for the program ends, and now uses 'pkexec' by default.
* NEW: Desktop.RunAs() is a method similar as RunAsRoot() that takes the username used for running the program.
[GB.WEB.GUI]
* NEW: Preload framework images and icons.
* NEW: WebButton: Implement the 'Default' and 'Cancel' buttons. They work only in the main form and in modal dialogs.
* NEW: WebTree: Clicking twice toggles the item expanded state.
[GB.WEB.GUI]
* NEW: WebTable: Replace the 'ShowHeader' and 'ShowRowNumber' properties by a 'Header' property.
* NEW: WebTable: Draw the vertical header the same way as the horizontal header, and make it sticky.
* NEW: WebTable: Replace the 'DblClick' event by the 'Activate' event.
* NEW: WebTree: Implement the 'Activate' event.
* BUG: WebTree: The "select all" checkbox now works as expected.
*
[GB.WEB.GUI]
* NEW: WebTree: Initial implementation of a tree control. Not finished yet!
* BUG: WebTable: Fix table layout.
* BUG: Ensure that the pipe for writing the response is in blocking mode.
[GB.DESKTOP]
* NEW: add pkexec as primary gui sudoer to RunAsRoot
* NEW: RunAsRoot has "Wait" argument (default is False)
* NEW: RunAsRoot has Username argument (default is root)
* OPT: Split Command if pkexec is used
[GB.WEB.GUI]
* NEW: WebImage: The Image property can be an absolute URL now.
* NEW: WebAudio: The Audio property can be an absolute URL now.
* NEW: WebAudio: Add a Loop property to make the sound automatically loop.
[GB.DESKTOP]
* BUG: Using Exec With [envs] was not working, used pkexec env method to pass DISPLAY and XAUTHORITY envs instead as it works.
* OPT: Also Split "Command" string for Exec or it fails if command has more than one arg.
Notes.
I found the prior method worked on pluma but not on any gambas applications. (they all reported unable to open display)
Using this "pkexec env" method fixes that and makes it work on gambas applications and supports multiple arguments.
[GB.DESKTOP]
* OPT: move test for pkexec to outside of kde/gnome check as it is independant so will be checked regardless if no other graphical sudo is found.
[GB.GUI.BASE]
* BUG: Fix KDE desktop detection, and do not crash if no desktop is detected.
* NEW: GridView: The 'Change' event now can be stopped to cancel a cursor move.
[GB.ARGS]
* NEW: Args.Abort is a new property that tells if the program aborts or raises an error when an Args method fails. The property is TRUE by default.
[GB.WEB.GUI]
* BUG: Keyboard events work again.
* NEW: WebForm.Shortcuts is a new property that allows to declare a list of shortcuts the browser won't see.
[GB.WEB.GUI]
* NEW: Key.Code returns the name of the pressed key, while Key.Text now returns the text associated with the key if there is.
* NEW: Key.Shortcut returns the shortcut string associated with a keyboard event.
* BUG: Fix Key.Control property.
* NEW: Handle WebMenu.Shortcut property.
* BUG: Use 'keydown' DOM event instead of 'keypress', as 'keypress' is deprecated.
* NEW: Setting WebTextArea.Text now automatically moves the cursor and the scrollbar to the end of the text.
[GB.FORM]
* NEW: ButtonBox: Raise the Validate event.
* BUG: MaskBox: Fix cursor move when inserting a character in a filled mask pattern.
* BUG: MaskBox: Handle space separators correctly when setting the Text property.
[GB.FORM.MDI]
* BUG: Workspace: The Add() method now can safely move a window from a workspace to another workspace.
* BUG: Workspace: Activating an unknown window is nw silently ignored.
[GB.WEB.GUI]
* NEW: Start implementing keyboard event and menu shortcuts management.
* OPT: WebSpinBox: Do not force a refresh when the value has been changed by the browser.
[GB.WEB]
* NEW: Request.Scheme is a new property that replaces Application.Protocol.
* NEW: Request.Scheme now returns '"https"' according to the contents of the 'REQUEST_SCHEME' or 'X_FORWARDED_PROTO' headers passed to the CGI script.
[GB.FORM]
* BUG: MaskBox: Text that do not have the same size as the mask are not valid anymore.
* BUG: MaskBox: The Text property now must match the mask when set. If the set text is smaller than the mask, it is completed with the default characters.
* BUG: MaskBox: Characters moves should be handled better now.
[GB.FORM.EDITOR]
* BUG: TextEditor: Highlighted text drawing routine should not enter an infinite loop anymore when the highlighted color information is incoherent.
[GB.FORM]
* BUG: MaskBox: It should work correctly again.
* NEW: MaskBox: Prompt is a new property that allows to define the character displayed for void entries among a few choices.
[GB.FORM]
* BUG: MenuButton: Fix GTK+3 warnings on hidden shortcut buttons.
* NEW: DirChooser & FileChooser: Do not use a Watcher to initialize the popup menu.
[GB.FORM]
* BUG: ButtonBox: Disabled background is now drawn correctly.
* BUG: MaskBox: Fix behaviour with copy & paste.
* NEW: MaskBox: Allow default popup menu.
* NEW: MaskBox: Validate is a new event that allows to validate any change in control text and eventually cancel the change.
[GB.EVAL.HIGHLIGHT]
* NEW: Add ToConsole which generates ansii color text which can be printed to most consoles
* NEW: Unit test for Ansi color Console text
* NEW: Unit text for HTML color page
* NEW: Unit text for RTF Color text
[GB.FORM]
* NEW: MenuButton: Disable the hidden shortcut button when the control has the focus, so that TAB focus navigation works.
* NEW: MenuButton: Draw the control with both 'Hovered' and 'Focus' style flag when the control has the focus.
[GB.FORM]
* NEW: MenuButton: The background color is now used for coloring the button background.
* BUG: MenuButton: Fix how style flags are used for drawing the control.
[GB.GUI.BASE]
* BUG: SpinBox: Clamp the vertical padding so that the inner textbox works on GTK+ with small fonts.
[GB.FORM]
* BUG: ButtonBox: Clamp the vertical padding so that the inner textbox works on GTK+ with small fonts.
* BUG: ButtonBox: Fix border drawing according to the widget state (focus and hovering).
[GB.FORM.MEDIA]
* BUG: also hide spacer panel when hiding controls.
when hiding the controls the spacer stayed, leaving a bar on the bottom of the window, even in fullscreen.
This gives clean fullscreen