Releases: iced-rs/iced
0.4.0
New features
-
Stateless widgets (#1284)
A brand new widget API that removes the need to keep track of internal widget state. No morebutton::State
in your application! -
Component
trait (#1131)
A new trait to implement custom widgets with internal mutable state while using composition and The Elm Architecture. -
Responsive
widget (#1193)
A widget that is aware of its dimensions and can be used to easily build responsive user interfaces. -
Experimental WebGL support (#1096)
Applications can now be rendered into an HTMLcanvas
when targeting Wasm by leveraging the WebGL support inwgpu
. Thanks to @pacmancoder and @kaimast! -
Support for Raspberry Pis and older devices (#1160)
The compatibility of our OpenGL renderer has been improved and should run on any hardware that supports OpenGL 2.1+ or OpenGL ES 2.0+. Additionally, we started maintaining Docker images foraarch64
andarmv7
to easily cross-compileiced
applications and target Raspberry Pis. Thanks to @derezzedex! -
Simpler
Renderer
APIs (#1110)
The surface of theRenderer
APIs of the library has been considerably reduced. Instead of aRenderer
trait per widget, now there are only 3 traits that are reused by all the widgets.
Thank you! 🎉
- @0x192 implemented the
Default
trait forpure::State
(#1298). - @13r0ck added support for selecting a value of a
PickList
by scrolling (#872). - @Ace4896 added placeholder support for the
PickList
widget (#888). - @aentity fixed a bug causing high memory usage of the
Svg
widget (#952). - @akavel implemented proper handling of Exif orientation for raster images in
iced_wgpu
. - @akhilman fixed an issue with window transparency in
iced_glow
(#1021). - @Alch-Emi introduced
ContentFit
support for theImage
andSvg
widgets (#1219). - @AldoMX added a
select_all
method totext_input::State
(#776). - @AlisCode decoupled
image::Handle
fromiced_native
and lowered the trait bound oftext::Renderer::Font
(#1155). - @AndiHofi allowed
Application::run
to return on native platforms (#1112). - @ATiltedTree improved the compatibility of
iced_wgpu
by using the preferred texture format of the window surface (#978). - @BillyDM
- @blefevre added support for asymmetrical padding (#630).
- @casperstorm implemented a
pure
version of theTooltip
widget (#1315). - @Chiheisen
- @clarkmoody
- @cmot17 fixed an issue with text selection in the
TextInput
widget (#1098). - @cossonleo fixed the overlay position of the
Component
widget (#1205). - @Cupnfish
- @daladim added the iced logo to the documentation (#1147).
- @derezzedex added support for ARM devices and older hardware (#1160).
- @diegodox fixed a typo in the documentation of
canvas::Program
(#927). - @Dispersia upgraded
wgpu
to0.8
(#830). - @EkardNT added support for
Sandbox
applications to quit gracefully (#1175). - @feylinara fixed a memory leak in the
integration_opengl
example (#1181). - @gonsor added
text_color
to theStyle
of aCheckbox
(#1116). - @Imberflur
- @Kaiden42 implemented a
Toggler
widget (#535). - @LordRatte updated links in the documentation to point to the new
iced-rs
organization (#1168). - @Luni-4
- @marienz fixed
overlay
calls not being forwarded when usingElement::map
(#1294). - @mettz fixed an incorrect color being used with
Element::explain
(#1109). - @mtsr documented how to disable a
Button
(#646). - @nicksenger
- fixed the
Widget::height
implementation of theComponent
widget (#1149), - implemented
Widget::overlay
forComponent
(#1154), - fixed layout invalidation of nested components (#1169),
- fixed the overlay layout for the
Responsive
widget (#1262), - fixed the diffing strategy for nested pure components (#1301),
- fixed the diffing strategy for pure stateless components (#1309), and
- fixed a panic when using a pure
Component
in a pureResponsive
widget (#1319).
- fixed the
- @n8henrie fixed the path to
ferris.png
in thetour
example (#1157). - @oknozor fixed the visibility of the constants in the
blit
shader iniced_wgpu
(#1084). - @PolyMeilex
- @pacmancoder implemented experimental WebGL support in
iced_wgpu
(#1096). - @RamType0 removed unnecessary
String
allocation in some examples (#1106). - @RDambrosio016 fixed example links in the documentation to point to the latest release (#877).
- @sundy-li fixed the
README
of theintegration_opengl
example. - @taiki_e enabled the
qr_code
feature in docs.rs (#815). - @TannerRogalsky
- @tarkah
- added a new
Hidden
variant towindow::Mode
(#825), - introduced a new
Moved
variant towindow::Event
(#965), - fixed the overlays on a
PaneGrid
title bar not closing when dragging a pane (#971), - added a
Fill
variant forAlignment
(#1044), - removed redundant
Slider
messages (#1114), - added a line dash API for the
Canvas
widget (#1225), and - fixed the text wrapping of the selected option of a
PickList
(#1318).
- added a new
- @thenlevy
- @ThisIsRex fixed the position of the handle and rail of a
Slider
(#1286). - @traxys introduced a
window::Setting
to toggle drag and drop on Windows (#893). - @xy37v replaced Zulip mentions in the
README
with the new Discord server (#1151). - @yamadapc improved the support of
iced_glow
for multi-windowed applications (#980). - @yusdacra
- @ZakisM optimized the RGBA / BGRA conversion for vectorial images in
iced_wgpu
(#875). - @zdevwu added
text_color
andfont
methods toRadio
andCheckbox
(#831).
0.3.0
Added
- Touch support. #57 #650 (thanks to @simlay and @discordance!)
- Clipboard write access for
image::Viewer
widget. It allows panning and scaling of an image. #319 (thanks to @tarkah!)Tooltip
widget. It annotates content with some text on mouse hover. #465 (thanks to @yusdacra!)- Support for the
smol
async runtime. #699 (thanks to @JayceFayne!) - Support for graceful exiting when using the
Application
trait. #804 - Image format features in
iced_wgpu
to reduce code bloat. #392 (thanks to @unrelentingtech!) Focused
andUnfocused
variant towindow::Event
. #701 (thanks to @cossonleo!)WGPU_BACKEND
environment variable to configure the internal graphics backend oficed_wgpu
. #789 (thanks to @Cupnfish!)
Changed
- The
TitleBar
of aPaneGrid
now supports generic elements. #657 (thanks to @clarkmoody!) - The
Error
type now implementsSend
andSync
. #719 (thanks to @taiki-e!) - The
Style
types iniced_style
now implementClone
andCopy
. #720 (thanks to @taiki-e!) - The following dependencies have been updated:
- The following examples were improved:
download_progress
now showcases multiple file downloads at once. #283 (thanks to @Folyd!)solar_system
uses the newrand
API. #760 (thanks to @TriedAngle!)
Fixed
- Button events not being propagated to contents. #668
- Incorrect overlay implementation for the
Button
widget. #764 (thanks to @thenlevy!) Viewport::physical_width
returning the wrong value. #700 (thanks to @TannerRogalsky!)- Outdated documentation for the
Sandbox
trait. #710 (thanks to @GunpowderGuy!)
0.2.0
New features
-
Canvas
interactivity (#325)
A trait-based approach to react to mouse and keyboard interactions in theCanvas
widget. -
iced_graphics
subcrate (#354)
A backend-agnostic graphics subcrate that can be leveraged to build new renderers. -
OpenGL renderer (#354)
An OpenGL renderer powered byiced_graphics
,glow
, andglutin
. It is an alternative to the defaultwgpu
renderer. -
Overlay support (#444)
Basic support for superpositioning interactive widgets on top of other widgets. -
Faster event loop (#597)
The event loop now takes advantage of the data dependencies in The Elm Architecture and leverages the borrow checker to keep the widget tree alive between iterations, avoiding unnecessary rebuilds. -
Event capturing (#614)
The runtime now can tell whether a widget has handled an event or not, easing integration with existing applications. -
PickList
widget (#444)
A drop-down selector widget built on top of the new overlay support. -
QRCode
widget (#622)
A widget that displays a QR code, powered by theqrcode
crate.
Thank you! 🎉
- @AberrantWolf updated the
Radio
widget to make it consistent withCheckbox
(#345). - @aentity updated
winit
iniced_winit
to0.23
(#542) andguillotiere
to0.6
(#600). - @AlisCode fixed some async examples by feature-gating the
Command
implementations (#322). - @atsuzaki added a
transparent
field towindow::Settings
(#484). - @Azorlogh implemented conversion traits for
Point
,Size
, and[f32; 2]
(#558). - @azriel91 introduced feature gates to disable the
font-kit
dependency (#370). - @bitshifter upgraded
glam
to0.9
(#482). - @clarkmoody created the
color_palette
example showcasing conversion traits forpalette
(#200), improved the spacing of thePaneGrid
widget (#361), and implemented scrollbar customization for theScrollable
widget (#575). - @derezzedex removed an empty bind group in the
integration
example (#390). - @ethanpailes improved the documentation of the
image::Handle
constructors (#324). - @frapa introduced support to set a window icon (#285).
- @Imberflur fixed the
Clone
trait implementation for theText
widget (#363). - @Kaiden42 implemented the
From<Color>
trait forOption<Background>
(#487). - @Limeth fixed a typo in the
hash_layout
implementation ofColumn
andRow
(#563) and added conversion fuctions forSize
andVector
(#583). - @Masterchef365 added an
on_release
handler to theSlider
widget (#378). - @mobile-bungalow implemented an
always_show_controls
method forpane_grid::TitleBar
(#463). - @MonliH removed an outdated comment in the documentation of
Column
andRow
(#545). - @mtkennerly fixed a panic when pasting in a
TextInput
(#445). - @myfreeweb added explicit background color support, including transparency (#371).
- @oknozor introduced a
focus
method totext_input::State
(#598). - @rubik83 fixed a bug with empty ranges in
ProgressBar
andSlider
(#527). - @sum-elier fixed the description of an error message in a
window::icon
(#592). - @TomPridham introduced accessibility attributes to the
iced_web
widgets (#292). - @twitchyliquid64 added support for
always_on_top
inwindow::Settings
(#543). - @valbendan upgraded
tokio
to0.3
(#595). - @Vanille-N fixed the
ellipse
implementation ofpath::Builder
(#401). - @Veykril updated the dependencies of
iced_wgpu
(#334). - @Voker57 fixed the documentation of the
progress_bar
module (#396). - @ZakisM fixed a bug with "select all" in a text input on macOS (#605).
0.1.1
Added
Settings::with_flags
to easily initialize some default settings with flags. #266Default
implementation forcanvas::layer::Cache
. #267Ctrl + Del
support forTextInput
. #268- Helper methods in
canvas::Path
to easily draw lines, rectangles, and circles. #293 From<Color>
implementation forcanvas::Fill
. #293From<String>
implementation forcanvas::Text
. #293From<&str>
implementation forcanvas::Text
. #293
Changed
new
method ofRadio
andCheckbox
now take a genericInto<String>
for the label. #260Frame::fill
now takes a genericInto<canvas::Fill>
. #293Frame::stroke
now takes a genericInto<canvas::Stroke>
. #293Frame::fill_text
now takes a genericInto<canvas::Text>
. #293
Fixed
- Feature flags not being referenced in documentation. #259
- Crash in some graphics drivers when displaying an empty
Canvas
. #278 - Text measuring when spaces where present at the beginning of a
TextInput
value. #279 TextInput
producing aClip
primitive when unnecessary. #279- Alignment of
Text
primitive iniced_wgpu
. #281 CursorEntered
andCursorLeft
not being generated. #289
Removed
- Unnecessary
'static
lifetimes inRenderer
bounds. #290
0.1.0
New features
-
Custom styling (#146)
A simple, trait-based approach for customizing the appearance of different widgets. -
Event subscriptions (#122)
A declarative way to listen to external events asynchronously by leveraging streams. -
Canvas
widget (#193)
A widget for drawing 2D graphics with an interface inspired by the Web Canvas API and powered bylyon
. -
PaneGrid
widget (#224)
A widget that dynamically organizes layout by splitting panes that can be resized and drag and dropped. -
Svg
widget (#111)
A widget that renders vector graphics on top ofresvg
andraqote
. Thanks to @Maldela! -
ProgressBar
widget (#141)
A widget to notify progress of asynchronous tasks to your users. Thanks to @Songtronix! -
Configurable futures executor (#164)
Support for pluggingtokio
,async-std
,wasm-bindgen-futures
, or your own custom futures executor to an application. -
Compatibility with existing
wgpu
projects (#183)
A bunch of improvements to the flexibility oficed_wgpu
to allow integration in existing codebases. -
Text selection for
TextInput
(#202)
Thanks to @FabianLars and @Finnerale! -
Texture atlas for
iced_wgpu
(#154)
An atlas on top ofguillotiere
for batching draw calls. Thanks to @Maldela!
More examples
bezier_tool
, a Paint-like tool for drawing Bézier curves usinglyon
.clock
, an application that uses theCanvas
widget to draw a clock and its hands to display the current time.counter
, the classic counter example explained in theREADME
.custom_widget
, a custom widget that draws a circle.download_progress
, a basic application that asynchronously downloads a dummy file of 100 MB and tracks the download progress.events
, a log of native events displayed using a conditionalSubscription
.geometry
, a custom widget showcasing how to draw geometry with theMesh2D
primitive iniced_wgpu
.integration
, an example demonstrating how to integrate Iced in an existing graphical application.pane_grid
, a grid of panes that can be split, resized, and reorganized.pokedex
, an application that displays a random Pokédex entry (sprite included!) by using the PokéAPI.progress_bar
, a simple progress bar that can be filled by using a slider.styling
, an example showcasing custom styling with a light and dark theme.solar_system
, an animated solar system drawn using theCanvas
widget and showcasing how to compose different transforms.stopwatch
, a watch with start/stop and reset buttons showcasing how to listen to time.svg
, an application that renders the Ghostscript Tiger by leveraging theSvg
widget.
Thank you! 🎉
- @AlisCode created
iced-pancurses
, started a great issue to find a project logo (#143), and worked on a potential website (#115). - @artursapek contributed a
Mesh2D
primitive foriced_wgpu
(#140) which ended up being the foundations of theCanvas
widget. - @clarkmoody added customization support for the
Checkbox
widget (#192). - @daxpedda improved the
Node
API (#187) and has been working on theGrid
widget (#189). - @ejmahler removed the
Clone
bound on theMessage
associated type ofApplication
(#155). - @FabianLars contributed text selection for
TextInput
(#202) on top of @Finnerale's work. - @Friz64 enhanced the scrolling behavior of the
Scrollable
widget (#95). - @Gohla introduced missing style attributes in
iced_web
(#127), removed unnecessary bounds (#128), and built a cool Space Engineers calculator. - @hatoo added platform-specific settings to
iced_winit
(#94), implemented thebezier_tool
example (#144), and provided feedback related to using the library for building VST plugins (#118). - @Imberflur updated
winit
to0.21
(#181) and exposed theClipboard
type iniced_winit
(#178). - @kaimast removed unnecessary lifetimes in the
integration
example (#240) and contributed other minor code cleanups (#242). - @maaku fixed some formatting to comply with
cargo fmt
(#228). - @Maldela implemented the
Svg
widget (#111) and a texture atlas foriced_wgpu
(#154). - @memoryruins cleaned up some code and made it more idiomatic (#45).
- @michael-swan implemented
Ctrl+Backspace
behavior forTextInput
(#249). - @mrkgnao added support for displaying already-decoded images (#211).
- @nvzqz made a bunch of functions
const
(#91) and added someFrom
implementations (#92). - @piaoger fixed the file path of the
svg
example (#196). - @Plecra improved the scaling of the hands in the
clock
example (#251). - @rowungiles introduced a
with_children
method forColumn
andRow
(#220). - @Shootertrex fixed the
hash_layout
implementation of theImage
widget (#101). - @simlay experimented with iOS support and touch events (#57) while contributing to
winit
. - @Songtronix wrote the
ProgressBar
widget (#141), contributed thedownload_progress
example (#232), and has been using the library in Airshipper, a cross-platform launcher for Veloren. - @sumibi-yakitori enabled custom fonts for
TextInput
(#171). - @tirz removed unnecessary
'static
lifetimes in a bunch of generic types (#245).
0.1.0-beta
Changed
- The old
iced
becomesiced_native
. The currenticed
crate turns into a batteries-included, cross-platform GUI library.
0.1.0-alpha
Added
- First release! 🎉