All Versions
12
Latest Version
Avg Release Cycle
37 days
Latest Release
1018 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v0.1.5 Changes
November 24, 2021๐ Changed
- The sixtyfps compiler no longer "inline" all the elements, resulting in faster compilation time and smaller binaries.
- Implemented basic constant propagation in the sixtyfps compiler
๐ Fixed
- The Slider's changed callback was not being called with the fluent style (#621).
- Fixed compilation error in C++'s
sixtyfps::blocking_invoke_from_main_loop
when the callable returnsvoid
(#623). - Improve rendering quality on High-DPI screens on Windows when using Qt.
- Fixed linking errors when selecting the native style on Windows with C++.
- Fixed the maximization button in the window decoration when a window has a fixed size.
-
v0.1.4 Changes
October 22, 2021๐ Changed
- The TouchArea now grabs the mouse for every button instead of just the left button.
- The ScrollView's default viewport size is no longer hardcoded to 1000px but depends on the contents.
- In Rust, the
sixtyfps::Model
trait deprecates theattach_peer
function in favor ofmodel_tracker
, where all you need to do is return a reference to yoursixtyfps::ModelNotify
field.
โ Added
- Enable support for compressed SVG (.svgz).
- Viewer: added possibility to set shell callback handler with
--on <callback> <handler>
. - It is now possible to query the length of a model with
.length
.
๐ Fixed
- Fixed the
PointerEvent.kind
always being down. LineEdit.has-hocus
with the native style
-
v0.1.3 Changes
October 06, 2021๐ Changed
- Due to changes in the build system, the C++ build now requires CMake >= 3.19.
- Fluent style: The Slider and ScrollBar now updates as the mouse moves.
- Parentheses around callable expression is now deprecated.
- Naming a callback without calling it is now a hard error instead of producing error in the generated code.
โ Added
- New
no-frame
property of aWindow
which changes it to borderless/frameless - sixtyfps-compiler and sixtyfps-viewer can read the .60 file content from stdin by passing
-
- sixtyfps-viewer gained ability to read or save the property values to a json file with
--save-data
and--load-data
- New
StandardButton
widget - New
Dialog
element sixtyfps::Image
has now apath()
accessor function in Rust and C++ to access the optional path of the file on disk that's backing the image.- New
moved
andpointer-event
callback inTouchArea
- New
AboutSixtyFPS
widget
๐ Fixed
- Fixed panic when using
TabWidget
withText
elements and the native style. - Fixed panic when caling
hide()
on asixtyfps::Window
from within a callback triggered by keyboard/mouse input when using the GL backend. - Rust: The implementation of ModelModel::set_row_data now forward the call to the inner model
-
v0.1.2 Changes
September 09, 2021๐ Changed
- Apply the default text color from the style for the
color
ofText
andTextInput
elements, to contrast correctly with the application ofWindow
'sbackground
property. - LineEdit scrolls to keep the cursor visible
- The
clicked
callbacks are now only emitted if the release event is within the TouchArea's geometry - parentheses around the condition are no longer needed in
if
elements:if condition : Foo { ... }
โ Added
- One can now set an alias from the root to a global callback
- It is now possible to access properties and callback of exported global objects from the native code (#96)
- C++ API:
blocking_invoke_from_event_loop
: a blocking version ofinvoke_from_event_loop
- TextInput can support multiple line by setting single-line to false
- The CMake integration now allows enabling/disabling SixtyFPS library features, such as Wayland support or the dynamic run-time interpreter.
- Added
image-rendering
property to Image to control how the image is scaled TextEdit
widget- Support for semantic tokens in LSP
๐ Fixed
- The interpreter API correctly return an error instead of panicking when setting properties or calling callbacks that don't exist
- The
has-hover
property is correctly reset the false when releasing the mouse outside the touch area
- Apply the default text color from the style for the
-
v0.1.1 Changes
August 19, 2021๐ Changed
- Fixed lookup scope when resolving model expression in
for
orif
constructs: theself
element now refers to the correct element instead of the root. - Rust: default to the native style if Qt is available
- Rust: deprecated
SharedVector::as_slice_mut()
. UseSharedVector::make_mut_slice()
instead. - The default non-native widget style is now the new "fluent" style.
- The internal normalization of identifiers is using
-
instead of_
, this is an internal change, but it can be seen in error messages. When listing properties the identifiers are preserved. For fields in structures they are normalized.- ๐ Show a compilation error when there are duplicated element ids.
- The
clip
property can now be any expression.
โ Added
ComboBox
now has aselected
callback.Window
now has anicon
property.- Added
sixtyfps::Weak::upgrade_in_event_loop
in the Rust API. - Added
sixtyfps::Model::as_any()
in the Rust API. - Added conversion between
sixtyfps::Image
andsixtyfps::interpreter::Value
in the C++ API. - Properties of type
angle
andduration
are allowed in the public API. - Every element now has a
visible
property. Slider
now has achanged
callback.- Added
TabWidget
widget. - Rust:
sixtyfps::Image
can now be constructed from image data provided bysixtyfps::SharedPixelBuffer
. This enables integrating with other low-level software rendering or the the popular Rust image crate. - VSCode extension: added an option to specify command line arguments for the LSP.
๐ Fixed
- GridLayout cells with colspan and rowspan respect properly their constraints.
- Don't panic when replacing programmatically text in a
TextInput
and then editing it. - The default height of elements in a ListView no longer defaults to 100%.
- Fixed support for
*=
and/=
on types with unit such as length. - Don't panic when using a self assignment operator on an invalid type - this produces a compiler error instead.
- Fixed angle conversion for values specified in radians, gradians and turns.
- Fixed SharedVector sometimes not allocating big enough storage.
- Fixed lookup scope when resolving model expression in
-
v0.1.0 Changes
June 30, 2021๐ Changed
- Layouts are now conceptually their own elements, meaning that the
x
andy
properties of items within layouts are relative to the layout and no longer to the parent element of layouts. - The default spacing and padding of layouts is now 0 instead of being specific to the style.
There are now
HorizontalBox
,VerticalBox
,GridBox
widgets which have default spacing and padding. - Setting the window
height
andwidth
properties results in a fixed size. Thepreferred-width
andpreferred-height
property can be used to set the initial size and the window remains resizable by the user, if the window manager permits. - Binding loops are now detected at compile-time instead of panic at runtime.
- The
viewer
binary was renamed tosixtyfps-viewer
and is now available viacargo install
from crates.io. - The layout properties
minimum-width
,maximum-height
, etc. were renamed to a shorter versionmin-width
,max-height
. The old names are still supported as a deprecated alias.
โ Added
- Warnings are now shown in the online code editor.
sixtyfps::invoke_from_event_loop
was added to the C++ and Rust APIs, to run a function in the UI thread from any thread.sixtyfps::run_event_loop()
andsixtyfps::quit_event_loop()
were added to the Rust and C++ APIs to start and quit the main event loop.z
property on items.- The type in two-way bindings can now be omitted.
- It's possible to declare aliases for callbacks (
callback clicked <=> other.clicked;
) abs()
function to get the absolute value- The root element of an
if
orfor
can be given a name (if (condition) name := Rectangle {}
) sixtyfps::Image
is a new type in the public Rust and C++ API to load images from a path.- The width and height of images is now accessible via the
width
orheight
of animage
type property in .60 files (some-image.source.width
)
๐ Fixed
- Fixed Mouse wheel to work on the
Flickable
element and derivatives. - Fixed generated C++ code on Windows.
- Calling
debug(...)
no longer breaks the LSP. ComponentDefinition::properties
only exposes public properties as documented.- Many more bugfixes
- Layouts are now conceptually their own elements, meaning that the
-
v0.0.6 Changes
April 27, 2021๐ Changed
Rectangle::color
was deprecated and replaced byRectangle::background
, same forWindow::color
Path::fill-color
was renamed tofill
, andPath::stroke-color
was renamed tostroke
, which are now brushes instead of color- Many other color property became brush in order to support gradients
- the
resource
type was renamed toimage
- Calling a callback is done from C++/Rust with
invoke_<name>
instead ofcall_<name>
โ Added
@linear-gradient
can be used to have gradients on rectangle and pathsImage::colorize
allows to apply a color filter on image0
can be converted to anything with units- Support power of unit in intermediate expression. (eg:
3px * width / height
is now supported but used to be an error) - Support for
else if
- The path fill rule can now be specified using
Path::fill-rule
. - Support for
letter-spacing
inText
/TextInput
elements. rgb()
/rgba()
- Layout in Flickable
- LSP server with Live Preview and basic auto completion
- The viewer tool gained the
--auto-reload
argument Window.default-font-weight
- Added
opacity
property that can be applied to elements - Added
clip
property in Rectangle, including clipping for rounded rectangle - API to load dynamically .60 files from C++ and Rust, including a way to embed sixtyfps widgets in Qt applications
- Preferred size in Layouts
- Math functions such as
sin
,cos
,sqrt
, ... - New printer demo design
- Ability to load custom fonts using
import
statements
๐ Fixed
Image::image-fit
'scover
andcontains
variant are fixed to match the CSS spec- Flickable without scrollbar
- Multiplying and dividing different units.
- Many more bugfixes
-
v0.0.5 Changes
January 29, 2021๐ Changed
- Renamed "signal" to "callback"
- And calling a callback is done from C++/Rust with
call_<name>
instead ofemit_<name>
- Renamed "SharedArray" to "SharedVector" in the C++/Rust API
- Renamed Slider min and max property to minimum and maximum
- The graphics rendering backend was changed to use femtovg or Qt
- Renamed
initial-focus
toforward-focus
as focus related property on elements - The "align-" prefix was removed from
TextHorizontalAlignment
andTextVerticalAlignment
. Either changealign-left
toleft
or qualify withTextHorizontalAlignment.left
. img!"..."
is replaced by@image-url("...")
$children
is replaced by@children
โ Added
title
property to the Window elementcolor
property to the Window elementmaximum
/minimum
properties to theSpinBox
- strings can contain escape codes
FocusScope
to handle key eventsreturn
statementsText
word wrap and elidedrop-shadow-*
properties (limited toRectangle
at the moment)Color.brighter
/Color.darker
Window.default-font-family
andWindow.default-font-size
-
v0.0.4 Changes
December 14, 2020๐ Changed
- Changed Rust
build.rs
API to use an opaque compiler configuration type - With Rust, image resources are embedded in the binary by default.
- Updated winit version
- Updated Neon Version
๐ Fixed
- Fixed animations sometimes stopping mid-way.
- Fixed rendering of C++ components
- Fixed disabled widgets
- Changed Rust
-
v0.0.3 Changes
December 09, 2020๐ Changed
- In C++, the generated component is now wrapped by a
ComponentHandle
smart pointer that acts likestd::shared_ptr
. New instances are created usingT::create()
. - In Rust, the generated component implements
Clone
and acts like anRc
.sixtyfps::Weak
can be used to hold weak references. ARGBColor
was renamedRgbaColor
width and
height` of some builtin elements now default to 100% of the parent element.
โ Added
- Allow dashes in identifiers (#52)
- VerticalLayout / HorizontalLayout
- Placeholder text in
LineEdit
- global components (#96)
Clip
elementComboBox
elementPopupWindow
elementImage
element: New source-clip-{x, y, width, height} propertiessixtyfps::Timer
in Rust API- Transitions are now implemented
round
/ceil
/floor
/mod
/max
/min
/cubic-bezier
functions- Signals can have return a value
has_hover
property inTouchArea
font-weight
property on Textviewbox-x/y/width/height
andclip
properties forPath
- In C++, the generated component is now wrapped by a