The latest published druid release is 0.6.0 which was released on 2020-06-01. You can find its changes documented below.
Image
andImageData
exported by default. (#1011 by @covercash2)
- Fixed a link in
druid::command
documentation. (#1008 by @covercash2)
0.6.0 - 2020-06-01
@crsaracco got us started and implemented basic support to run druid on bare-metal X11 in #599. Additional features got fleshed out in #894 and #900 by @xStrom and in #920, #961, and #982 by @jneem.
While still incomplete this lays the foundation for running druid on Linux without relying on GTK.
@elrnv continued the work of @tedsta and implemented a mostly complete web backend via WebAssembly (Wasm) in #759 and enabled all druid examples to run in the browser.
While some features like the clipboard, menus or file dialogs are not yet available, all fundamental features are there.
@cmyr continued the work of @jrmuizel and implemented Core Graphics support for piet in piet#176.
Those changes made it into druid via #905. This means that druid no longer requires cairo on macOS and uses Core Graphics instead.
- Standardized and exposed more methods on more contexts. (#970, #972, #855 by @cmyr, #898 by @finnerale, #954 by @xStrom, #917 by @jneem)
im
feature, withData
support for theim
crate collections. (#924 by @cmyr)im::Vector
support for theList
widget. (#940 by @xStrom)TextBox
can receiveEditAction
commands. (#814 by @cmyr)Split::min_splitter_area(f64)
to add padding around the splitter bar. (#738 by @xStrom)- Published
druid::text
module. (#816 by @cmyr) InternalEvent::MouseLeave
signalling the cursor left the window. (#821 by @teddemunnik)InternalEvent::RouteTimer
to route timer events. (#831 by @sjoshid)children_changed
now always includes layout and paint request. (#839 by @xStrom)request_paint_rect
for partial invalidation. (#817 by @jneem)- Window title can be any
LabelText
(such as a simpleString
). (#869 by @cmyr) Label::with_font
andset_font
. (#785 by @thecodewarrior)MouseEvent
now has afocus
field which istrue
with window focusing left clicks on macOS. (#842 by @xStrom)MouseButtons
toMouseEvent
to track which buttons are being held down during an event. (#843 by @xStrom)Env
andKey
gained methods for inspecting anEnv
at runtime (#880 by @Zarenor)WinHandler::scale
method to inform of scale changes. (#904 by @xStrom)WidgetExt::debug_widget_id
, for displaying widget ids on hover. (#876 by @cmyr)LifeCycle::Size
event to inform widgets that their size changed. (#953 by @xStrom)Button::dynamic
constructor. (#963 by @totsteps)Spinner
widget to represent loading states. (#1003 by @futurepaul)
- Renamed
WidgetPod
methods:paint
topaint_raw
,paint_with_offset
topaint
,paint_with_offset_always
topaint_always
. (#980 by @totsteps) - Renamed
Event::MouseMoved
toMouseMove
. (#825 by @teddemunnik) - Renamed
Split
constructors toSplit::rows
andcolumns
. (#738 by @xStrom) - Replaced
NEW_WINDOW
,SET_MENU
andSHOW_CONTEXT_MENU
commands with methods onEventCtx
andDelegateCtx
. (#931 by @finnerale) - Replaced
Command::one_shot
and::take_object
with aSingleUse
payload wrapper type. (#959 by @finnerale) Command
andSelector
have been reworked and are now statically typed, similarly toEnv
andKey
. (#993 by @finnerale)AppDelegate::command
now receives aTarget
instead of a&Target
. (#909 by @xStrom)SHOW_WINDOW
andCLOSE_WINDOW
commands now only useTarget
to determine the affected window. (#928 by @finnerale)- Global
Application
associated functions are instance methods instead, e.g.Application::global().quit()
instead of the oldApplication::quit()
. (#763 by @xStrom) Event::Internal(InternalEvent)
bundles all internal events. (#833 by @xStrom)- Timer events will only be delivered to the widgets that requested them. (#831 by @sjoshid)
Split::splitter_size
no longer includes padding. (#738 by @xStrom)has_focus
no longer returns false positives. (#819 by @xStrom)WidgetPod::set_layout_rect
now requiresLayoutCtx
, data andEnv
. (#841 by @xStrom)request_timer
usesDuration
instead ofInstant
. (#847 by @finnerale)Event::Wheel
now contains aMouseEvent
structure. (#895 by @teddemunnik)- The
WindowHandle::get_dpi
method got replaced byWindowHandle::get_scale
. (#904 by @xStrom) - The
WinHandler::size
method now gets aSize
in display points. (#904 by @xStrom) - Standardized the type returned by the contexts'
text
methods. (#996 by @cmyr)
- The optional GTK feature for non-Linux platforms. (#611 by @pyroxymat)
Event::HotChanged(false)
will be emitted when the cursor leaves the window. (#821 by @teddemunnik)- Keep hot state consistent with mouse position. (#841 by @xStrom)
- Start focus cycling from not-registered-for-focus widgets. (#819 by @xStrom)
- Supply correct
LifeCycleCtx
toEvent::FocusChanged
. (#878 by @cmyr) - Propagate
Event::FocusChanged
to focus gaining widgets as well. (#819 by @xStrom) - Routing
LifeCycle::FocusChanged
to descendant widgets. (#925 by @yrns) - Focus request handling is now predictable with the last request overriding earlier ones. (#948 by @xStrom)
- Open file menu item works again. (#851 by @kindlychung)
- Built-in open and save menu items now show the correct label and submit the right commands. (#930 by @finnerale)
- Wheel events now properly update hot state. (#951 by @xStrom)
Painter
now properly repaints on data change inContainer
. (#991 by @cmyr)- Windows: Terminate app when all windows have closed. (#763 by @xStrom)
- Windows: Respect the minimum window size. (#727 by @teddemunnik)
- Windows: Respect resizability. (#712 by @teddemunnik)
- Windows: Capture mouse for drag actions. (#695 by @teddemunnik)
- Windows: Removed flashes of white background at the edge of the window when resizing. (#915 by @xStrom)
- Windows: Reduced chance of white flash when opening a new window. (#916 by @xStrom)
- Windows: Keep receiving mouse events after pressing ALT or F10 when the window has no menu. (#997 by @xStrom)
- macOS:
Application::quit
now quits the run loop instead of killing the process. (#763 by @xStrom) - macOS:
Event::HotChanged
is properly generated with multiple windows. (#907 by @xStrom) - macOS: The application menu is now immediately interactable after launch. (#994 by @xStrom)
- macOS/GTK:
MouseButton::X1
andMouseButton::X2
clicks are now recognized. (#843 by @xStrom) - GTK: Use the system locale. (#798 by @finnerale)
- GTK: Actually close windows. (#797 by @finnerale)
- GTK: Prevent crashing on pop-ups. (#837 by @finnerale)
- GTK: Support disabled menu items. (#897 by @jneem)
- GTK: Support file filters in open/save dialogs. (#903 by @jneem)
- GTK: Support DPI values other than 96. (#904 by @xStrom)
- Improved
Split
accuracy. (#738 by @xStrom) - Built-in widgets no longer stroke outside their
paint_rect
. (#861 by @jneem) Switch
toggles with animation when its data changes externally. (#898 by @finnerale)- Render progress bar correctly. (#949 by @scholtzan)
- Scrollbars animate when the scroll container size changes. (#964 by @xStrom)
- Added example and usage hints to
Env
. (#796 by @finnerale) - Added documentation about the usage of bloom filters. (#818 by @xStrom)
- Added book chapters about
Painter
andController
. (#832 by @cmyr) - Added a changelog containing development since the 0.5 release. (#889 by @finnerale)
- Added goals section to
README.md
. (#971 by @finnerale) - Added a section about dependencies to
CONTRIBUTING.md
. (#990 by @xStrom) - Updated screenshots in
README.md
. (#967 by @xStrom) - Removed references to cairo on macOS. (#943 by @xStrom)
- Added
blocking_function
. (#840 by @mastfissh) - Added hot glow option to
multiwin
. (#845 by @xStrom) - Reduce the flashing in
ext_event
andidentity
. (#782 by @futurepaul) - Fixed menu inconsistency across multiple windows in
multiwin
. (#926 by @kindlychung)
- Added rendering tests. (#784 by @fishrockz)
- Added docs generation testing for all features. (#942 by @xStrom)
- Replaced
#[macro_use]
with normaluse
. (#808 by @totsteps) - Enabled Clippy checks for all targets. (#850 by @xStrom)
- Revamped CI testing to optimize coverage and speed. (#857 by @xStrom)
- Refactored DPI scaling. (#904 by @xStrom)
- Refactored
WidgetPod::event
to improve readability and performance of more complex logic. (#1001 by @xStrom) - Renamed
BaseState
toWidgetState
(#969 by @cmyr) - Fixed test harness crashing on failure. (#984 by @xStrom)
- GTK: Refactored
Application
to use the new structure. (#892 by @xStrom)
- There are new projects using druid:
- Kondo Save disk space by cleaning unneeded files from software projects.
- jack-mixer A jack client that provides mixing, levels and a 3-band eq.
- kiro-synth An in progress modular sound synthesizer.
0.5.0 - 2020-04-01
Last release without a changelog :(