Commit graph

489 commits

Author SHA1 Message Date
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
Olivier Goffart
723f89d342 Fix changing the size of contrained window on x11
Changing the constraint doesn't work on non-rezsizable window.
So first set the window as resizeable, then change the constraints, then
maybe remove the resizable flag
2022-04-29 11:54:31 +02:00
Olivier Goffart
b2cdd8c2a0 Fix a bunch of documentation warnings
llr::optim_passes::count_property_use is referenced by some documentation
comment and that's why it must be public
2022-04-26 12:47:34 +02:00
Olivier Goffart
da82ecf29e janitor: Remove outdated comment 2022-04-26 08:10:35 +02:00
Olivier Goffart
13b12fd0e0 Fix MCU build 2022-04-22 15:55:20 +02:00
Olivier Goffart
63b38d7f89 Move the Flickable item and implementation in the same module
The flickable module was created to hold the implementation for the Flickable
at a time were all the items lived in the items.rs module.
Now that some items moved into sub modules of items, we can also move the Flickable
in such module, alongside its implementation
2022-04-22 15:26:13 +02:00
Tobias Hunger
ddc21cb8e5
Make ItemRc::parent_item(...) return an Option<ItemRc> (#1189) 2022-04-22 14:27:34 +02:00
Tobias Hunger
a9bb0065b0 Fix forward focus movement with nested components
This used to pick the wrong node, which was then detected as a
focus loop, which in turn prevented the window from moving focus
forward.
2022-04-22 12:05:32 +02:00
Tobias Hunger
3404a20135 Split up tests to get a better overview over issues 2022-04-22 12:05:32 +02:00
Tobias Hunger
4611c33470 Add test case for nested component focus traversal 2022-04-22 12:05:32 +02:00
Tobias Hunger
7ac4231150 Focus: Do not send keyboard event to invisible widgets
Do not send keyboard events to invisible widgets, reset the keyboard
focus instead.

That fixes #798 again with a bit less of a work-around. To properly fix
this we will need to make the tab widget (and probably others) more
intelligent though.
2022-04-21 12:37:32 +02:00
Tobias Hunger
416aa42d90 Component: Replace parent_item to parent_node
Remove the `parent_item` function. After the recent changes that did not
return an item anymore and since the item tree is exposed, this function
was only used to find the repeater a component was created by.

So replace the old function with a new one that only returns the parent
node in the parent component.

This saves a few lines of generated code that is not used anymore.

Co-authored-by: Simon Hausmann <hausmann@gmail.com>
2022-04-20 14:29:18 +02:00
Olivier Goffart
fd44b2e651 Model: Do not register row data tracker if not needed
Make track_row_data_changes not register a dependency to the row
if there is currently no binding being evaluated.
2022-04-19 15:12:15 +02:00
Olivier Goffart
67e9a59398 Add a Model::row_data_tracked function
Closes #1177
2022-04-19 15:12:15 +02:00
Olivier Goffart
e85e69fda0
Declare .slint enum in one place in i-slint-common
This avoid repeating the enums both in the compiler and in
the runtime library, and register them in a bunch of other places.

So it should be easier to add enums and enum values

Since cbindgen doesn't see through the macro, generate the enum
manually
2022-04-14 19:17:48 +02:00
Simon Hausmann
5a270313d2 Improve VecModel::set_vec test
Verify the values reported by `row_count()` in the rows added/remove
callbacks.
2022-04-14 14:20:27 +02:00
Olivier Goffart
f5030cff06
Add a reset function to the model notifier 2022-04-14 14:06:34 +02:00
Simon Hausmann
2b93504b93 Fix MCU build 2022-04-14 11:31:39 +02:00
Simon Hausmann
cb2a555c90 mcu: fall back to breaking text anywhere if we can't find with given break opportunities
cc #843
2022-04-14 10:58:04 +02:00
Olivier Goffart
6c59cefa9d Property system: setting a binding must mark all dependent property as dirty
When resetting the binding, we need to mark dependent property as dirty.
It just hapenned that the current implementation always set all bindings
before starting to query the properties, so this problem was not seen
before. But there is an exception when setting the two_way bindings,
then we may set the binding after the property was querried because
setting a two way binding actually queries the property
2022-04-13 21:16:32 +02:00
Simon Hausmann
1b656ecb0d Clean up optimization to skip layers for opacity elements 2022-04-13 17:38:56 +02:00
Olivier Goffart
54a6cb22ee Allow .darker and .brighter on Brush 2022-04-12 13:01:53 +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
Olivier Goffart
1b91158b46 corelib: allow to use i32 for coordinate instead of f32 2022-04-11 17:46:50 +02:00
Simon Hausmann
afb59cba29 mcu: fix popups not visibly closing
When closing a popup, notify the platform window, so that the mcu
backend can remember that region and start the dirty region with it.

Also, free all the rendering cache items of deleted items, to avoid accidental re-use
when re-opening a popup.
2022-04-08 19:32:33 +02:00
Simon Hausmann
67af5a79f6 Revert "Avoid rendering if the clip is empty"
This reverts commit faf07ea237 as it
breaks dependency tracking with the partial renderer. The effect is that
the mcu printer demo (in release?) doesn't react to input events
anymore. They are delivered by the redraw tracker doesn't get notified.
2022-04-07 17:38:54 +02:00
Olivier Goffart
17fd446905 Get rid of a call to unsafe in the test 2022-04-07 16:59:38 +02:00
Olivier Goffart
0429e11cf7 Refactor: Move ItemRc and ItemWeak to item_tree.rs
Keep items.rs for the implementation of items, and move the logic
that helprs navigating the tree to the item_tree.rs module
2022-04-07 16:59:38 +02:00
Tobias Hunger
49dee3a7eb Match up doc strings and code 2022-04-07 16:50:07 +02:00
Olivier Goffart
d0501b4f3c Bump vtable version
Commit 99ac33c440 make use of the new Debug impl
in ctable from corelib, so we must update the minimum required version
from its Cargo.toml
2022-04-07 11:17:50 +02:00
Simon Hausmann
faf07ea237 Avoid rendering if the clip is empty
Take an early shortcut
2022-04-07 09:39:30 +02:00
Tobias Hunger
99ac33c440
Debug for ItemRc (#1151)
* vtable: Add Debug implementation to VRc

This will just print the pointer value to be able to destinguish between
different VRcs.

* Derive Debug implmentation for ItemRc

This needs vtable::VRc to have a Debug implementation!

* Update helper_crates/vtable/src/vrc.rs

Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2022-04-06 16:14:30 +02:00
Tobias Hunger
52c2fe585d
Fix forward tabbing through items (#1149)
* Fix forward tabbing through items

The implmentation never properly stepped out of repeaters, so it went
into a loop when a repeater was below a node without siblings. This in
turn led to the window aborting the focus item search. So the focus
never moved forward.

Add a test to make sure this stays fixed.

* Update internal/core/items.rs

Co-authored-by: Simon Hausmann <hausmann@gmail.com>

Co-authored-by: Simon Hausmann <hausmann@gmail.com>
2022-04-06 13:11:36 +02:00
Tobias Hunger
18ea9d302b Add test for default focus chain implementation 2022-04-05 16:34:16 +02:00
Tobias Hunger
f85812135c Add some basic tests for ComponentItemTree walking 2022-04-05 16:34:16 +02:00
Olivier Goffart
40c98d6d05 Update cbindgen and enable MouseCursor::move
cbindgen 0.21 was released which contains https://github.com/eqrion/cbindgen/pull/724
which allow to use raw identifier in enums shared with C++.
So now we can have `MouseCursor.move` in slint  despite it being a rust keyword

Note that the strum macro also have trouble with the raw identifier, so we
take that in account in the conversion functions in the interpreter
2022-04-05 06:39:50 +02:00
Lukas Jung
4a7a84f253
Text shortcuts (#1129)
* Add moving by word to TextInput

* moving cursor to end of line, paragraph and text

* fix shortcut in cursor move test
2022-04-04 15:25:50 +02:00
Tobias Hunger
0ca23948fb Do not overflow when walking the tree 2022-03-31 16:29:38 +02:00
Lukas Jung
98b084f80c Fix the redo shortcuts 2022-03-31 10:54:38 +02:00
Lukas Jung
54a2901777 Move TextShortcut to input.rs and rename Shortcut to StandardShortcut 2022-03-31 10:54:38 +02:00
Lukas Jung
068489d788 Use Shortcuts for Copy Paste in TextInput 2022-03-31 10:54:38 +02:00
Lukas Jung
1f5500ff7b Add Shortcuts to KeyEvent 2022-03-31 10:54:38 +02:00
Lukas Jung
7cffd928f2 add TextShortcut to text.rs and use it 2022-03-31 10:54:38 +02:00
Simon Hausmann
dbebdc190b Fix no_std build 2022-03-31 10:13:33 +02:00
Tobias Hunger
5a4226c03e Make tree-walking code DRY-er
Reuse step_into_node over redoing almost the same code again.
2022-03-31 10:09:34 +02:00
Tobias Hunger
3a9fe1d161 Use Vec from alloc crate 2022-03-28 14:13:36 +02:00
Tobias Hunger
03e6f104be Make ComponentItemTree::new take a ComponentRefPin 2022-03-28 14:13:36 +02:00
Tobias Hunger
f6d899b384 Window: Change signature of take_focus_item 2022-03-28 14:13:36 +02:00
Tobias Hunger
b9fddc4ae1 Wire up tab focus handling in Window
Tab/Back-Tab (when not handled by the currently focused window) trigger
a focus move.
2022-03-28 14:13:36 +02:00