This file lists the main changes with each version of the Fyne toolkit. More detailed release notes can be found on the releases page.
- Internationalisation support and translations (#605, #3249)
- Look up system fonts for glyphs that cannot be found embedded (#2572, #1579)
- Completed support for Wayland on Linux
- Completed support for the Web driver (*except file handling)
- Add support for XDG Desktop Portals when built with
-tags flatpak
on Linux - Activity indicator widget
- InnerWindow and MultipleWindows containers
- ThemeOverride container for grouping items with a different theme
- Add
NativeWindow.RunNative
to use a native window handle (#4483) - Ability to request display stays on -
SetDisableScreenBlanking
(#4534, #3007) - Add Undo/Redo support for widget.Entry (#436)
- Add AppendMarkdown function to RichText
- Add option in List to hide separators (#3756)
- New CustomPaddedLayout for more fine-grained container padding
- Add SizeName property to Hyperlink widget
- Support Ctrl+[backspace/delete] to delete the word to the left or right of the cursor
- Add IntToFloat (and FloatToInt) in bindings Data binding (#4666)
- Add ScrollToOffset/GetScrollOffset APIs for collection widgets
- Add ColumnCount API to GridWrap widget
- Disable and Enable for Slider widget (#3551)
- Function
Remove
added to List bindings (#3100) - Form layout can now be vertical (labels above field) or adaptive for mobile
- Add support for Bold, Italic and Underline for TextGrid (#1237)
- Add support for setting a custom resource as the font source for text (#808)
- New
test
functionsNewTempApp
,NewTempWindow
andTempWidgetRenderer
to free resources automatically
- Fyne now depends on Go 1.19 at a minimum
- Round the corners of scroll bars with new theme value
- Improve contrast of text on highlight background colours
- Layout of iOS and Android apps will adapt when keyboard appears (#566, #2371)
- FyneApp.toml will now be loaded with
go build
(#4688) - Text wrapping will now wrap in dialogs (#2602)
- System tray and tray menu icons on will now match theme on macOS (#4549)
- Triple clicking in an Entry widget now selects current line (#4328)
- About menu items will now override the macOS default About
- System tray no longer shows tooltips (until we have full support)
- Double tapping an item in a file dialog now selects and returns
- Widgets should now use
theme.ForWidget()
instead oftheme.Default()
or static helpers
- Kannada characters not rendering correctly (#2654)
- Notifications are not working on iOS (#4966)
- Incorrect scaling on Steam Deck screen Accessibility (#4896)
- Sometimes the last list row that should be visible doesn't show (#4909)
- RichText swallowing whitespace after Markdown links (#4613, #4340)
- Disabled app tabs can still be selected in popup menu (#4935)
- Don't show title when mouse hover on Systray menu (#4916)
- Trying to access a URL through canvas.NewImageFromURI() in a test results in a panic (#4863)
- Don't insert tab character in Entry when Shift+Tab typed
- Select Does Not Gain Focus When Tapped (#4767)
- binding.Untyped crashes when set to nil bug (#4807)
- Label and Slider not aligned in a FormItem (#4714)
- Windows: App Icon in Notification (#2592)
- Fix possible writing of empty preference data in some quit events
- Allow application to set default view (list/grid) of file dialog before showing it (#4595)
- Fix ScrollToOffset when viewport is larger than content size
- Incorrect row header width in widget.Table (#4370)
- Add missed truncation mode for hyperlink (#4335)
- AppTab does not display blue indicator line if you create it empty and then Append items to it later.
- Many optimisations in animation, draw speed, layout and widget size calculations
- iOS files write would fail when over 16KB
- storage.Delete not supported on Android/iOS (#2120)
- layout.formLayout do not handle canvas.Text well in second column (#4665)
- Fix building with ios17.4 (#4741)
- Support template icon for system tray menu icons
- Fix recognition of missing XDG user directories (#4650)
- FileDialog.SetOnClosed not always working (#4651)
- Upgrade GLFW for performance improvements and bug fixes
- Multiple select popups can crash during background operations (#4730)
- Controlling a negative slider with the left arrow key blocks after 8 steps (#4736)
- cmd/fyne: command "get" is broken with Go 1.22 (#4684)
- Race condition during system tray menu refresh (#4697)
- Fyne release on Linux does not set Metadata().Release to true (#4711)
- RichText leaks memory when replacing segments (#4723)
- Spaces could be appended to linux Exec command during packaging
- Secondary mobile windows would not size correctly when padded
- Setting Icon.Resource to nil will not clear rendering
- Dismiss iOS keyboard if "Done" is tapped
- Large speed improvement in Entry and GridWrap widgets
- tests fail with macOS Assertion failure in NSMenu (#4572)
- Fix image test failures on Apple Silicon
- High CPU use when showing CustomDialogs (#4574)
- Entry does not show the last (few) changes when updating a binding.String in a fast succession (#4082)
- Calling Entry.SetText and then Entry.Bind immediately will ignore the bound value (#4235)
- Changing theme while application is running doesn't change some parameters on some widgets (#4344)
- Check widget: hovering/tapping to the right of the label area should not activate widget (#4527)
- Calling entry.SetPlaceHolder inside of OnChanged callback freezes app (#4516)
- Hyperlink enhancement: underline and tappable area shouldn't be wider than the text label (#3528)
- Fix possible compile error from go-text/typesetting
- Fix OpenGL init for arm64 desktop devices
- System tray icon on Mac is showing the app ID (#4416)
- Failure with fyne release -os android/arm (#4174)
- Android GoBack with forcefully close the app even if the keyboard is up (#4257)
- *BSD systems using the wrong (and slow) window resize
- Optimisations to reduce memory allocations in List, GridWrap, driver and mime type handling
- Reduce calls to C and repeated size checks in painter and driver code
- Markdown only shows one horizontal rule (#4216)
- Spacer in HBox with hidden item will cause an additional trailing padding (#4259)
- Application crash when fast clicking the folders inside the file dialog (#4260)
- failed to initialise OpenGL (#437)
- App panic when clicking on a notification panel if there's a systray icon (#4385)
- Systray cannot be shown on Ubuntu (#3678, #4381)
- failed to initialise OpenGL on Windows dual-chip graphics cards (#437)
- Reduce memory allocations for each frame painted
- RichText may not refresh if segments manually replaced
- Correct URI.Extension() documentation
- Update for security fixes to x/sys and x/net
- Inconsistent rendering of Button widget (#4243)
- PasswordEntry initial text is not obscured (#4312)
- Pasting text in Entry does not update cursor position display (#4181)
- Left key on tree now collapses open branch
- Avoid memory leak in Android driver code
- Entry Field on Android in Landscape Mode Shows "0" (#4036)
- DocTabs Indicator remains visible after last tab is removed (#4220)
- Some SVG resources don't update appearance correctly with the theme (#3900)
- Fix mobile simulation builds on OpenBSD
- Fix alignment of menu button on mobile
- Fix Compilation with Android NDK r26
- Clicking table headers causes high CPU consumption (#4264)
- Frequent clicking on table may cause the program to not respond (#4210)
- Application stops responding when scrolling a table (#4263)
- Possible crash parsing malformed JSON color (#4270)
- NewFolderOpen: incomplete filenames (#2165)
- Resolve issue where storage.List could crash with short URI (#4271)
- TextTruncateEllipsis abnormally truncates strings with multi-byte UTF-8 characters (#4283)
- Last character doesn't appear in Select when there is a special character (#4293)
- Resolve random crash in DocTab (#3909)
- Selecting items from a list caused the keyboard to popup on Android (#4236)
- Rounded corners in rectangle (#1090)
- Support for emoji in text
- Layout debugging (with
-tags debug
build flag) (#3314) - GridWrap collection widget
- Add table headers (#1658, #3594)
- Add mobile back button handling (#2910)
- Add option to disable UI animations (#1813)
- Text truncation ellipsis (#1659)
- Add support for binding tree data, include new
NewTreeWithData
- Add support for OpenType fonts (#3245)
- Add
Window.SetOnDropped
to handle window-wide item drop on desktop - Add lists to the types supported by preferences API
- Keyboard focus handling for all collection widgets
- Add APIs for refreshing individual items in collections (#3826)
- Tapping slider moves it to that position (#3650)
- Add
OnChangeEnded
callback toSlider
(#3652) - Added keyboard controls to
Slider
- Add
NewWarningThemedResource
andNewSuccessThemedResource
along withNewColoredResource
(#4040) - Custom hyperlink callback for rich text hyperlinks (#3335)
- Added
dialog.NewCustomWithoutButtons
, with aSetButtons
method (#2127, #2782) - Added
SetConfirmImportance
todialog.ConfirmDialog
. - Added
FormDialog.Submit()
to close and submit the dialog if validation passes - Rich Text image alignment (#3810)
- Bring back
theme.HyperlinkColor
(#3867) - Added
Importance
field onLabel
to color the text - Navigating in entry quickly with ctrl key (#2462)
- Support
.desktop
file metadata inFyneApp.toml
for Linux and BSD - Support mobile simulator on FreeBSD
- Add data binding boolean operators
Not
,And
andOr
- Added
Entry.Append
,Select.SetOptions
,Check.SetText
,FormDialog.Submit
- Add
ShowPopUpAtRelativePosition
andPopUp.ShowAtRelativePosition
- Add desktop support to get key modifiers with
CurrentKeyModifiers
- Add geometry helpers
NewSquareSize
andNewSquareOffsetPos
- Add
--pprof
option to fyne build commands to enable profiling - Support compiling from Android (termux)
- Go 1.17 or later is now required.
- Theme updated for rounded corners on buttons and input widgets
widget.ButtonImportance
is nowwidget.Importance
- The
Max
container and layout have been renamedStack
for clarity - Refreshing an image will now happen in app-thread not render process, apps may wish to add async image load
- Icons for macOS bundles are now padded and rounded, disable with "-use-raw-icon" (#3752)
- Update Android target SDK to 33 for Play Store releases
- Focus handling for List/Tree/Table are now at the parent widget not child elements
- Accordion widget now fills available space - put it inside a
VBox
container for old behavior (#4126) - Deprecated theme.FyneLogo() for later removal (#3296)
- Improve look of menu shortcuts (#2722)
- iOS and macOS packages now default to using "XCWildcard" provisioning profile
- Improving performance of lookup for theme data
- Improved application startup time
- Rendering performance enhancements
dialog.NewProgressInfinite
is deprecated, but dialog.NewCustom isn't equivalent- Mouse cursor desync with Split handle when dragging (#3791)
- Minor graphic glitch with checkbox (#3792)
- binding.String===>Quick refresh *b.val will appear with new data reset by a call to OnChange (#3774)
- Fyne window becomes unresponsive when in background for a while (#2791)
- Hangs on repeated calls to
Select.SetSelected
in table. (#3684) Select
has wrong height, padding and border (#4142)widget.ImageSegment
can't be aligned. (#3505)- Memory leak in font metrics cache (#4108)
- Don't panic when loading preferences with wrong type (#4039)
- Button with icon has wrong padding on right (#4124)
- Preferences don't all save when written in
CloseIntercept
(#3170) - Text size does not update in Refresh for TextGrid
- DocTab selection underline not updated when deleting an Item (#3905)
- Single line Entry throws away selected text on submission (#4026)
- Significantly improve performance of large
TextGrid
andTree
widgets List.ScrollToBottom
not scrolling to show the totality of the last Item (#3829)- Setting
Position1
of canvas.Circle higher thanPosition2
causes panic. (#3949) - Enhance scroll wheel/touchpad scroll speed on desktop (#3492)
- Possible build issue on Windows with app metadata
Form
hint text has confusing padding to next widget (#4137)Entry
Placeholder Style Only Applied On Click (#4035)- Backspace and Delete key Do not Fire OnChanged Event (#4117)
- Fix
ProgressBar
text having the wrong color sometimes - Window doesn't render when called for the first time from system tray and the last window was closed (#4163)
- Possible race condition in preference change listeners
- Various vulnerabilities resolved through updating dependencies
- Wrong background for color dialog (#4199)
- Panic with unsupported font (#3646)
- Temporary manifest file not closed after building on Windows
- Panic when using autogenerated quit menu and having unshown windows (#3870)
- Using
canvas.ImageScaleFastest
not working on arm64 (#3891) - Disabled password Entry should also disable the ActionItem (#3908)
- Disabled RadioGroup does not display status (#3882)
- Negative TableCellID Row (#2857)
- Make sure we have sufficient space for the bar as well if content is tiny (#3898)
- Leak in image painter when replacing image.Image source regularly
- Links in Markdown/Rich Text lists breaks formatting (#2911)
- Crash when reducing window to taskbar with popup opened (#3877)
- RichText vertical scroll will truncate long content with horizontal lines (#3929)
- Custom metadata would not apply with
fyne release
command - Horizontal CheckGroup overlap when having long text (#3005)
- Fix focused colour of coloured buttons (#3462)
- Menu separator not visible with light theme (#3814)
- Memory leak when switching theme (#3640)
- Systray MenuItem separators not rendered in macOS root menu (#3759)
- Systray leaks window handles on Windows (#3760)
- RadioGroup miscalculates label widths in horizontal mode (#3386)
- Start of selection in entry is shifted when moving too fast (#3804)
- Performance issue in widget.List (#3816)
- Moving canvas items (e.g. Images) does not cause canvas repaint (#2205)
- Minor graphic glitch with checkbox (#3792)
- VBox and HBox using heap memory that was not required
- Menu hover is slow on long menus
- Linux, Windows and BSD builds could fail if gles was missing
- Fyne does not run perfectly on ARM-based MacOS platforms (#3639) *
- Panic on closing window in form submit on Мac M2 (#3397) *
- Wobbling slider effect for very small steps (#3648)
- Fix memory leak in test canvas refresh
- Optimise text texture memory by switching to single channel
- Packaging an android fyne app that uses tags can fail (#3641)
- NewAdaptiveGrid(0) blanks app window on start until first resize on Windows (#3669)
- Unnecessary refresh when sliding Split container
- Linux window resize refreshes all content
- Themed and unthemed svg resources can cache collide
- When packaging an ampersand in "Name" causes an error (#3195)
- Svg in ThemedResource without viewBox does not match theme (#3714)
- Missing menu icons in Windows system tray
- Systray Menu Separators don't respect the submenu placement (#3642)
- List row focus indicator disappears on scrolling (#3699)
- List row focus not reset when row widget is reused to display a new item (#3700)
- Avoid panic if accidental 5th nil is passed to Border container
- Mobile simulator not compiling on Apple M1/2
- Cropped letters in certain cases with the new v2.3.0 theme (#3500)
Many thanks indeed to Dymium for sponsoring an Apple M2 device which allowed us to complete the marked (*) issues.
- Pad app version to ensure Windows packages correctly (#3638)
- Custom shortcuts with fyne.KeyTab is not working (#3087)
- Running a systray app with root privileges resulted in panic (#3120)
- Markdown image with no title is not parsed (#3577)
- Systray app on macOS panic when started while machine sleeps (#3609)
- Runtime error with VNC on RaspbianOS (#2972)
- Hovered background in List widget isn't reset when scrolling reuses an existing list item (#3584)
- cmd/fyne package can't find FyneApp.toml when -src option has given (#3459)
- TextWrapWord will cause crash in RichText unverified (#3498)
- crash in widget.(*RichText).lineSizeToColumn (#3292)
- Crash in widget.(*Entry).SelectedText (#3290)
- Crash in widget.(*RichText).updateRowBounds.func1 (#3291)
- window is max size at all times (#3507)
- systray.Quit() is not called consistently when the app is closing (#3597)
- Software rendering would ignore scale for text
- crash when minimize a window which contains a stroked rectangle (#3552)
- Menu item would not appear disabled initially
- Wrong icon colour for danger and warning buttons
- Embedding Fyne apps in iFrame alignment issue
- Generated metadata can be in wrong directory
- Android RootURI may not exist when used for storage (#3207)
- Shiny new theme that was designed for us
- Improved text handling to support non-latin alphabets
- Add cloud storage and preference support
- Add menu icon and submenu support to system tray menus
- More button importance levels
ErrorImportance
,WarningImportance
- Support disabling of
AppTabs
andDocTabs
items - Add image support to rich text (#2366)
- Add CheckGroup.Remove (#3124)
- The buttons on the default theme are no longer transparent, but we added more button importance types
- Expose a storage.ErrNotExists for non existing documents (#3083)
- Update
go-gl/glfw
to build against latest Glfw 3.3.8 - List items in
widget.List
now implement the Focusable interface
- Displaying unicode or different language like Bengali doesn't work (#598)
- Cannot disable container.TabItem (#1904)
- Update Linux/XDG application theme to follow the FreeDesktop Dark Style Preference (#2657)
- Running
fyne package -os android
needs NDK 16/19c (#3066) - Caret position lost when resizing a MultilineEntry (#3024)
- Fix possible crash in table resize (#3369)
- Memory usage surge when selecting/appending MultilineEntry text (#3426)
- Fyne bundle does not support appending when parameter is a directory
- Crash parsing invalid file URI (#3275)
- Systray apps on macOS can only be terminated via the systray menu quit button (#3395)
- Wayland Scaling support: sizes and distances are scaled wrong (#2850)
- Google play console minimum API level 31 (#3375)
- Data bound entry text replacing selection is ignored (#3340)
- Split Container does not respect item's Visible status (#3232)
- Android - Entry - OnSubmitted is not working (#3267)
- Can't set custom CGO_CFLAGS and CGO_LDFLAGS with "fyne package" on darwin (#3276)
- Text line not displayed in RichText (#3117)
- Segfault when adding items directly in form struct (#3153)
- Preferences RemoveValue does not save (#3229)
- Create new folder directly from FolderDialog (#3174)
- Slider drag handle is clipped off at minimum size (#2966)
- Entry text "flickering" while typing (#3461)
- Rendering of not changed canvas objects after an event (#3211)
- Form dialog not displaying hint text and validation errors (#2781)
- Iphone incorrect click coordinates in zoomed screen view (#3122)
- CachedFontFace seems to be causing crash (#3134)
- Fix possible compile error if "fyne build" is used without icon metadata
- Detect and use recent Android NDK toolchain
- Handle fyne package -release and fyne release properly for Android and iOS
- Fix issue with mobile simulation when systray used
- Fix incorrect size and position for radio focus indicator (#3137)
- Regression: Preferences are not parsed at program start (#3125)
- Wrappable RichText in a Split container causes crash (#3003, #2961)
- meta.Version is always 1.0.0 on android & ios (#3109)
- Windows missing version metadata when packaged (#3046)
- Fyne package would not build apps using old Fyne versions
- System tray icon may not be removed on app exit in Windows
- Emphasis in Markdown gives erroneous output in RichText (#2974)
- When last visible window is closed, hidden window is set visible (#3059)
- Do not close app when last window is closed but systrayMenu exists (#3092)
- Image with ImageFillOriginal not showing (#3102)
- Fix various race conditions and compatibility issues with System tray menus
- Resolve issue where macOS systray menu may not appear
- Updated yaml dependency to fix CVE-2022-28948
- Tab buttons stop working after removing a tab (#3050)
- os.SetEnv("FYNE_FONT") doesn't work in v2.2.0 (#3056)
- Add SetIcon method on ToolbarAction (#2475)
- Access compiled app metadata using new
App.Metadata()
method - Add support for System tray icon and menu (#283)
- Support for Android Application Bundle (.aab) (#2663)
- Initial support for OpenBSD and NetBSD
- Add keyboard shortcuts to menu (#682)
- Add technical preview of web driver and
fyne serve
command - Added
iossimulator
build target (#1917) - Allow dynamic themes via JSON templates (#211)
- Custom hyperlink callback (#2979)
- Add support for
.ico
file when compiling for windows (#2412) - Add binding.NewStringWithFormat (#2890)
- Add Entry.SetMinRowsVisible
- Add Menu.Refresh() and MainMenu.Refresh() (#2853)
- Packages for Linux and BSD now support installing into the home directory
- Add
.RemoveAll()
to containers - Add an AllString validator for chaining together string validators
- Toolbar item constructors now return concrete types instead of ToolbarItem
- Low importance buttons no longer draw button color as a background
- ProgressBar widget height is now consistent with other widgets
- Include check in DocTabs menu to show current tab
- Don't call OnScrolled if offset did not change (#2646)
- Prefer ANDROID_NDK_HOME over the ANDROID_HOME ndk-bundle location (#2920)
- Support serialisation / deserialisation of the widget tree (#5)
- Better error reporting / handling when OpenGL is not available (#2689)
- Memory is now better reclaimed on Android when the OS requests it
- Notifications on Linux and BSD now show the application icon
- Change listeners for preferences no longer run when setting the same value
- The file dialog now shows extensions in the list view for better readability
- Many optimisations and widget performance enhancements
- Updated various dependencies to their latest versions
- SendNotification does not show app name on Windows (#1940)
- Copy-paste via keyboard don't work translated keyboard mappings on Windows (#1220)
- OnScrolled triggered when offset hasn't changed (#1868)
- Carriage Return (\r) is rendered as space (#2456)
- storage.List() returns list with nil elements for empty directories (#2858)
- Entry widget, position of cursor when clicking empty space (#2877)
- SelectEntry cause UI hang (#2925)
- Font cutoff with bold italics (#3001)
- Fyne error: Preferences load error (#2936, 3015)
- Scrolled List bad redraw when window is maximized (#3013)
- Linux and BSD packages not being installable if the name contained spaces
- SetTheme() is not fully effective for widget.Form (#2810)
- FolderOpenDialog SetDismissText is ineffective (#2830)
- window.Resize() does not work if SetFixedSize(true) is set after (#2819)
- Container.Remove() race causes crash (#2826, #2775, #2481)
- FixedSize Window improperly sized if contains image with ImageFillOriginal (#2800)
- The text on button can't be show correctly when use imported font (#2512)
- Fix issues with DocTabs scrolling (#2709)
- Fix possible crash for tapping extended Radio or Check item
- Resolve lookup of relative icons in FyneApp.toml
- Window not shown when SetFixedSize is used without Resize (#2784)
- Text and links in markdown can be rendered on top of each other (#2695)
- Incorrect cursor movement in a multiline entry with wrapping (#2698)
- Scrolling list bound to data programmatically causes nil pointer dereference (#2549)
- Rich text from markdown can get newlines wrong (#2589)
- Fix crash on 32bit operating systems (#2603)
- Compile failure on MacOS 10.12 Sierra (#2478)
- Don't focus widgets on mobile where keyboard should not display (#2598)
- storage.List doesn't return complete URI on Android for "content:" scheme (#2619)
- Last word of the line and first word of the next line are joined in markdown parse (#2647)
- Support for building
cmd/fyne
on Windows arm64 - Fixed FreeBSD requiring installed glfw library dependency (#1928)
- Apple M1: error when using mouse drag to resize window (#2188)
- Struct binding panics in reload with slice field (#2607)
- File Dialog favourites can break for certain locations (#2595)
- Define user friendly names for Android Apps (#2653)
- Entry validator not updating if content is changed via data binding after SetContent (#2639)
- CenterOnScreen not working for FixedSize Window (#2550)
- Panic in boundStringListItem.Get() (#2643)
- Can't set an app/window icon to be an svg. (#1196)
- SetFullScreen(false) can give error (#2588)
- Fix issue where table could select cells beyond data bound
- Some fast taps could be ignored (#2484)
- iOS app stops re-drawing mid-frame after a while (#950)
- Mobile simulation mode did not work on Apple M1 computers
- TextGrid background color can show gaps in render (#2493)
- Fix alignment of files in list view of file dialog
- Crash setting visible window on macOS to fixed size (#2488)
- fyne bundle ignores -name flag in windows (#2395)
- Lines with nil colour would crash renderer
- Android -nm tool not found with NDK 23 (#2498)
- Runtime panic because out of touchID (#2407)
- Long text in Select boxes overflows out of the box (#2522)
- Calling SetText on Label may not refresh correctly
- Menu can be triggered by # key but not always Alt
- Cursor position updates twice with delay (#2525)
- widgets freeze after being in background and then a crash upon pop-up menu (#2536)
- too many Refresh() calls may now cause visual artifacts in the List widget (#2548)
- Entry.SetText may panic if called on a multiline entry with selected text (#2482)
- TextGrid not always drawing correctly when resized (#2501)
- DocTabs container for handling multiple open files
- Lifecycle API for handling foreground, background and other event
- Add RichText widget and Markdown parser
- Add TabWidth to TextStyle to specify tab size in spaces
- Add CheckGroup widget for multi-select
- Add FyneApp.toml metadata file to ease build commands
- Include http and https in standard repositories
- Add selection color to themes
- Include baseline information in driver font measurement
- Document storage API (App.Storage().Create() and others)
- Add "App Files" to file dialog for apps that use document storage
- Tab overflow on AppTabs
- Add URI and Unbound type to data bindings
- Add keyboard support for menus, pop-ups and buttons
- Add SimpleRenderer to help make simple widgets (#709)
- Add scroll functions for List, Table, Tree (#1892)
- Add selection and disabling to MenuItem
- Add Alignment to widget.Select (#2329)
- Expose ScanCode for keyboard events originating from hardware (#1523)
- Support macOS GPU switching (#2423)
- Focusable widgets are no longer focused on tap, add canvas.Focus(obj) in Tapped handler if required
- Move to background based selection for List, Table and Tree
- Update fyne command line tool to use --posix style parameters
- Switch from gz to xz compression for unix packages
- Performance improvements with line, text and raster rendering
- Items not yet visible can no longer be focused
- Lines can now be drawn down to 1px (instead of 1dp) (#2298)
- Support multiple lines of text on button (#2378)
- Improved text layout speed by caching string size calculations
- Updated to require Go 1.14 so we can use some new features
- Window Resize request is now asynchronous
- Up/Down keys take cursor home/end when on first/last lines respectively
- Correctly align text tabs (#1791)
- Mobile apps theme does not match system (#472)
- Toolbar with widget.Label makes the ToolbarAction buttons higher (#2257)
- Memory leaks in renderers and canvases cache maps (#735)
- FileDialog SetFilter does not work on Android devices (#2353)
- Hover fix for List and Tree with Draggable objects
- Line resize can flip slope (#2208)
- Deadlocks when using widgets with data (#2348)
- Changing input type with keyboard visible would not update soft keyboards
- MainMenu() Close item does NOT call function defined in SetCloseIntercept (#2355)
- Entry cursor position with mouse is offset vertically by theme.SizeNameInputBorder (#2387)
- Backspace key is not working on Android AOSP (#1941)
- macOS: 'NSUserNotification' has been deprecated (#1833)
- macOS: Native menu would add new items if refreshed
- iOS builds fail since Go 1.16
- Re-add support for 32 bit iOS devices, if built with Go 1.14
- Android builds fail on Apple M1 (#2439)
- SetFullScreen(true) before ShowAndRun fails (#2446)
- Interacting with another app when window.SetFullScreen(true) will cause the application to hide itself. (#2448)
- Sequential writes to preferences does not save to file (#2449)
- Correct Android keyboard handling (#2447)
- MIUI-Android: The widget’s Hyperlink cannot open the URL (#1514)
- Improved performance of data binding conversions and text MinSize
- Disable Form labels when the element it applys to is disabled (#1530)
- Entry popup menu now fires shortcuts so extended widgets can intercept
- Update Android builds to SDK 30
- sendnotification show appID for name on windows (#1940)
- Fix accidental removal of windows builds during cross-compile
- Removing an item from a container did not update layout
- Update title bar on Windows 10 to match OS theme (#2184)
- Tapped triggered after Drag (#2235)
- Improved documentation and example code for file dialog (#2156)
- Preferences file gets unexpectedly cleared (#2241)
- Extra row dividers rendered on using SetColumnWidth to update a table (#2266)
- Fix resizing fullscreen issue
- Fullscreen changes my display resolution when showing a dialog (#1832)
- Entry validation does not work for empty field (#2179)
- Tab support for focus handling missing on mobile
- ScrollToBottom not always scrolling all the way when items added to container.Scroller
- Fixed scrollbar disappearing after changing content (#2303)
- Calling SetContent a second time with the same content will not show
- Drawing text can panic when Color is nil (#2347)
- Optimisations when drawing transparent rectangle or whitespace strings
- Optimisations for TextGrid rendering
- Data binding with widget.List sometimes crash while scrolling (#2125)
- Fix compilation on FreeBSD 13
- DataLists should notify only once when change.
- Keyboard will appear on Android in disabled Entry Widget (#2139)
- Save dialog with filename for Android
- form widget can't draw hinttext of appended item. (#2028)
- Don't create empty shortcuts (#2148)
- Install directory for windows install command contains ".exe"
- Fix compilation for Linux Wayland apps
- Fix tab button layout on mobile (#2117)
- Options popup does not move if a SelectEntry widget moves with popup open
- Speed improvements to Select and SelectEntry drop down
- theme/fonts has an apache LICENSE file but it should have SIL OFL (#2193)
- Fix build requirements for target macOS platforms (#2154)
- ScrollEvent.Position and ScrollEvent.AbsolutePosition is 0,0 (#2199)
- Text can now be copied from a disable Entry using keyboard shortcuts
- Slider offset position could be incorrect for mobile apps
- Correct error in example code
- When graphics init fails then don't try to continue running (#1593)
- Don't show global settings on mobile in fyne_demo as it's not supported (#2062)
- Empty selection would render small rectangle in Entry
- Do not show validation state for disabled Entry
- dialog.ShowFileSave did not support mobile (#2076)
- Fix issue that storage could not write to files on iOS and Android
- mobile app could crash in some focus calls
- Duplicate symbol error when compiling for Android with NDK 23 (#2064)
- Add internet permission by default for Android apps (#1715)
- Child and Parent support in storage were missing for mobile appps
- Various crashes with Entry and multiline selections (including #1989)
- Slider calls OnChanged for each value between steps (#1748)
- fyne command doesn't remove temporary binary from src (#1910)
- Advanced Color picker on mobile keeps updating values forever after sliding (#2075)
- exec.Command and widget.Button combination not working (#1857)
- After clicking a link on macOS, click everywhere in the app will be linked (#2112)
- Text selection - Shift+Tab bug (#1787)
- An Entry with
Wrapping=fyne.TextWrapOff
no longer blocks scroll events from a parent
- Dialog.Resize() has no effect if called before Dialog.Show() (#1863)
- SelectTab does not always correctly set the blue underline to the selected tab (#1872)
- Entry Validation Broken when using Data binding (#1890)
- Fix background colour not applying until theme change
- android runtime error with fyne.dialog (#1896)
- Fix scale calculations for Wayland phones (PinePhone)
- Correct initial state of entry validation
- fix entry widget mouse drag selection when scrolled
- List widget panic when refreshing after changing content length (#1864)
- Fix image caching that was too aggressive on resize
- Pointer and cursor misalignment in widget.Entry (#1937)
- SIGSEGV Sometimes When Closing a Program by Clicking a Button (#1604)
- Advanced Color Picker shows Black for custom primary color as RGBA (#1970)
- Canvas.Focus() before window visible causes application to crash (#1893)
- Menu over Content (#1973)
- Error compiling fyne on Apple M1 arm64 (#1739)
- Cells are not getting draw in correct location after column resize. (#1951)
- Possible panic when selecting text in a widget.Entry (#1983)
- Form validation doesn't enable submit button (#1965)
- Creating a window shows it before calling .Show() and .Hide() does not work (#1835)
- Dialogs are not refreshed correctly on .Show() (#1866)
- Failed creating setting storage : no such directory (#2023)
- Erroneous custom filter types not supported error on mobile (#2012)
- High importance button show no hovered state (#1785)
- List widget does not render all visible content after content data gets shorter (#1948)
- Calling Select on List before draw can crash (#1960)
- Dialog not resizing in newly created window (#1692)
- Dialog not returning to requested size (#1382)
- Entry without scrollable content prevents scrolling of outside scroller (#1939)
- fyne_demo crash after selecting custom Theme and table (#2018)
- Table widget crash when scrolling rapidly (#1887)
- Cursor animation sometimes distorts the text (#1778)
- Extended password entry panics when password revealer is clicked (#2036)
- Data binding limited to 1024 simultaneous operations (#1838)
- Custom theme does not refresh when variant changes (#2006)
These changes may break some apps, please read the
upgrading doc for more info
The import path is now fyne.io/fyne/v2
when you are ready to make the update.
-
Coordinate system to float32
- Size and Position units were changed from int to float32
Text.TextSize
moved to float32 andfyne.MeasureText
now takes a float32 size parameter- Removed
Size.Union
(useSize.Max
instead) - Added fyne.Delta for difference-based X, Y float32 representation
- DraggedEvent.DraggedX and DraggedY (int, int) to DraggedEvent.Dragged (Delta)
- ScrollEvent.DeltaX and DeltaY (int, int) moved to ScrollEvent.Scrolled (Delta)
-
Theme API update
fyne.Theme
moved tofyne.LegacyTheme
and can be load to a new theme usingtheme.FromLegacy
- A new, more flexible, Theme interface has been created that we encourage developers to use
-
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
andHideShadow
were removed, useImportance
-
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
(nowwidget.FileIcon
)widget.Radio
(nowwidget.RadioGroup
)widget.AccordionContainer
(nowwidget.Accordion
)layout.NewFixedGridLayout()
(nowlayout.NewGridWrapLayout()
)widget.ScrollContainer
(nowcontainer.Scroll
)widget.SplitContainer
(nowcontainer.Spilt
)widget.Group
(replaced bywidget.Card
)widget.Box
(nowcontainer.NewH/VBox
, withChildren
field moved toObjects
)widget.TabContainer
andwidget.AppTabs
(nowcontainer.AppTabs
)
-
Many deprecated fields have been removed, replacements listed in API docs 1.4
- for specific information you can browse https://developer.fyne.io/api/v1.4/
- Data binding API to connect data sources to widgets and sync data
- Add preferences data binding and
Preferences.AddChangeListener
- Add bind support to
Check
,Entry
,Label
,List
,ProgressBar
andSlider
widgets
- Add preferences data binding and
- Animation API for handling smooth element transitions
- Add animations to buttons, tabs and entry cursor
- Storage repository API for connecting custom file sources
- Add storage functions
Copy
,Delete
andMove
forURI
- Add
CanRead
,CanWrite
andCanList
to storage APIs
- Add storage functions
- New Theme API for easier customisation of apps
- Add ability for custom themes to support light/dark preference
- Support for custom icons in theme definition
- New
theme.FromLegacy
helper to use old theme API definitions
- Add fyne.Vector for managing x/y float32 coordinates
- Add MouseButtonTertiary for middle mouse button events on desktop
- Add
canvas.ImageScaleFastest
for faster, less precise, scaling - Add new
dialog.Form
that will phase outdialog.Entry
- Add keyboard control for main menu
- Add
Scroll.OnScrolled
event for seeing changes in scroll container - Add
TextStyle
andOnSubmitted
toEntry
widget - Add support for
HintText
and showing validation errors inForm
widget - Added basic support for tab character in
Entry
,Label
andTextGrid
-
Coordinate system is now float32 - see breaking changes above
-
ScrollEvent and DragEvent moved to Delta from (int, int)
-
Change bundled resources to use more efficient string storage
-
Left and Right mouse buttons on Desktop are being moved to
MouseButtonPrimary
andMouseButtonSecondary
-
Many optimisations and widget performance enhancements
-
Moving to new
container.New()
andcontainer.NewWithoutLayout()
constructors (replacingfyne.NewContainer
andfyne.NewContainerWithoutLayout
) -
Moving storage APIs
OpenFileFromURI
,SaveFileToURI
andListerForURI
toReader
,Writer
andList
functions
- Validating a widget in widget.Form before renderer was created could cause a panic
- Added file and folder support for mobile simulation support (#1470)
- Appending options to a disabled widget.RadioGroup shows them as enabled (#1697)
- Toggling toolbar icons does not refresh (#1809)
- Black screen when slide up application on iPhone (#1610)
- Properly align Label in FormItem (#1531)
- Mobile dropdowns are too low (#1771)
- Cursor does not go down to next line with wrapping (#1737)
- Entry: while adding text beyond visible reagion there is no auto-scroll (#912)
- Fix crash when showing file open dialog on iPadOS
- Fix possible missing icon on initial show of disabled button
- Capturing a canvas on macOS retina display would not capture full resolution
- Fix the release build flag for mobile
- Fix possible race conditions for canvas capture
- Improvements to
fyne get
command downloader - Fix tree, so it refreshes visible nodes on Refresh()
- TabContainer Panic when removing selected tab (#1668)
- Incorrect clipping behaviour with nested scroll containers (#1682)
- MacOS Notifications are not shown on subsequent app runs (#1699)
- Fix the behavior when dragging the divider of split container (#1618)
- [fyne-cli] Add support for passing custom build tags (#1538)
- Run validation on content change instead of on each Refresh in widget.Entry
- [fyne-cli] Android: allow to specify an inline password for the keystore
- Fixed Card widget MinSize (#1581)
- Fix missing release tag to enable BuildRelease in Settings.BuildType()
- Dialog shadow does not resize after Refresh (#1370)
- Android Duplicate Number Entry (#1256)
- Support older macOS by default - back to 10.11 (#886)
- Complete certification of macOS App Store releases (#1443)
- Fix compilation errors for early stage Wayland testing
- Fix entry.SetValidationError() not working correctly
- Table columns can now be different sizes using SetColumnWidth
- Avoid unnecessary validation check on Refresh in widget.Form
- Tree could flicker on mouse hover (#1488)
- Content of table cells could overflow when sized correctly
- file:// based URI on Android would fail to list folder (#1495)
- Images in iOS release were not all correct size (#1498)
- iOS compile failed with Go 1.15 (#1497)
- Possible crash when minimising app containing List on Windows
- File chooser dialog ignores drive Z (#1513)
- Entry copy/paste is crashing on android 7.1 (#1511)
- Fyne package creating invalid windows packages (#1521)
- Menu bar initially doesn't respond to mouse input on macOS (#505)
- iOS: Missing CFBundleIconName and asset catalog (#1504)
- CenterOnScreen causes crash on MacOS when called from goroutine (#1539)
- desktop.MouseHover Button state is not reliable (#1533)
- Initial validation status in widget.Form is not respected
- Fix nil reference in disabled buttons (#1558)
-
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
- Use icons for file dialog favourites (#1186)
- Add ScrollContainer ScrollToBottom and ScrollToTop
- Make file filter case sensitive (#1185)
- Allow popups to create dialogs (#1176)
- Use default cursor for dragging scrollbars (#1172)
- Correctly parse SVG files with missing X/Y for rect
- Fix visibility of Entry placeholder when text is set (#1193)
- Fix encoding issue with Windows notifications (#1191)
- Fix issue where content expanding on Windows could freeze (#1189)
- Fix errors on Windows when reloading Fyne settings (#1165)
- Dialogs not updating theme correctly (#1201)
- Update the extended progressbar on refresh (#1219)
- Segfault if font fails (#1200)
- Slider rendering incorrectly when window maximized (#1223)
- Changing form label not refreshed (#1231)
- Files and folders starting "." show no name (#1235)
- Linux packaged apps now include a Makefile to aid install
- Fyne package supports specific architectures for Android
- Reset missing textures on refresh
- Custom confirm callbacks now called on implicitly shown dialogs
- SelectEntry can update drop-down list during OnChanged callback
- TextGrid whitespace color now matches theme changes
- Order of Window Resize(), SetFixedSize() and CenterOnScreen() does no matter before Show()
- Containers now refresh their visuals as well as their Children on Refresh()
- Capped StrokeWidth on canvas.Line (#831)
- Canvas lines, rectangles and circles do not resize and refresh correctly
- Black flickering on resize on MacOS and OS X (possibly not on Catalina) (#1122)
- Crash when resizing window under macOS (#1051, #1140)
- Set SetFixedSize to true, the menus are overlapped (#1105)
- Ctrl+v into text input field crashes app. Presumably clipboard is empty (#1123, #1132)
- Slider default value doesn't stay inside range (#1128)
- The position of window is changed when status change from show to hide, then to show (#1116)
- Creating a windows inside onClose handler causes Fyne to panic (#1106)
- Backspace in entry after SetText("") can crash (#1096)
- Empty main menu causes panic (#1073)
- Installing using
fyne install
on Linux now works on distrubutions that don't use/usr/local
- Fix recommendations from staticcheck
- Unable to overwrite file when using dialog.ShowFileSave (#1168)
- File open and save dialogs (#225)
- Add notifications support (#398)
- Add text wrap support (#332)
- Add Accordion widget (#206)
- Add TextGrid widget (#115)
- Add SplitContainer widget (#205)
- Add new URI type and handlers for cross-platform data access
- Desktop apps can now create splash windows
- Add ScaleMode to images, new ImageScalePixels feature for retro graphics
- Allow widgets to influence mouse cursor style (#726)
- Support changing the text on form submit/cancel buttons
- Support reporting CapsLock key events (#552)
- Add OnClosed callback for Dialog
- Add new image test helpers for validating render output
- Support showing different types of soft keyboard on mobile devices (#971, #975)
- Upgraded underlying GLFW library to fix various issues (#183, #61)
- Add submenu support and hover effects (#395)
- Default to non-premultiplied alpha (NRGBA) across toolkit
- Rename FixedGridLayout to GridWrapLayout (deprecate old API) (#836)
- Windows redraw and animations continue on window resize and move
- New...PopUp() methods are being replaced by Show...Popup() or New...Popup().Show()
- Apps started on a goroutine will now panic as this is not supported
- On Linux apps now simulate 120DPI instead of 96DPI
- Improved fyne_settings scale picking user interface
- Reorganised fyne_demo to accommodate growing collection of widgets and containers
- Rendering now happens on a different thread to events for more consistent drawing
- Improved text selection on mobile devices
- Panic when trying to paste empty clipboard into entry (#743)
- Scale does not match user configuration in Windows 10 (#635)
- Copy/Paste not working on Entry Field in Windows OS (#981)
- Select widgets with many options overflow UI without scrolling (#675)
- android: typing in entry expands only after full refresh (#972)
- iOS app stops re-drawing mid frame after a while (#950)
- Too many successive GUI updates do not properly update the view (904)
- iOS apps would not build using Apple's new certificates
- Preserve aspect ratio in SVG stroke drawing (#976)
- Fixed many race conditions in widget data handling
- Various crashes and render glitches in extended widgets
- Fix security issues reported by gosec (#742)
- Added Direction field to ScrollContainer and NewHScrollContainer, NewVScrollContainer constructors (#763)
- Added Scroller.SetMinSize() to enable better defaults for scrolled content
- Added "fyne vendor" subcommand to help packaging fyne dependencies in projects
- Added "fyne version" subcommand to help with bug reporting (#656)
- Clipboard (cut/copy/paste) is now supported on iOS and Android (#414)
- Preferences.RemoveValue() now allows deletion of a stored user preference
- Report keys based on name not key code - fixes issue with shortcuts with AZERTY (#790)
- Mobile builds now support go modules (#660)
- Building for mobile would try to run desktop build first
- Mobile apps now draw the full safe area on a screen (#799)
- Preferences were not stored on mobile apps (#779)
- Window on Windows is not controllable after exiting FullScreen mode (#727)
- Soft keyboard not working on some Samsung/LG smart phones (#787)
- Selecting a tab on extended TabContainer doesn't refresh button (#810)
- Appending tab to empty TabContainer causes divide by zero on mobile (#820)
- Application crashes on startup (#816)
- Form does not always update on theme change (#842)
- Add media and volume icons to default themes (#649)
- Add Canvas.PixelCoordinateForPosition to find pixel locations if required
- Add ProgressInfinite dialog
- Warn if -executable or -sourceDir flags are used for package on mobile (#652)
- Update scale based on device for mobile apps
- Windows without a title will now be named "Fyne Application"
- Revert fix to quit mobile apps - this is not allowed in guidelines
- App.UniqueID() did not return current app ID
- Fyne package ignored -name flag for ios and android builds (#657)
- Possible crash when appending tabs to TabContainer
- FixedSize windows not rescaling when dragged between monitors (#654)
- Fix issues where older Android devices may not background or rotate (#677)
- Crash when setting theme before window content set (#688)
- Correct form extend behaviour (#694)
- Select drop-down width is wrong if the drop-down is too tall for the window (#706)
- Add SelectedText() function to Entry widget
- New mobile.Device interface exposing ShowVirtualKeyboard() (and Hide...)
- Scale calculations are now relative to system scale - the default "1" matches the system
- Update scale on Linux to be "auto" by default (and numbers are relative to 96DPI standard) (#595)
- When auto scaling check the monitor in the middle of the window, not top left
- bundled files now have a standard header to optimise some tools like go report card
- Shortcuts are now handled by the event queue - fixed possible deadlock
- Scroll horizontally when holding shift key (#579)
- Updating text and calling refresh for widget doesn't work (#607)
- Corrected visual behaviour of extended widgets including Entry, Select, Check, Radio and Icon (#615)
- Entries and Selects that are extended would crash on right click.
- PasswordEntry created from Entry with Password = true has no revealer
- Dialog width not always sufficient for title
- Pasting unicode characters could panic (#597)
- Setting theme before application start panics on macOS (#626)
- MenuItem type conflicts with other projects (#632)
- Add TouchDown, TouchUp and TouchCancel API in driver/mobile for device specific events
- Add support for adding and removing tabs from a tab container (#444)
- Issues when settings changes may not be monitored (#576)
- Layout of hidden tab container contents on mobile (#578)
- Mobile apps would not quit when Quit() was called (#580)
- Shadows disappeared when theme changes (#589)
- iOS apps could stop rendering after many refreshes (#584)
- Fyne package could fail on Windows (#586)
- Horizontal only scroll container may not refresh using scroll wheel
- Mobile support - iOS and Android, including "fyne package" command
- Support for OpenGL ES and embedded linux
- New BaseWidget for building custom widgets
- Support for diagonal gradients
- Global settings are now saved and can be set using the new fyne_settings app
- Support rendering in Go playground using playground.Render() helpers
- "fyne install" command to package and install apps on the local computer
- Add horizontal scrolling to ScrollContainer
- Add preferences API
- Add show/hide password icon when created from NewPasswordEntry
- Add NewGridLayoutWithRows to specify a grid layout with a set number of rows
- Add NewAdaptiveGridLayout which uses a column grid layout when horizontal and rows in vertical
- New Logo! Thanks to Storm for his work on this :)
- Applications no longer have a default (Fyne logo) icon
- Input events now execute one at a time to maintain the correct order
- Button and other widget callbacks no longer launch new goroutines
- FYNE_THEME and FYNE_SCALE are now overrides to the global configuration
- The first opened window no longer exits the app when closed (unless none others are open or Window.SetMaster() is called)
- "fyne package" now defaults icon to "Icon.png" so the parameter is optional
- Calling ExtendBaseWidget() sets up the renderer for extended widgets
- Entry widget now has a visible Disabled state, ReadOnly has been deprecated
- Bundled images optimised to save space
- Optimise rendering to reduce refresh on TabContainer and ScrollContainer
- Correct the color of Entry widget cursor if theme changes
- Error where widgets created before main() function could crash (#490)
- App.Run panics if called without a window (#527)
- Support context menu for disabled entry widgets (#488)
- Fix issue where images using fyne.ImageFillOriginal may not show initially (#558)
- Default scale value for canvases is now 1.0 instead of Auto (DPI based)
- Correct icon name in linux packages
- Fullscreen before showing a window works again
- Incorrect MinSize of FixedGrid layout in some situations
- Update text size on theme change
- Text handling crashes (#411, #484, #485)
- Layout of image only buttons
- TabItem.Content changes are reflected when refreshing TabContainer (#456)
- Add support for custom Windows manifest files in fyne package
- Dismiss non-modal popovers on secondary tap
- Only measure visible objects in layouts and minSize calculations (#343)
- Don't propagate show/hide in the model - allowing children of tabs to remain hidden
- Disable cut/copy for password fields
- Correctly calculate grid layout minsize as width changes
- Select text at end of line when double tapping beyond width
- Scale could be too large on macOS Retina screens
- Window with fixed size changes size when un-minimized on Windows (#300)
- Setting text on a label could crash if it was not yet shown (#381)
- Multiple Entry widgets could have selections simultaneously (#341)
- Hover effect of radio widget too low (#383)
- Missing shadow on Select widget
- Incorrect rendering of subimages within Image object
- Size calculation caches could be skipped causing degraded performance
- Menubar and PopUpMenu (#41)
- PopUp widgets (regular and modal) and canvas overlay support (#242)
- Add gradient (linear and radial) to canvas
- Add shadow support for overlays, buttons and scrollcontainer
- Text can now be selected (#67)
- Support moving through inputs with Tab / Shift-Tab (#82)
- canvas.Capture() to save the content of a canvas
- Horizontal layout for widget.Radio
- Select widget (#21)
- Add support for disabling widgets (#234)
- Support for changing icon color (#246)
- Button hover effect
- Pointer drag event to main API
- support for desktop mouse move events
- Add a new "hints" build tag that can suggest UI improvements
- TabContainer tab location can now be set with SetTabLocation()
- Dialog windows now appear as modal popups within a window
- Don't add a button bar to a form if it has no buttons
- Moved driver/gl package to internal/driver/gl
- Clicking/Tapping in an entry will position the cursor
- A container with no layout will not change the position or size of it's content
- Update the fyne_demo app to reflect the expanding feature set
- Allow scrollbars to be dragged (#133)
- Unicode char input with Option key on macOS (#247)
- Resizng fixed size windows (#248)
- Fixed various bugs in window sizing and padding
- Button icons do not center align if label is empty (#284)
- Support for go modules
- Transparent backgrounds for widgets
- Entry.OnCursorChanged()
- Radio.Append() and Radio.SetSelected() (#229)
- Clicking outside a focused element will unfocus it
- Handle key repeat for non-runes (#165)
- Remove duplicate options from a Radio widget (#230)
- Issue where paste shortcut is not called for Ctrl-V keyboard combination
- Cursor position when clearing text in Entry (#214)
- Antialias of lines and circles (fyne-io/examples#14)
- Crash on centering of windows (#220)
- Possible crash when closing secondary windows
- Possible crash when showing dialog
- Initial visibility of scroll bar in ScrollContainer
- Setting window icon when different from app icon.
- Possible panic on app.Quit() (#175)
- Various caches and race condition issues (#194, #217, #209).
The first major release of the Fyne toolkit delivers a stable release of the main functionality required to build basic GUI applications across multiple platforms.
- Canvas API (rect, line, circle, text, image)
- Widget API (box, button, check, entry, form, group, hyperlink, icon, label, progress bar, radio, scroller, tabs and toolbar)
- Light and dark themes
- Pointer, key and shortcut APIs (generic and desktop extension)
- OpenGL driver for Linux, macOS and Windows
- Tools for embedding data and packaging releases