The latest published Druid release is 0.7.0 which was released on 2021-01-01. You can find its changes documented below.
- International text input support (IME) on macOS.
- Rich text and complex script support on Linux.
- Strikethrough rich text attribute (#1953 by @jenra-uwu)
- System fonts loaded so that SVG images render text (#1850 by @DrGabble)
- Add
scroll()
method in WidgetExt (#1600 by @totsteps) write!
forRichTextBuilder
(#1596 by @Maan2003)- Sub windows: Allow opening windows that share state with arbitrary parts of the widget hierarchy (#1254 by @rjwittams)
- WindowCloseRequested/WindowDisconnected event when a window is closing (#1254 by @rjwittams)
- Add
on_added()
method inWidgetExt
(#1485 by @arthmis) - RichTextBuilder (#1520 by @Maan2003)
get_external_handle
onDelegateCtx
(#1526 by @Maan2003)AppLauncher::localization_resources
to use custom l10n resources. ([#1528] by [@edwin0cheng])- Shell: get_content_insets and mac implementation (#1532 by @rjwittams)
- Contexts: to_window and to_screen (useful for relatively positioning sub windows) (#1532 by @rjwittams)
- WindowSizePolicy: allow windows to be sized by their content (#1532 by @rjwittams)
- Implemented
Data
for more datatypes fromstd
(#1534 by @derekdreery) - Shell: windows implementation from content_insets (#1592 by @HoNile)
- Support individual corner radii for kurbo::RoundedRect (#1561 by @SecondFlight)
- Shell: IME API and macOS IME implementation (#1619 by @lord)
- Scroll::content_must_fill and a few other new Scroll methods (#1635 by @cmyr)
- New
TextBox
widget with IME integration (#1636 by @cmyr) Notification
s can be submitted while handling otherNotification
s (#1640 by @cmyr)- Added ListIter implementations for OrdMap (#1641 by @Lejero)
- Add
AspectRatioBox
widget (#1645 by @arthmis) Padding
can now useKey<Insets>
(#1662 by @cmyr)LifeCycle::DisabledChanged
,InternalLifeCycle::RouteDisabledChanged
and theset_disabled()
andis_disabled()
context-methods to implement disabled (#1632 by @xarvic)LifeCycle::BuildFocusChain
to update the focus-chain (#1632 by @xarvic)DisabledIf
widget wrapper to disable based on the state of Data and Env (#1702 by @xarvic)- GTK: added support for
content_insets
(#1722 by @jneem) chrono
feature withData
support for chrono types (#1743 by @r-ml)- Text input handles Delete key (#1746 by @bjorn)
lens
macro can access nested fields (#1764 by @Maan2003)- X11 backend now supports custom cursors (#1801 by @psychon)
- X11: Add support for transparent windows (#1803 by @psychon)
- X11: Added support for
get_monitors
(#1804 by @psychon) - x11: Remove some unnecessary casts (#1851 by @psychon)
has_focus
method onWidgetPod
(#1825 by @ForLoveOfCats)- x11: Add support for getting and setting clipboard contents (#1805, #1851, and #1866 by @psychon)
- Linux extension: primary_clipboard (#1843 by @Maan2003)
- x11: Implement primary_clipboard (#1867 by @psychon)
- x11: Set WM_CLASS property (#1868 by @psychon)
- Expose
RawWindowHandle
forWindowHandle
under theraw-win-handle
feature (#1828 by @djeedai) Slider
widget now warns if max < min and swaps the values (#1882 by @Maan2003)- Widget/Slider: Add stepping functionality ([#1875] by [@raymanfx])
- Add #[data(eq)] shorthand attribute for Data derive macro (#1884 by @Maan2003)
- X11: detect keyboard layout (#1779 by @Maan2003)
- WindowDesc::with_config (#1929 by @Maan2003)
scroll_to_view
andscroll_area_to_view
methods onUpdateCtx
,LifecycleCtx
andEventCtx
(#1976 by @xarvic)Notification::route
(#1978 by @xarvic)- Build on OpenBSD (#1993 by @klemensn)
- Scope: expose scoped state using state() and state_mut() ([#2082] by @rjwittams
- Tabs: allow getting and setting the tab index of a Tabs widget ([#2082] by @rjwittams
RangeSlider
andAnnotated
(#1979 by @xarvic)- Add
Checkbox::from_label
constructor (#2111 by @maurerdietmar) - fix content_insets for gtk backend (#2117 by @maurerdietmar)
ClipBox::managed
,Notification::warn_if_ununsed
andNotification::warn_if_ununsed_set
([#2141] by @xarvic)ClipBox
andTabs
handle SCROLL_TO_VIEW ([#2141] by @xarvic)EventCtx::submit_notification_without_warning
([#2141] by @xarvic)WidgetPod::requested_layout
(#2145 by @xarvic)- Make
Parse
work better with floats and similar types (#2148 by @superfell) - Added
compute_max_intrinsic
method to theWidget
trait, which determines the maximum useful dimension of the widget (#2172 by @sjoshid) - Windows: Dark mode support for the title bar (#2196 by @dristic)
ZStack
widget (#2235 by @xarvic)
Warn on unhandled Commands (#1533 by @Maan2003)(Reverted in #1813)WindowDesc::new
takes the root widget directly instead of a closure (#1559 by @lassipulkkinen)- Switch to trace-based logging (#1562 by @PoignardAzur)
- Spacers in
Flex
are now implemented by calculating the space inFlex
instead of creating a widget for it ([#1584] by @JAicewizard) - Padding is generic over child widget, impls WidgetWrapper (#1634 by @cmyr)
- Menu support was rewritten with support for
Data
(#1625 by @jneem) - Update to piet v0.4.0 (rich text on linux!) (#1677 by @cmyr)
register_for_focus()
should from now on be called fromLifeCycle::BuildFocusChain
instead ofLifeCycle::WidgetAdded
(#1632 by @xarvic)- Flex values that are less than 0.0 will default to 0.0 and warn in release. It will panic in debug mode. (#1691 by @arthmis)
- Lens implemented for tuples of Lenses of length 2-8, Tuple2 removed (#1654 by @Maan2003)
- Window size and positioning code is now in display points (#1713 by @jneem)
- Update look and feel of controls when disabled (#1717 by @xarvic)
- Change the signature of
add_idle_callback
(#1787 by @jneem) - Move macOS only function to Mac extension trait (#1863 by @Maan2003)
- x11: Only query atoms once instead of per window (#1865 by @psychon)
- remove prefix from platform extension traits (#1873 by @Maan2003)
- Remove
set_level
on windows (#1919 by @JAicewizard) - Add parent windows to non-main windows. (Coordinate space is now from their origin) (#1919 by @JAicewizard)
ListIter
implementations forArc<Vec<T>>
,(S, Arc<Vec<T>>)
,Arc<VecDequeue<T>>
and(S, Arc<VecDequeue<T>>)
(#1967 by @xarvic)- Closures passed to
Label::new
can now return any type that implementsInto<ArcStr>
(#2064 by @jplatte) AppDelegate::window_added
now receives the new window'sWindowHandle
. (#2119 by @zedseven)- Removed line of code that prevented window miximalization. ([#2113] by @Pavel-N)
- Dont warn about unhandled
Notification
s which haveknown_target
set to false ([#2141] by @xarvic) ClipBox
,Flex
,List
andSplit
only call layout on children which need it (#2145 by @xarvic)SizedBox
now supports usingKey<f64>
for specifying size (#2151 by @GoldsteinE)RadioGroup
widgets are now constructed with newrow()
,column()
, andfor_axis()
methods (#2157 by @twitchyliquid64)- Replace
info_span!
withtrace_span!
(#2203 by @NickLarsenNZ) WidgetPod::event
propagates handled mouse events to active children (#2235 by @xarvic)
- Centre checkmark in checkbox (#2036 by @agentsim)
Notification
s will not be delivered to the widget that sends them (#1640 by @cmyr)TextBox
can handle standard keyboard shortcuts without needing menus (#1660 by @cmyr)- GTK Shell: Prevent mangling of newline characters in clipboard (#1695 by @ForLoveOfCats)
- GTK: Replaced call to
std::str::from_utf8_unchecked
withfrom_utf8
(#1820 by @psychon) - Use correct fill rule when rendering SVG paths (#1606 by @SecondFlight)
- Correctly capture and use stroke properties when rendering SVG paths (#1647 by @SecondFlight)
- focus-chain now only includes non hidden (
should_propagate_to_hidden()
onEvent
andLifecylce
) widgets (#1724 by @xarvic) - Fixed layout of scrollbar with very small viewports (#1715 by @andrewhickman)
- Fixed
WindowLevel::Tooltip
on Windows platform (#1737 by @djeedai) - X11 backend now supports scaling(#1751 by @Maan2003)
- X11 backend now supports changing cursors (#1755 by @Maan2003)
- X11 backend now uses the platform locale (#1756 by @Maan2003)
Either
andTab
widgets were still propagating events to hidden widgets (#1860 by @lisael)- RichText: Invalidate layout on Env change (#1907 by @Maan2003)
- GTK: fix using gdk before initialising it ([#1946] by @JAicewizard)
ListIter
implementations forVector<T>
and(S, Vector<T>)
(#1967 by @xarvic)- Do not panic in Application::try_global if Application is not created (#1996 by @Maan2003)
- X11: window focus events (#1938 by @Maan2003
- Preserve the aspect ratio of a clipped region in an Image (#2195 by @barsae)
- Fixed docs of derived Lens (#1523 by @Maan2003)
- Fixed docs describing
ViewSwitcher
widget functionality (#1693 by @arthmis) - Added missing documentation on derived lens items (#1696 by @lidin)
- Fix example code in
Get started with Druid
chapter of book (#1698 by @ccqpein) - Fix link in documentation of widget::Image (#1730 by @RichardPoole42)
- Added more detailed explanation of
Target::Auto
(#1761 by @arthmis) - Updated source code, tests and docs to use
Selector::with
instead ofCommand::new
(#1761 by @arthmis) - Updated docs of
should_propagate_to_hidden
,children_changed
andregister_for_focus
(#1861 by @xarvic) - Update docs of
RawLabel
: does not requireArcStr
(#1886 by @Maan2003) - Fix
Controller
links forClick
(#2158 by @yrns) - Delete inaccurate line for
KeyEvent
(#2247 by @amtep)
- Add readme (#1423 by @JAicewizard)
- Updated to x11rb 0.8.0. ([#1519] by @psychon)
- Updated fluent-bundle to 0.15.1 and fluent syntax to 0.11.0 (#1772 by @r-ml)
- Updated usvg to 0.14.1 (#1802 by @r-ml)
- x11: Add logging to
Application::get_locale
(#1876 by @Maan2003)
0.7.0 - 2021-01-01
- Text improvements:
TextLayout
type (#1182) and rich text support (#1245) - The
Formatter
trait provides more flexible handling of conversions between values and their textual representations. ([#1377])
- Windows: Added Screen module to get information about monitors and the screen. (#1037 by @rhzk)
- Added documentation to resizable() and show_titlebar() in WindowDesc. (#1037 by @rhzk)
- Windows: Added internal functions to handle Re-entrancy. (#1037 by @rhzk)
- Windows: WindowDesc: Create window with disabled titlebar, maximized or minimized state, and with position. (#1037 by @rhzk)
- Windows: WindowHandle: Change window state. Toggle titlebar. Change size and position of window. (#1037, #1324 by @rhzk)
- Windows: WindowHandle: Added handle_titlebar(), Allowing a custom titlebar to behave like the OS one. (#1037 by @rhzk)
OPEN_PANEL_CANCELLED
andSAVE_PANEL_CANCELLED
commands. (#1061 by @cmyr)- Export
Image
andImageData
by default. (#1011 by @covercash2) - Re-export
druid_shell::Scalable
underdruid
namespace. (#1075 by @ForLoveOfCats) TextBox
now supports ctrl and shift hotkeys. (#1076 by @vkahl)ScrollComponent
for ease of adding consistent, customized, scrolling behavior to a widget. (#1107 by @ForLoveOfCats)- Selection text color to textbox. (#1093 by @sysint64)
BoxConstraints::UNBOUNDED
constant. (#1126 by [@danieldulaney])- Close requests from the shell can now be intercepted (#1118 by @jneem, #1204 by @psychon, #1238 by @tay64)
- The Lens derive now supports an
ignore
attribute. (#1133 by @jneem) request_update
inEventCtx
. (#1128 by @raphlinus)ExtEventSink
s can now be obtained from widget methods. (#1152 by @jneem)- 'Scope' widget to allow encapsulation of reactive state. (#1151 by @rjwittams)
Ref
lens that appliesAsRef
and thus allow indexing arrays. (#1171 by @finnerale)Command::to
andCommand::target
to set and get a commands target. (#1185 by @finnerale)Menu
commands can now choose a custom target. (#1185 by @finnerale)Movement::StartOfDocument
,Movement::EndOfDocument
. (#1092 by @sysint64)TextLayout
type simplifies drawing text (#1182 by @cmyr)- Added support for custom mouse cursors (#1183 by @jneem)
- Implementation of
Data
trait fori128
andu128
primitive data types. (#1214 by @koutoftimer) LineBreaking
enum allows configuration of label line-breaking (#1195 by @cmyr)TextAlignment
support inTextLayout
andLabel
(#1210 by @cmyr)UpdateCtx
getsenv_changed
andenv_key_changed
methods (#1207 by @cmyr)Button::from_label
to construct aButton
with a providedLabel
. (#1226 by @ForLoveOfCats)- Lens: Added Unit lens for type erased / display only widgets that do not need data. (#1232 by @rjwittams)
WindowLevel
to control system window Z order, with Mac and GTK implementations (#1231 by @rjwittams)- WIDGET_PADDING items added to theme and
Flex::with_default_spacer
/Flex::add_default_spacer
(#1220 by @cmyr) - CONFIGURE_WINDOW command to allow reconfiguration of an existing window. ([#1235] by @rjwittams)
- Added a ClipBox widget for building scrollable widgets (#1248 by @jneem)
RawLabel
widget displays textData
. (#1252 by @cmyr)- 'Tabs' widget allowing static and dynamic tabbed layouts. (#1160 by @rjwittams)
RichText
andAttribute
types for creating rich text (#1255 by @cmyr)request_timer
can now be called fromLayoutCtx
(#1278 by [@Majora320])- TextBox supports vertical movement (#1280 by @cmyr)
- Widgets can specify a baseline, flex rows can align baselines (#1295 by @cmyr)
TextBox::with_text_color
andTextBox::set_text_color
(#1320 by @cmyr)Checkbox::set_text
to update the label. (#1346 by @finnerale)Event::should_propagate_to_hidden
andLifecycle::should_propagate_to_hidden
to determine whether an event should be sent to hidden widgets (e.g. inTabs
orEither
). (#1351 by @andrewhickman)set_cursor
can be called in theupdate
method. (#1361 by @jneem)WidgetPod::is_initialized
to check if a widget has receivedWidgetAdded
. (#1259 by @finnerale)TextBox::with_text_alignment
andTextBox::set_text_alignment
(#1371 by @cmyr)- Add default minimum size to
WindowConfig
. (#1438 by @colinfruit) - Open and save dialogs send configurable commands. (#1463 by @jneem)
- Windows: Dialogs now respect the parameter passed to
force_starting_directory()
(#1452 by @MaximilianKoestler) - Value formatting with the
Formatter
trait ([#1377] by @cmyr)
- Windows: Reduced flashing when windows are created on high-dpi displays (#1272 by @rhzk)
- Windows: Improved DPI handling. Druid should now redraw correctly when dpi changes. (#1037 by @rhzk)
- windows: Window created with OS default size if not set. (#1037 by @rhzk)
Scale::from_scale
toScale::new
, andScale
methodsscale_x
/scale_y
tox
/y
. (#1042 by @xStrom)- Major rework of keyboard event handling. (#1049 by @raphlinus)
Container::rounded
takesKeyOrValue<f64>
instead off64
. (#1054 by @binomial0)request_anim_frame
no longer invalidates the entire window. (#1057 by @jneem)- Use new Piet text api (#1143 by @cmyr)
Env::try_get
(and related methods) return aResult
instead of anOption
. (#1172 by @cmyr)lens!
macro to use move semantics for the index. (#1171 by @finnerale)Env
storesArc<str>
instead ofString
(#1173 by @cmyr)- Replaced uses of
Option<Target>
with the newTarget::Auto
. (#1185 by @finnerale) - Moved
Target
parameter fromsubmit_command
toCommand::new
andCommand::to
. (#1185 by @finnerale) Movement::RightOfLine
toMovement::NextLineBreak
, andMovement::LeftOfLine
toMovement::PrecedingLineBreak
. (#1092 by @sysint64)AnimFrame
was moved fromlifecycle
toevent
(#1155 by @jneem)- Renamed
ImageData
toImageBuf
and moved it todruid_shell
(#1183 by @jneem) - Contexts'
text()
methods return&mut PietText
instead of cloning (#1205 by @cmyr) - Window construction: WindowDesc decomposed to PendingWindow and WindowConfig to allow for sub-windows and reconfiguration. ([#1235] by @rjwittams)
LocalizedString
andLabelText
useArcStr
instead of String (#1245 by @cmyr)LensWrap
widget moved into widget module (#1251 by @cmyr)Delegate::command
now returnsHandled
, notbool
(#1298 by @jneem)TextBox
selects all contents when tabbed to on macOS (#1283 by @cmyr)- All Image formats are now optional, reducing compile time and binary size by default ([#1340] by @JAicewizard)
- The
Cursor
API has changed to a stateful one (#1433 by @jneem) - Part of the
SAVE_FILE
command is nowSAVE_FILE_AS
(#1463 by @jneem)
- Parse widget (replaced with
Formatter
trait) ([#1377] by @cmyr)
Scale::from_dpi
,Scale::dpi_x
, andScale::dpi_y
. (#1042 by @xStrom)Scale::to_px
andScale::to_dp
. (#1075 by @ForLoveOfCats)
ClipBox
should forward events if any child is active, not just the immediate child. (#1448 by @derekdreery)- 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)
Data
derive now works when type param bounds are defined. (#1058 by @chris-zen)- Ensure that
update
is called after all commands. (#1062 by @jneem) - X11: Support idle callbacks. (#1072 by @jneem)
- GTK: Don't interrupt
KeyEvent.repeat
when releasing another key. (#1081 by @raphlinus) - Floor the origin for the Align widget to avoid blurry borders. (#1091 by @sysint64)
- X11: Set some more common window properties. (#1097 by @psychon)
- X11: Support timers. (#1096 by @psychon)
EnvScope
now also updates theEnv
duringWidget::lifecycle
. (#1100 by @finnerale)WidgetExt::debug_widget_id
anddebug_paint_layout
now also apply to the widget they are called on. (#1100 by @finnerale)- X11: Fix X11 errors caused by destroyed windows. (#1103 by @jneem)
ViewSwitcher
now 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)
- Allow derivation of lenses for generic types (#1120) by @rjwittams)
- Switch widget: Toggle animation being window refresh rate dependent (#1145 by @ForLoveOfCats)
- Multi-click on Windows, partial fix for #859 (#1157 by @raphlinus)
- Windows: fix crash on resize from incompatible resources ([#1191 by @raphlinus])
- GTK: Related dependencies are now optional, facilitating a pure X11 build. (#1241 by @finnerale)
widget::Image
now computes the layout correctly when unbound in one direction. (#1189 by @JAicewizard)- TextBox doesn't reset position after unfocused. (#1276 by @sysint64)
- Able to select text in multiple TextBoxes at once. (#1276 by @sysint64)
- The scroll bar now shows when the contents of a scrollable area change size. (#1278 by [@Majora320])
- Fix
widget::Either
using the wrong paint insets (#1299 by @andrewhickman) - Various fixes to cross-platform menus (#1306 by @raphlinus)
- Improve Windows 7 DXGI compatibility (#1311 by @raphlinus)
- Fixed
Either
not passing events to its hidden child correctly. (#1351 by @andrewhickman) - Don't drop events while showing file dialogs (#1302, #1328 by @jneem)
- Ensure that
LifeCycle::WidgetAdded
is the first thing a widget sees. (#1259 by @finnerale) - Fix a missed call to
CloseClipboard
on Windows. (#1410 by @andrewhickman) - WidgetPod: change not laid out
debug_panic
to warning (#1441 by @Maan2003)
- Added a book chapter about resolution independence. (#913 by @xStrom)
- Added documentation for the
Image
widget. (#1018 by @covercash2) - Fixed a link in
druid::command
documentation. (#1008 by @covercash2) - Fixed broken links in
druid::widget::Container
documentation. ([#1357] by [@StarfightLP])
- Specify feature requirements in a standard way. (#1050 by @xStrom)
- Added
event_viewer
example (#1326 by @cmyr) - Rename
ext_event
toasync_event
. (#1401 by @JAicewizard)
- Standardized web targeting terminology. (#1013 by @xStrom)
- X11: Ported the X11 backend to
x11rb
. (#1025 by @jneem) - Add
debug_panic
macro for when a backtrace is useful but a panic unnecessary. (#1259 by @finnerale)
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)FileDialogOptions
methodsdefault_name
,name_label
,title
,button_text
,packages_as_directories
,force_starting_directory
. (#960 by @xStrom)Button::dynamic
constructor. (#963 by @totsteps)Spinner
widget to represent loading states. (#1003 by @futurepaul)- Link to the widget_nursery in README (#1754 by @xarvic)
- 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) ViewSwitcher
usesData
type 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
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)
- macOS: Support
FileDialogOptions::default_type
. (#960 by @xStrom) - macOS: Show the save dialog even with
FileDialogOptions
select_directories
andmulti_selection
set. (#960 by @xStrom) - X11: Support mouse scrolling. (#961 by @jneem)
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 :(