Olivier Goffart
e172ed504f
FocusScope: Remove FocusPolicy and adds two bool state instead ( #9263 )
...
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
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 / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (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 / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.85) (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 / ffi_32bit_build (push) Blocked by required conditions
CI / cpp_package_test (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 (stm32h735g, thumbv7em-none-eabihf) (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
As discussed in API review, we thought that as we don't have bitflag,
it makes more sense to have two boolean properties.
Also change the behavior as the focus out event should always be
forwarded regardless of the policy.
2025-08-26 21:42:40 +02:00
Simon Hausmann
666cee9468
Items: Permit calling focus() on invisible items
...
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
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-2025-08-15) (push) Blocked by required conditions
CI / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (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 / 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.85) (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 / ffi_32bit_build (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 (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / docs (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
Focus transfer via keyboard or mouse only works between visible items, but let's permit programmatic focus transfer and trust the developer to do the right thing towards the user.
Reported by ramayen at https://chat.slint.dev/public/pl/kaik88s9tbbaxp6mq9ht1ysw5a
2025-08-20 10:25:38 +02:00
Tobias Hunger
749abeabe0
core: Add capture_key_event function into items
...
... and call that during key event delivery.
Add `capture_key_pressed` and `capture_key_released` callbacks
to `FocusScope` to expose this functionality.
Add a simple test to make sure Interception of key events works as
expected.
Related to: #102 , #6390
2025-08-01 20:24:24 +02:00
Avery Townsend
d80e5c286d
Add focus-policy property to FocusScope ( #8940 )
CI / python_test (macos-14) (push) Blocked by required conditions
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
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 / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / tree-sitter (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 / 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.85) (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 / 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 (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (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-07-23 14:16:55 +02:00
Olivier Goffart
db3bbcd0e4
TextInput: don't get the focus if disabled
...
Fixes #8626
ChangeLog: TextInput no longer get the focus if disabled
2025-06-06 16:28:51 +02:00
Olivier Goffart
7b4d2fd3d3
Renames after the API review
...
CC #8631
2025-06-06 12:31:50 +02:00
Avery Townsend
8c4ccabf7d
Expose FocusReason to .slint as an argument in focus-event-changed and add focus-gained and focus-lost callbacks ( #8569 )
...
This exposes FocusReason to .slint, and adds it as an argument to focus-event-changed callback on FocusScope to close #8387 . It also adds two new callbacks, focus-gained and focus-lost, which are identical to focus-event-changed but are only invoked on focus gain or loss respectively.
In addition to this, it removes the FocusEventReason::AccessKit variant, replacing it with the mouse variant to hopefully make AccessKit more compatible with any Slint code that will use FocusEventReason.
Finally, I added two tests based on focus_change_event.slint, one for testing the FocusEventReason argument and another for testing the new callbacks.
close #8387
ChangeLog: Added `focus-gained` and `focus-lost` callback to FocusScope. Pass an `FocusReason` enum to the FocusScope callbacks
2025-06-04 09:51:26 +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
88cc96ba73
Make forward-focus in a PopupWindow work
2025-02-04 12:31:06 +01:00
Olivier Goffart
36381c579b
ListView focus fixes
...
- Fix StandardListView not always getting the focus. Because the
geometry of the FocusScope might be empty but its position is still
in the non-clipped area, but not its center.
- Fix panic when accessing "negative" items if there are hidden
elements in the ListView (#7341 )
Fixes #7341
2025-01-13 21:08:32 +01:00
Olivier Goffart
243262cbdf
Keep focus of child of clipped item that are themselves not clipped
...
If a clipped item has a child outside of its bounds that is not clipped,
we shouldn't remove the focus.
Fixes #7058
2024-12-16 19:06:08 +01:00
Olivier Goffart
e03e812984
Fix Focus in PopupWindow
...
Fix https://github.com/slint-ui/slint/issues/2911
2024-12-09 15:58:16 +01:00
Simon Hausmann
e52ef5cfe1
Calling focus() on a focusable item that's already focused should be a no-op
...
Fixes #6403
2024-10-01 12:31:32 +02:00
Olivier Goffart
7eb8c8ed90
Failed attempt at reproducing #6262
2024-09-27 16:08:01 +02:00
Olivier Goffart
547e00b6f9
Tab with modifier shouldn't change focus
...
(eg: alt+tab or control+tab)
Failed attempt at fixing #5823
This doesn't fixes it because the problem is that the key event are
forwareded as syntetic events when we gain focus, and they are not in a
order that allow to detect alt+tab
2024-08-12 13:40:58 +02:00
Olivier Goffart
51adfbdc91
tests: Test that deleting the focussed element in some callback don't panic
...
More failled attempt at reproducing #5698
2024-08-07 12:50:13 +02:00
Aurindam Jana
3523e86359
Simplify commercial license ( #3063 )
...
Base the commercial license on the Royalty-free license adding clauses pertaining to the fees.
2024-05-31 14:06:17 +02:00
Aurindam Jana
9a3aa265d5
Update Royalty-free license ( #5257 )
...
Add clarification that Application may not expose Slint APIs.
2024-05-31 10:53:19 +02:00
Simon Hausmann
31767eb6ab
Add a clear-focus()function on all elements that have a focus() function
...
This is the counter-part, which removes focus from the element if it's currently focused. The window - if focused - may still be focused towards the windowing system.
2024-04-26 11:09:11 +02:00
Aurindam Jana
0cfeec1a31
Update Slint Community License ( #4994 )
...
Updated the version from 1.1 to 1.2
Renamed the header to "Slint Royalty-free Desktop, Mobile, and Web Applications License"
Added definition of "Mobile Application" and grant of right
Moved "Limitations" to 3rd section and "License Conditions - Attributions" to 2nd section
Added flexibility to choose between showing "MadeWithSlint" as a dialog/splash screen or on a public webpage
Moved the para on copyright notices to section under "Limitations"
2024-04-15 15:18:55 +02:00
Olivier Goffart
a266e63549
Testing: Add some tests for setting the mouse cursor
2023-11-23 07:25:46 +01:00
Olivier Goffart
bebec49398
Refactor input_method_request
...
Part of #3811
But this is still on the internal trait for now
2023-11-02 12:16:40 +01:00
Florian Blasius
3e3dd03566
Added focus-changed-event callback to FocusScope ( #3650 )
2023-10-17 17:30:19 +02:00
Florian Blasius
2324b35d12
napi test driver setup ( #3635 )
...
* Export interpreter stuff on private_api namespace
* Update api/napi/src/interpreter/value.rs
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Update tests/driver/napi/build.rs
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update tests/driver/napi/Cargo.toml
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Avoid unwanted prompt on Windows when running npm run build twice
Don't generate "napi.js" as then Windows will try to open it when running just "napi",
if nodejs registered .js as extension.
* Remove windows path workaround
It doesn't look like that it is needed.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
Co-authored-by: Simon Hausmann <simon.hausmann@slint.dev>
2023-10-11 12:48:27 +02:00
Aurindam Jana
5a4a7fee63
Update royalty free license to 1.1 ( #2994 )
2023-07-10 10:12:11 +02:00
Olivier Goffart
11dea135f7
Domain: slint-ui.com -> slint.dev
2023-06-16 10:55:08 +02:00
Aurindam Jana
039e54a5de
Add royalty free license to files except examples and docs ( #2888 )
2023-06-15 11:20:50 +02:00
Simon Hausmann
f9ba8023d4
Fix read-only TextInput reporting input method access
...
When the TextInput item is read-only, it should not report availability
or any other status to the input method via the window adapter.
This also fixes the order of events when clicking on a TextInput: We
would send the ime position update request before enabling the ime,
because we set the focus _after_ setting the cursor pos.
Fixes #2812
2023-06-05 14:55:22 +02:00
Olivier Goffart
b9d139fd6e
Fix focussing element whose base is focusable
...
Fixes #2622
2023-04-24 18:03:33 +02:00
Olivier Goffart
4f6fce0962
Fix the JS test for text-input-focused
...
Invoking functions are not yet implemented in JS
2023-04-12 14:49:08 +02:00
Olivier Goffart
a57c7eb6bc
Added TextInputInterface.text-input-focused
2023-04-12 14:49:08 +02:00
Simon Hausmann
77895d3a2a
doc: Document the enabled property of FocusScope
...
Also add a test for the described behavior.
2023-04-12 08:48:24 +02:00
Simon Hausmann
9a35989eea
Fix outer FocusScope objects stealing click-focus
...
After the `FocusScope` accepted the input event by transferring focus, stop
propagating the event and avoid it being sent to a parent,
which in turn will steal the focus.
2023-04-12 08:48:24 +02:00
Olivier Goffart
6889dfa5f5
Rust: Make new(), run() and show() report errors from the backend
...
Fixes #2198
2023-02-10 05:00:03 +01:00
Olivier Goffart
85ab82e935
Fix the tests with the new syntax
...
Linking to an output property is a warning with the old syntax, and an
error in the new syntax
2022-11-15 17:33:27 +01:00
Florian Blasius
61c39b5fa1
Add support for dispatching key events through the public platform API
...
This change adds `KeyPress` and `KeyRelease` variants to the
`WindowEvent` enum, along with the new `slint::Key` enum, that allows
encoding keys.
2022-11-15 10:34:17 +01:00
Olivier Goffart
88d231f3ec
Move the testing module from away from public api
...
move it the testing backend
2022-09-06 17:27:15 +02:00
Olivier Goffart
40f489041e
Rename slint::internal to slint::unstable_private_api and move re_exports into it
...
Also move the module in its own file
2022-09-06 05:42:11 +02:00
Tobias Hunger
107e3ed2e2
janitor: Fix some typos
2022-08-29 16:53:47 +02:00
Tobias Hunger
186e7c0ff2
Fix focus of next item with empty components ( #1247 )
...
Handle empty components in the item tree when looking for the next item
to focus.
2022-05-09 12:46:10 +02:00
Olivier Goffart
2a55daff32
Focus: fix looping in repeater when the repeater ends with a repeater
2022-04-29 17:27:59 +02:00
Olivier Goffart
36313e8182
Fix focus navigation involving repeater at the end of the chain
...
The parent_node function doesn't reset its argument if it is already
set while calling the function
2022-04-29 16:35:46 +02:00
Tobias Hunger
c825eee228
janitor: Update global cspell
...
Update global cspell words and remove some file-wide words.
Also remove a manual test that is now also run as a proper test case.
2022-04-12 12:03:45 +02:00
Tobias Hunger
73e178a840
Add enabled property to FocusScope
2022-04-12 10:48:09 +02:00
Tobias Hunger
ee4cdeead7
Add a test for tab focus handling
2022-04-01 11:35:34 +02:00
Tobias Hunger
4230ac2572
Update copyright information to reflect name change
...
Also run resue over the codebase and fix complaints from that tool.
2022-02-09 10:27:47 +01:00
Tobias Hunger
cc3994b58d
Rename rust API
2022-02-02 13:26:35 +01:00
Simon Hausmann
7d297da2fc
Rename the sixtyfps C++ namespaces
2022-02-02 12:11:27 +01:00
Olivier Goffart
0c0a783095
Rename all our .60 files to .slint
2022-02-02 10:05:45 +01:00
Simon Hausmann
809fbfc7a6
Rename sixtyfps-node
...
This doesn't touch the documentation, just the package/API side
2022-02-01 22:17:35 +01:00