The latest published Druid release is 0.6.0 which was released on 2020-06-01. You can find its changes documented below.
-
OPEN_PANEL_CANCELLEDandSAVE_PANEL_CANCELLEDcommands. (#1061 by @cmyr) -
Export
ImageandImageDataby default. (#1011 by @covercash2) -
Re-export
druid_shell::Scalableunderdruidnamespace. (#1075 by @ForLoveOfCats) -
TextBoxnow supports ctrl and shift hotkeys. (#1076 by @vkahl)
Scale::from_scaletoScale::new, andScalemethodsscale_x/scale_ytox/y. (#1042 by @xStrom)- Major rework of keyboard event handling. (#1049 by @raphlinus)
Container::roundedtakesKeyOrValue<f64>instead off64. (#1054 by @binomial0)
Scale::from_dpi,Scale::dpi_x, andScale::dpi_y. (#1042 by @xStrom)Scale::to_pxandScale::to_dp. (#1075 by @ForLoveOfCats)
- macOS: Timers not firing during modal loop. (#1028 by @xStrom)
- GTK: Directory selection now properly ignores file filters. (#957 by @xStrom)
- GTK: Don't crash when receiving an external command while a file dialog is visible. (#1043 by @jneem)
Dataderive now works when type param bounds are defined. (#1058 by @chris-zen)- Ensure that
updateis called after all commands. (#1062 by @jneem) - X11: Support idle callbacks. (#1072 by @jneem)
- GTK: Don't interrupt
KeyEvent.repeatwhen releasing another key. (#1081 by @raphlinus) - X11: Set some more common window properties. (#1097 by @psychon)
- X11: Support timers. (#1096 by @psychon)
EnvScopenow also updates theEnvduringWidget::lifecycle. (#1100 by @finnerale)WidgetExt::debug_widget_idanddebug_paint_layoutnow also apply to the widget they are called on. (#1100 by @finnerale)- X11: Fix X11 errors caused by destroyed windows. (#1103 by @jneem)
ViewSwitchernow skips the update after switching widgets. ([#1113] by @finnerale)- Key and KeyOrValue derive Clone (#1119 by @rjwittams)
- Allow submit_command from the layout method in Widgets (#1119 by @rjwittams)
- Added documentation for the
Imagewidget. (#1018 by @covercash2) - Fixed a link in
druid::commanddocumentation. (#1008 by @covercash2)
- Standardized web targeting terminology. (#1013 by @xStrom)
- X11: Ported the X11 backend to
x11rb. (#1025 by @jneem)
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)
imfeature, withDatasupport for theimcrate collections. (#924 by @cmyr)im::Vectorsupport for theListwidget. (#940 by @xStrom)TextBoxcan receiveEditActioncommands. (#814 by @cmyr)Split::min_splitter_area(f64)to add padding around the splitter bar. (#738 by @xStrom)- Published
druid::textmodule. (#816 by @cmyr) InternalEvent::MouseLeavesignalling the cursor left the window. (#821 by @teddemunnik)InternalEvent::RouteTimerto route timer events. (#831 by @sjoshid)children_changednow always includes layout and paint request. (#839 by @xStrom)request_paint_rectfor partial invalidation. (#817 by @jneem)- Window title can be any
LabelText(such as a simpleString). (#869 by @cmyr) Label::with_fontandset_font. (#785 by @thecodewarrior)MouseEventnow has afocusfield which istruewith window focusing left clicks on macOS. (#842 by @xStrom)MouseButtonstoMouseEventto track which buttons are being held down during an event. (#843 by @xStrom)EnvandKeygained methods for inspecting anEnvat runtime (#880 by @Zarenor)WinHandler::scalemethod to inform of scale changes. (#904 by @xStrom)WidgetExt::debug_widget_id, for displaying widget ids on hover. (#876 by @cmyr)LifeCycle::Sizeevent to inform widgets that their size changed. (#953 by @xStrom)Button::dynamicconstructor. (#963 by @totsteps)Spinnerwidget to represent loading states. (#1003 by @futurepaul)- Allow derivation of lenses for generic types (#1120) by @rjwittams)
- Renamed
WidgetPodmethods:painttopaint_raw,paint_with_offsettopaint,paint_with_offset_alwaystopaint_always. (#980 by @totsteps) - Renamed
Event::MouseMovedtoMouseMove. (#825 by @teddemunnik) - Renamed
Splitconstructors toSplit::rowsandcolumns. (#738 by @xStrom) - Replaced
NEW_WINDOW,SET_MENUandSHOW_CONTEXT_MENUcommands with methods onEventCtxandDelegateCtx. (#931 by @finnerale) - Replaced
Command::one_shotand::take_objectwith aSingleUsepayload wrapper type. (#959 by @finnerale) CommandandSelectorhave been reworked and are now statically typed, similarly toEnvandKey. (#993 by @finnerale)AppDelegate::commandnow receives aTargetinstead of a&Target. (#909 by @xStrom)SHOW_WINDOWandCLOSE_WINDOWcommands now only useTargetto determine the affected window. (#928 by @finnerale)- Global
Applicationassociated 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_sizeno longer includes padding. (#738 by @xStrom)has_focusno longer returns false positives. (#819 by @xStrom)WidgetPod::set_layout_rectnow requiresLayoutCtx, data andEnv. (#841 by @xStrom)request_timerusesDurationinstead ofInstant. (#847 by @finnerale)Event::Wheelnow contains aMouseEventstructure. (#895 by @teddemunnik)- The
WindowHandle::get_dpimethod got replaced byWindowHandle::get_scale. (#904 by @xStrom) - The
WinHandler::sizemethod now gets aSizein display points. (#904 by @xStrom) - Standardized the type returned by the contexts'
textmethods. (#996 by @cmyr) ViewSwitcherusesDatatype constraint instead ofPartialEq. ([#1112] by @justinmoon)
- 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
LifeCycleCtxtoEvent::FocusChanged. (#878 by @cmyr) - Propagate
Event::FocusChangedto focus gaining widgets as well. (#819 by @xStrom) - Routing
LifeCycle::FocusChangedto 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)
Painternow 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::quitnow quits the run loop instead of killing the process. (#763 by @xStrom) - macOS:
Event::HotChangedis properly generated with multiple windows. (#907 by @xStrom) - macOS: The application menu is now immediately interactable after launch. (#994 by @xStrom)
- macOS/GTK:
MouseButton::X1andMouseButton::X2clicks 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
Splitaccuracy. (#738 by @xStrom) - Built-in widgets no longer stroke outside their
paint_rect. (#861 by @jneem) Switchtoggles 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
PainterandController. (#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_eventandidentity. (#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::eventto improve readability and performance of more complex logic. (#1001 by @xStrom) - Renamed
BaseStatetoWidgetState(#969 by @cmyr) - Fixed test harness crashing on failure. (#984 by @xStrom)
- GTK: Refactored
Applicationto 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 :(