[GB.FORM.EDITOR]
* BUG: TextEditor: Take the mode into account when selecting a word.
* BUG: TextEditor: Correctly define the identifier characters of the different modes.
[GB.WEB.GUI]
* BUG: Better management of keypress events.
* NEW: WebListBox: Arrow keys change the current selected element in single selection mode.
* BUG: WebListBox: Don't raise the Select event twice when setting the Index property.
[GB.WEB.GUI]
* NEW: If a modal window is opened, controls outside of the modal window cannot be focused anymore.
* NEW: The current focus is now kept when the page is refreshed.
* NEW: Application.ActiveControl is a new property that returns the current control having the focus.
* NEW: WebListBox now keeps its scroll status.
* NEW: WebListBox has now ScrollX and ScrollY properties.
* NEW: WebScrollView: EnsureVisible method should work as expected now.
[GB.UTIL]
* NEW: CsvFile: Columns is a synonymous of Fields property.
* NEW: CsvFile: Add properties for CsvFile configuration.
* NEW: CsvFile: KeepNames is a new property that keep the column names unchanged.
* NEW: CsvFile: Add help comments.
[GB.WEB.GUI]
* BUG: Pressing a default or cancel button now correctly sets the focus on
it to ensure that editable controls have sent their contents to the server.
[GB.FORM]
* NEW: SwitchButton: Animated property is now deprecated.
* NEW: IconPanel, TabPanel, ToolPanel, Wizard: Add a FindPanel() method
that returns a tab index from its title.
[GB.GUI.BASE]
* NEW: GridView: Take the Enabled property into account for rendering.
* NEW: TreeView: Take the Enabled property into account for rendering.
[GB.UTIL]
* NEW: Language is a new class that allows to deal with the translation of
the current project.
* NEW: Import all needed translations from the IDE.
[GB.UTIL]
* OPT: Process: Automatically disable internal observers there is no prompt
to watch anymore.
* NEW: Process: The Expect() method now takes a third optional argument
that tells if a detected prompt must be kept, or must be disabled
automatically. Prompts are automatically disabled by default
[GB.WEB.GUI]
* NEW: I prefer WebTree and WebTable use a distinct class for their 'Data' event.
* BUG: If a WebControl raises a DOM 'click' event, then it automatically stops the propagation of the DOM 'mousedown' event.
[GB.WEB.GUI]
* NEW: WebTree and WebTable now use a common WebCellData class for their 'Data' event.
* NEW: WebCellData.Control allows to define a control that will be embedded in the cell.
* NEW: WebTable now raises a 'Click' event if a control that is embedded in a cell raises a 'Click' event. It takes the row and the column as argument.
* NEW: WebTree now raises a similar 'Click' event, but it takes the key and the column as argument.
[GB.WEB.GUI]
* NEW: Use blue inset box shadow for drawing focus.
* NEW: WebButton: Use <button> instead of <div>, to get focus and native keyboard management.
* BUG: WebButton: Stretch the image size to the button height.
* BUG: WebTextArea: Fix style sheet.
* NEW: WebListBox is focusable now.
[GB.WEB.GUI]
* BUG: WebButton: Image now always fill the button height.
* BUG: WebContainer: Do not change the 'display' CSS property of children controls when arrangement is 'Row' or 'Column'.
* BUG: If the 'huge' version of a stock icon does not exist, use the 'small' version instead.
[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.