Skip to content

Latest commit

 

History

History
367 lines (310 loc) · 18.7 KB

CHANGELOG.md

File metadata and controls

367 lines (310 loc) · 18.7 KB

Changelog

The latest published Druid release is 0.6.0 which was released on 2020-06-01. You can find its changes documented below.

Highlights

Added

  • Added ctrl/shift key support to textbox. ([#1063] by @vkahl)

Changed

  • Image and ImageData exported by default. (#1011 by @covercash2)
  • Scale::from_scale to Scale::new, and Scale methods scale_x / scale_y to x / y. (#1042 by @xStrom)
  • Major rework of keyboard event handling (#1049 by @raphlinus)
  • Container::rounded takes KeyOrValue<f64> instead of f64. (#1054 by @binomial0)
  • Re-export druid_shell::Scalable under druid namespace. (#1075 by @ForLoveOfCats)

Deprecated

Removed

Fixed

  • 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)
  • Fix derive Data when type param bounds are defined (#1058 by @chris-zen)
  • Ensure that update is called after all commands. (#1062 by @jneem)
  • GTK: Don't interrupt KeyEvent.repeat when releasing another key. (#1081 by @raphlinus)

Visual

  • TextBox stroke remains inside its paint_rect. (#1007 by @jneem)

Docs

Examples

  • Specify feature requirements in a standard way. (#1050 by @xStrom)

Maintenance

  • Standardized web targeting terminology. (#1013 by @xStrom)
  • X11: Ported the X11 backend to x11rb. (#1025 by @jneem)

Outside News

0.6.0 - 2020-06-01

Highlights

X11 backend for druid-shell.

@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.

Web backend for druid-shell.

@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.

Using Core Graphics on macOS.

@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.

Added

  • Standardized and exposed more methods on more contexts. (#970, #972, #855 by @cmyr, #898 by @finnerale, #954 by @xStrom, #917 by @jneem)
  • im feature, with Data support for the im crate collections. (#924 by @cmyr)
  • im::Vector support for the List widget. (#940 by @xStrom)
  • TextBox can receive EditAction 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 simple String). (#869 by @cmyr)
  • Label::with_font and set_font. (#785 by @thecodewarrior)
  • MouseEvent now has a focus field which is true with window focusing left clicks on macOS. (#842 by @xStrom)
  • MouseButtons to MouseEvent to track which buttons are being held down during an event. (#843 by @xStrom)
  • Env and Key gained methods for inspecting an Env 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)

Changed

  • Renamed WidgetPod methods: paint to paint_raw, paint_with_offset to paint, paint_with_offset_always to paint_always. (#980 by @totsteps)
  • Renamed Event::MouseMoved to MouseMove. (#825 by @teddemunnik)
  • Renamed Split constructors to Split::rows and columns. (#738 by @xStrom)
  • Replaced NEW_WINDOW, SET_MENU and SHOW_CONTEXT_MENU commands with methods on EventCtx and DelegateCtx. (#931 by @finnerale)
  • Replaced Command::one_shot and ::take_object with a SingleUse payload wrapper type. (#959 by @finnerale)
  • Command and Selector have been reworked and are now statically typed, similarly to Env and Key. (#993 by @finnerale)
  • AppDelegate::command now receives a Target instead of a &Target. (#909 by @xStrom)
  • SHOW_WINDOW and CLOSE_WINDOW commands now only use Target to determine the affected window. (#928 by @finnerale)
  • Global Application associated functions are instance methods instead, e.g. Application::global().quit() instead of the old Application::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 requires LayoutCtx, data and Env. (#841 by @xStrom)
  • request_timer uses Duration instead of Instant. (#847 by @finnerale)
  • Event::Wheel now contains a MouseEvent structure. (#895 by @teddemunnik)
  • The WindowHandle::get_dpi method got replaced by WindowHandle::get_scale. (#904 by @xStrom)
  • The WinHandler::size method now gets a Size in display points. (#904 by @xStrom)
  • Standardized the type returned by the contexts' text methods. (#996 by @cmyr)

Removed

  • The optional GTK feature for non-Linux platforms. (#611 by @pyroxymat)

Fixed

  • 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 to Event::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 in Container. (#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 and MouseButton::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)

Visual

  • 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)

Docs

  • 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 and Controller. (#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)

Examples

Maintenance

  • Added rendering tests. (#784 by @fishrockz)
  • Added docs generation testing for all features. (#942 by @xStrom)
  • Replaced #[macro_use] with normal use. (#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 to WidgetState (#969 by @cmyr)
  • Fixed test harness crashing on failure. (#984 by @xStrom)
  • GTK: Refactored Application to use the new structure. (#892 by @xStrom)

Outside News

  • 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 :(

0.4.0 - 2019-12-28

0.3.2 - 2019-11-05

0.3.1 - 2019-11-04

0.3.0 - 2019-11-02

0.1.1 - 2018-11-02

0.1.0 - 2018-11-02