To reduce compile-times and avoid some overhead to binary size, this will modify some of our
generic functions to use non-generic inner functions where possible. The inner functions are
marked carefully with `#[inline(never)]` to prevent being inlined by LLVM at their callsites
While looking for generic functions to optimize, I have also taken the opportunity to annotate
public non-generic getters and setters with `#[inline]` to ensure that LLVM will inline them
across crate boundaries. By default, only generic functions are automatically inlined, and
only when enabling fat LTO are constant functions reliably inlined across crate boundaries.
Better support for multi-threaded applications,
especially cosmic-comp rendering in parallel on
multiple threads, each potentially accessing
global configurations such as the active theme,
icon_theme and more...
* feat: add support for dark / light mode switching and simultaneouscustom light / dark mode themes
* refactor(color-picker): optional initial color and fallback color
* refactor: used FixedPortion for layout of the settings item
This makes sure that the control always has at least the specified portion of the available space
* refactor: make all members of the ThemeBuilder public
* refactor: add and update palette colors
* fix(theme): typo and derive PartialEq for ThemeBuilder
* fix: update color picker usage
* feat: add more variables to the theme
* fix: radius on headerbar
* fix: Theme CosmicConfigEntry impl
* chore: specify rev of taffy
* fix: theme CosmicConfigEntry missing variables
* fix: apply theme type when theme mode changes
* wip: add plus icon to empty color picker button
* chore: fix rev and imports
* refactor(color-picker): allow custom size for the icon
* refactor(color_picker): make color_button public
* update iced
* wip: update to use cosmic-advanced-text
* use cosmic-advanced-text branch of iced
* fix: line height and spacing for segmented button and update to get svg fix
* fix: spin button styling & spacing
* update iced to fix segmented button border radius
* feat: example improvements
* feat: helper for loading fonts
* feat: add focus style to button
* fix: slider height and iced fixed
* feat: hash icon width and height
* cleanup
* update ci
* refactor: always use lazy feature of iced
* update iced
* update iced
* cleanup & update iced
* update iced: new slider & tiny-skia quad updates
* update iced: fixes for tiny-skia quad rendering with edge case border radius
* re-export iced_runtime & iced_widget
* merge master
* udpate iced
* update iced
* update iced
* update iced
* fix: make rectangle_tracker subscription only return update if there is some
* feat: derive macro for loading a cosmic-config
* feat (cosmic-config): iced subscription
* fix (example): update to rectangle tracker subscription
* fix (cosmic-config)
* refactor(cosmic-config-derive): add support for types with generic parameters
* fix (cosmic-config): feature gate updates for subscription helpers
* feat: support for custom & system themes + move cosmic-theme to libcosmic
* feat: sorta hacky way of creating header bars for libcosmic + update iced to get support for resizable windows in iced-sctk
* update iced
* update and reexport sctk
* fix: applet border radius
* feat (cosmic-theme): add id and name methods
* fix(cosmic-theme): reexport palette from cosmic-theme
* fix(cosmic-config-derive): allow use with reexported cosmic-config
* feat: update iced with fix and refactor applet env vars
* update iced
This is more general, and necessary if the custom theming is dynamically
generated.
Iced's builtin theme also uses `Box`ed `Fn`, or `Rc` where clone is
required, so this seems reasonable.
Only `Text` is left using `fn`, since it needs to be `Copy`. Hopefully
that can be changed in Iced at some point.
`::custom` methods are added to make these variants a little more
convenient to construct. This replaces a couple `From` implementations,
which are potentially problematic with a generic.
- Removes the orientation enum in favor of two separate widgets
- Implements the spacing attribute for both widgets
- Demo is updated to display spaced variants of the widgets