Cross platform GUI toolkit in Go inspired by Material Design
The latest set of fixes on top of the 2.0 version of Fyne brings stability improvements, speedups to many widgets and a variety of other bug fixes.
Additionally we have updated the fyne
tool to build using Android SDK 30 and resolved some issues with windows cross-compilation.
This latest release of the 2.0.x branch brings a host of new fixes from reported issues. We also worked to optimise rendering performance of TextGrid and supported compiling on the newly released FreeBSD 13.
We hope this improves your Fyne experience, please get in touch if you have any questions or feedback.
Various changes since 2.0.1 that help to improve stability and performance of the v2.0.x release line.
If you have any feedback please get in touch.
Following the large v2.0.0 feature release we bring a list of bug fixes that correct unexpected issues arising. The main highlight is support for compiling on the Apple M1 processor, plus various enhancements to dialog resizing.
The list reported issues resolve is as follows:
Wrapping=fyne.TextWrapOff
no longer blocks scroll events from
a parentThe v2.0.0 release of Fyne marks a big step in the development of the project. It was a chance to step back, see what was working well and what could be improved - and then make the changes in a way that had not been possible whilst maintaining 1.0 compatibility. As a result there are some breaking changes to point the APIs in a better direction for the future. Additionally this means that the import path has now changed to fyne.io/fyne/v2
following the go module convention.
This release also sees the introduction of data binding (that keeps widgets in sync with a data source), storage repositories (allowing developers to connect different types of file stores to our APIs), animation (to give some motion to elements of an application) and a new theme API (that allows more flexible theming of standard components).
The full list of changes follow. Before upgrading an existing project please be sure to read the upgrading doc for information about relevant changes.
The import path is now fyne.io/fyne/v2
- be sure to update all files when you are ready to make the update.
Coordinate system to float32
Text.TextSize
moved to float32 and fyne.MeasureText
now takes a float32 size parameterSize.Union
(use Size.Max
instead)Theme API update
fyne.Theme
moved to fyne.LegacyTheme
and can be load to a new theme using theme.FromLegacy
The second parameter of theme.NewThemedResource
was removed, it was previously ignored
The desktop.Cursor definition was renamed desktop.StandardCursor to make way for custom cursors
Button Style
and HideShadow
were removed, use Importance
iOS apps preferences will be lost in this upgrade as we move to more advanced storage
Dialogs no longer show when created, unless using the ShowXxx convenience methods
Entry widget now contains scrolling so should no longer be wrapped in a scroll container
Removed deprecated types including:
dialog.FileIcon
(now widget.FileIcon
)widget.Radio
(now widget.RadioGroup
)widget.AccordionContainer
(now widget.Accordion
)layout.NewFixedGridLayout()
(now layout.NewGridWrapLayout()
)widget.ScrollContainer
(now container.Scroll
)widget.SplitContainer
(now container.Spilt
)widget.Group
(replaced by widget.Card
)widget.Box
(now container.NewH/VBox
, with Children
field moved to Objects
)widget.TabContainer
and widget.AppTabs
(now container.AppTabs
)Many deprecated fields have been removed, replacements listed in API docs 1.4
Preferences.AddChangeListener
Check
, Entry
, Label
, List
, ProgressBar
and Slider
widgetsCopy
, Delete
and Move
for URI
CanRead
, CanWrite
and CanList
to storage APIstheme.FromLegacy
helper to use old theme API definitionscanvas.ImageScaleFastest
for faster, less precise, scalingdialog.Form
that will phase out dialog.Entry
Scroll.OnScrolled
event for seeing changes in scroll containerTextStyle
and OnSubmitted
to Entry
widgetHintText
and showing validation errors in Form
widgetEntry
, Label
and TextGrid
MouseButtonPrimary
and MouseButtonSecondary
container.New()
and container.NewWithoutLayout()
constructors (replacing fyne.NewContainer
and fyne.NewContainerWithoutLayout
)OpenFileFromURI
, SaveFileToURI
and ListerForURI
to Reader
, Writer
and List
functionsWe hope that everyone had a good holiday and enjoyed the festivities. Now that 2021 is here we are hard back at work, here is the latest bugfix release with a load of tasty fixes for you :).
We are hard at work for the 2.0 release now which should be with you in 3 weeks.
In this bugfix release we delivered a number of improvements to the fyne
command that give more
control when building releases and completes the code signing of macOS apps for the App Store as well!
A number of other fixes including improvements to Entry validation and Android keyboards are included as well.
After a successful v1.4.0 release we wanted to clear up a few bugs and add some items that didn't get there in time :). The highlights for many developers will be:
The full list of changes is as follows:
The 1.4 release is a huge step forward for the Fyne project. as well as refreshing the theme and bringing a host new features we are introducing a new type of widget - the /Collection Widgets/. These are designed for high performance display of large data sets as either List, Table or Tree. As always let us know your feedback so we can keep making the toolkit better!
List (#156), Table (#157) and Tree collection Widgets
Card, FileItem, Separator widgets
ColorPicker dialog
User selection of primary colour
Container API package to ease using layouts and container widgets
Add input validation
ListableURI for working with directories etc
Added PaddedLayout
Window.SetCloseIntercept (#467)
Canvas.InteractiveArea() to indicate where widgets should avoid
TextFormatter for ProgressBar
FileDialog.SetLocation() (#821)
Added dialog.ShowFolderOpen (#941)
Support to install on iOS and android with 'fyne install'
Support asset bundling with go:generate
Add fyne release command for preparing signed apps
Add keyboard and focus support to Radio and Select widgets
Theme update - new blue highlight, move buttons to outline
Android SDK target updated to 29
Mobile log entries now start "Fyne" instead of "GoLog"
Don't expand Select to its largest option (#1247)
Button.HideShadow replaced by Button.Importance = LowImportance
Deprecate NewContainer in favour of NewContainerWithoutLayout
Deprecate HBox and VBox in favour of new container APIs
Move Container.AddObject to Container.Add matching Container.Remove
Start move from widget.TabContainer to container.AppTabs
Replace Radio with RadioGroup
Deprecate WidgetRenderer.BackgroundColor
Support focus traversal in dialog (#948), (#948)
Add missing AbsolutePosition in some mouse events (#1274)
Don't let scrollbar handle become too small
Ensure tab children are resized before being shown (#1331)
Don't hang if OpenURL loads browser (#1332)
Content not filling dialog (#1360)
Overlays not adjusting on orientation change in mobile (#1334)
Fix missing key events for some keypad keys (#1325)
Issue with non-english folder names in Linux favourites (#1248)
Fix overlays escaping screen interactive bounds (#1358)
Key events not blocked by overlays (#814)
Update scroll container content if it is changed (#1341)
Respect SelectEntry datta changes on refresh (#1462)
Incorrect SelectEntry dropdown button position (#1361)
don't allow both single and double tap events to fire (#1381)
Fix issue where long or tall images could jump on load (#1266, #1432)
Weird behaviour when resizing or minimizing a ScrollContainer (#1245)
Fix panic on NewTextGrid().Text()
Fix issue where scrollbar could jump after mousewheel scroll
Add missing raster support in software render
Respect GOOS/GOARCH in fyne command utilities
BSD support in build tools
SVG Cache could return the incorrect resource (#1479)
Many optimisations and widget performance enhancements
Various fixes to file creation and saving on mobile devices
Version 1.3.3 brings many bug fixes and some minor enhancements to the file picker dialog. Thanks for all the feedback, enjoy this update :)