Commit graph

1358 commits

Author SHA1 Message Date
Olivier Goffart
1292d9e94e corelib: Fix overflow when spamming the TouchArea with clicks
Fixes #8552
2025-05-27 11:46:11 +02:00
Avery Townsend
c41d4a4df3
Add FocusEventReason to FocusEvent and add a select all on keyboard focus for TextInput (#8523)
Closes #5992

Adds the enum FocusEventReason and makes it an argument for FocusEvent. This reason could eventually be exposed in Slint to solve #8387.

Using the focus reason tracking, I also added a select all on keyboard focus for TextInputs (except on macOS), which should close #5992.

ChangeLog: TextInput selects its content when focused with the keyboard on Windows and Linux
2025-05-27 07:56:13 +02:00
Olivier Goffart
23962b3e25
Upgrade cbindgen and use unsafe(no_mangle) attributes (#8539)
To be compatible with the 2024 edition, we need to wrap the
`no_mangle` attribute in `unsafe()`.

The parsing for that in cbindgen was only added in the version 0.28,
but we couldn't upgrade cbindgen before because of a regression in
cbindgen 0.27 that prevented us from upgrading.
Now that cbindgen 0.29 is released with a fix, we can prepare for the
2024 edition
2025-05-26 11:21:33 +02:00
Olivier Goffart
214d7fbea2 Flickable: add a change event handler to keep it in bound when geometry changes
When either the viewport gets smaller or the Flickable gets bigger, we
should move the viewport position to keep it within the bounds.

Fixes #7487
Fixes #2227

(Also workaround #8147 as the ScrollView will automatically go back in
bounds)
2025-05-23 10:04:00 +02:00
Tobias Hunger
c25d15c3d2 live-preview: Remember recent colors
... for the duration of the session. How can we save those
colors?

Recent colors change a lot, we probably do not want that stored
inside the git repository hosting the slint files... and this is
probably "personal data" and nor "project data" in the first place.
2025-05-22 15:30:30 +02:00
Simon Hausmann
35c972c227
Add example of rendering a Bevy scene into Slint (#8380)
Some checks are pending
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, beta) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, stable) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, nightly) (push) Blocked by required conditions
CI / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.82) (push) Blocked by required conditions
CI / cpp_cmake (ubuntu-22.04, stable) (push) Blocked by required conditions
CI / cpp_cmake (windows-2022, nightly) (push) Blocked by required conditions
CI / cpp_package_test (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / python_test (macos-14) (push) Blocked by required conditions
CI / python_test (ubuntu-22.04) (push) Blocked by required conditions
CI / python_test (windows-2022) (push) Blocked by required conditions
CI / cpp_test_driver (macos-13) (push) Blocked by required conditions
CI / mcu (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / vsce_build_test (push) Blocked by required conditions
CI / mcu (pico-st7789, thumbv6m-none-eabi) (push) Blocked by required conditions
CI / mcu (pico2-st7789, thumbv8m.main-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / ffi_32bit_build (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / wasm (push) Blocked by required conditions
CI / wasm_demo (push) Blocked by required conditions
CI / tree-sitter (push) Blocked by required conditions
CI / updater_test (0.3.0) (push) Blocked by required conditions
CI / fmt_test (push) Blocked by required conditions
CI / esp-idf-quick (push) Blocked by required conditions
CI / android (push) Blocked by required conditions
CI / miri (push) Blocked by required conditions
CI / test-figma-inspector (push) Blocked by required conditions
2025-05-19 15:25:40 +02:00
Simon Hausmann
98fbdb99b5
doc: Extend Model::as_any() docs with a hint how to debug downcast fa… (#8451)
Co-authored-by: Olivier Goffart <olivier.goffart@slint.dev>
2025-05-19 09:40:13 +02:00
Olivier Goffart
d28391e332
Implement Debug for PlatformError
With the same message as Display to have more meaningful errors in panic
from `unwrap()`

CC #8412
2025-05-12 13:03:23 +02:00
Simon Hausmann
bd0a486da8 Clean up cfgs for Apple operating systems
Replace ios specific cfgs with "apple but not macOS", dubbed
ios_and_friends, so that we also cover iPadOS, etc.. What those have in
common is that they don't have user-resizable windows. (We might want to
add visionOs in the future)

Also, simplify a few macos or ios cfgs with just target_vendor =
"apple", for what applies to all the operating systems.
2025-05-09 20:54:47 +02:00
Olivier Goffart
3a9ae8af0e Remove CompositionMode enum
It was used in the previous TargetPixelBuffer interface, but this is no
longer the case
2025-05-07 15:49:58 +02:00
Olivier Goffart
e42c4b18c2
swrenderer: interface for hw rendering of rectangle with border or gradients (#8384) 2025-05-06 15:53:53 +02:00
Simon Hausmann
f983cf0b19 Add Platform.os as well as a rudimentary test 2025-05-06 13:06:27 +02:00
Montel Laurent
4cd6f92013
Hide action when widget is disabled
ChangeLog: TextEdit/LineEdit : disable context menu action when the widget is disabled or read-only
ChangeLog: Added ContextMenuArea::enabled
2025-05-02 13:20:46 +02:00
Simon Hausmann
ad3ab49d45
CI: fix snake case warning with nightly 2025-05-01 08:21:54 +02:00
Simon Hausmann
2f2478d1ea WGPU: Clean up public API
- Create a `slint::wgpu_24` module
- Re-export `wgpu` in it
- Place the WGPU config types used by the `BackendSelector::require_wgpu_24` function in it, and remove the 24 infix.

As an upside, this also adds the feature guard to the docs at least for the `wgpu_24` module.
2025-04-30 15:54:06 +02:00
Olivier Goffart
c8138ff1db
swrenderer: rewrite TargetPixelBuffer::draw_texture interface
Instead of using datastructure that are tailored to our line by line
renderer and draw functions, use more generic and future proof data that
are easier to handle by hardware accelerator, and may be easier to
stabilize.

The screenshots from the screenshots test have to be re-done
because the rounding is different

Note: the C++ API DrawTextureArgs is not exposed yet
2025-04-29 23:26:02 +02:00
Simon Hausmann
33581182ef backend-selector: Add the ability to configure WGPU
The `require_wgpu_24` function accepts either a fully setup WGPU, or one
can configure individual aspects such as features/limits.

The wgpu_texture example uses this to add push constants to the required
features and thus eliminates the need for uniform buffers.
2025-04-29 17:46:57 +02:00
Simon Hausmann
da5e7d5b22 WGPU: Add support for using WGPU textures in Slint
This adds a `unstable-wgpu-24` feature that exposes WGPU types in the
GraphicsAPI enum, adds `require_wgpu_24()` to the backend selector,
and adds a conversion from `wgpu::Texture` to `slint::Image`.

The `require_wgpu_24()` function in the selector will be extended in the
future (before the next release) to permit specifying additional aspects
of the WGPU configuration.

Co-Authored-By: Olivier Goffart <olivier.goffart@slint.dev>
2025-04-29 17:46:57 +02:00
Simon Hausmann
6595aee73c
Replace use of Rc<winit:🪟:Window> with Arc (#8257)
In preparation for wgpu usage, where the wgpu API requires the window
handle to be send, i.e. Arc<dyn HasWindowHandle>.
2025-04-24 13:28:51 +02:00
Simon Hausmann
fecc5a7b4d Move font resolution specific window item getter into resolve_font_property
This isn't needed anywhere else right now.
2025-04-24 09:18:45 +02:00
Simon Hausmann
b24374db60 Unify font property resolution in a FontRequest helper function 2025-04-24 09:18:45 +02:00
Simon Hausmann
35ef9f497b Simplify ParentItemTraversalMode::FindAllParents implementation 2025-04-24 09:18:45 +02:00
Simon Hausmann
b098bccc32 Propagate default font properties into PopupWindow 2025-04-24 09:18:45 +02:00
Simon Hausmann
eb825f2e95 Support default-font-* properties in Live-Preview
... by changing the resolution for the `WindowItem` to traverse the
item tree from the current item, instead of going to the window.

This doesn't quite fix #4298 because `rem` resolution is still missing.
That requires the built-in default font size function to be fixed as
well, which is non-trivial.

cc #4298
2025-04-24 09:18:45 +02:00
Olivier Goffart
0a2144bbc3 swrenderer: Fix panic when scaling an image so much that it cannot be seen
Fixes #8230
2025-04-22 16:01:48 +02:00
Olivier Goffart
9b1d4e740c Document better the argument of the select_bundled_translation 2025-04-16 06:03:31 +02:00
Joshua Goins
d1f2fef430
Menu: Add enabled property (#8145)
By default it's enabled, of course. This property is not only added to
MenuItem, but Menu as well - since they can be nested. It's also
possible to select a disabled item, but it's hard to modify that since
it's logic is written in Slint. You should be prevented from activating
it with a tap or key press at least.

See #7791
2025-04-15 08:08:11 +02:00
Olivier Goffart
1c5279032d MinimalSoftwareWindow: fix sizing with scale factor 2025-04-11 22:16:23 +02:00
Olivier Goffart
78a3757b7f
Remormat all the toml file again to fix npm upload
Commit cd6f2e2 reformated the .toml, but the 80 char width column is
judged too small to be practical

Add a .taplo.toml file

Also do not split feature array
2025-04-09 15:06:00 +02:00
Nigel Breslaw
7c0b212a6a
fix: to-hsv() should not return a negative hue value (#8077)
Internally a hue could be in negative degrees. The resulting color was fine, however using to-hsv() would then expose this negative value. This ensure the internal value is positive.

Some tweaks were needed to help tests pass but a real fix would be proper color comparisons. Floating point issues turn up when converting from hex to floats.
2025-04-09 10:58:07 +03:00
Nigel Breslaw
ffce61ca97
HSV should wrap hue values otherwise it outputs an invalid hue of black (#8024)
Fix by wrapping around at 360.
Added tests.
Updated the docs.
2025-04-03 12:33:40 +03:00
Olivier Goffart
a9a9e23e48
Document how to update a model from a thread
Part of #3945
2025-04-02 18:47:43 +02:00
Olivier Goffart
a7db2bf363
Docs: add a note about event processing for quit_event_loop
Fixes #6562
2025-04-02 18:16:17 +02:00
Tobias Hunger
e7994b589a core: Fix doc comment 2025-04-02 15:14:02 +02:00
Olivier Goffart
e5289af154 Introduce MenuSeparator
Fixes #7790
2025-04-02 11:50:45 +02:00
Tobias Hunger
cd6f2e2cf2 ci: Format toml files
... using taplo with default settings

I tried this with 4 spaces indentation, but the patch is almost as
big as this one, so I went with default settings instead as that
is just easier:-)
2025-04-02 11:03:41 +02:00
Simon Hausmann
0aa79a47f1 Apply the text input's type check also to the commit string from input
methods

Fixes #7705
2025-04-01 17:17:11 +02:00
Simon Hausmann
bdae506fd6 Fixed Fixed multiplication to work with u16 2025-03-31 14:46:21 +02:00
Simon Hausmann
0841c71776 Implement Fixed multiplication via intermediate i64 2025-03-31 14:46:21 +02:00
Olivier Goffart
84261ee01c Avoid overflow in Fixed::mul 2025-03-31 14:46:21 +02:00
Simon Hausmann
54b188b0d7 Fix texture src offset precisions for TargetPIxelBuffer::Draw_texture
Implement Mul<Fixed> for Fixed instead of truncation.
2025-03-31 14:46:21 +02:00
Sam Cristall
c4a4913ce5 Experimental Software Renderer: fix texture offset for partial draws when hwaccel 2025-03-31 14:46:21 +02:00
Simon Hausmann
7a25256050 Fix wrong rect being used for target pixel buffer calls 2025-03-31 14:46:21 +02:00
Simon Hausmann
a5bc428509 Fix TargetPixelBuffer functions being called with regions not clipped against the dirty region
This got lost in the rebase/squash session of https://github.com/slint-ui/slint/pull/7685
2025-03-31 14:46:21 +02:00
Olivier Goffart
6010cf724c Hover on MenuBar should activate menu if a menu is already open
Fixes #7822
2025-03-31 14:06:24 +02:00
Olivier Goffart
a80f14e7d8 Fix re-instentiating if elements when the condition is dirty
Fixes #3953
2025-03-27 15:37:07 +01:00
Olivier Goffart
1efe8c8d5f
swrenderer: Don't overflow for font bigger than 256px
Fixes #7936
2025-03-25 15:51:18 +01:00
Olivier Goffart
09e2b18ea3
Fix documentation of image formats
Shortly before 1.10, we dicided not to enable most format by default.
But the documentation was not updated to reflect that

Closes #6574
2025-03-25 12:27:39 +01:00
Olivier Goffart
8807e83bec Don't panic when forwarding mouse event to a window without item_tree
Not sure how we can get to this situation, but this is the most frequent
panic in 1.10 according to the crash reporter
2025-03-25 10:14:58 +01:00
Oleh Kulish
58447c99e7
Add error handling for the slide puzzle example (#7917)
* Add impl From<PlatformError> for JsValue
2025-03-25 10:07:16 +01:00