Commit graph

556 commits

Author SHA1 Message Date
Olivier Goffart
ee672d65f5 Fix panic when the binding loop is caused by accessing the same component twice
The component properties might be accessed through different paths so we
may still reach a case where we have to borrow something that is already
borrowed
2023-01-24 18:01:30 +01:00
Olivier Goffart
bc1afb6f8f Fix TabWidget::current-index bindings
The property set by the user was not kept because the binding went the
wrong way.

Also remove the undocumented (and equaly not working)
TabWidget::current-focused property from the public API.
The current-focused property is initialized by the tab.
2023-01-24 11:34:35 +01:00
Olivier Goffart
a0fdf94fb1 StandardTableView: Remove the editable feature for now
This commit can be reverted when we want to introduce it again.
There is a few bugs with the editable property:
 - The text is not in sync with the model if the model changes after an
   edit. (can be seen by making an edit and then sort)
 - The highlight of the current row doesn't work properly
 - We should probably only edit on double click or some shortcut instead
   of just clicking
 - The editable field exist but does nothing for the StandardListView
2023-01-24 07:31:29 +01:00
Olivier Goffart
66b848227b StandardTableView resizable columns 2023-01-23 16:26:49 +01:00
Olivier Goffart
fabebaa009 Adjust the look of the native StandatdTableView
- The header should be within the frame
 - Use the NativeStandardListViewItem so we have the right alternative
   row coloring and hover
2023-01-23 16:26:49 +01:00
Olivier Goffart
aad6cbbe07 StandardTableView: don't inherit from Rectangle 2023-01-23 16:26:49 +01:00
Simon Hausmann
24dcef5fed
First stage of cleaning up the export handling of the slint root component (#2095)
We implicitly export the last component of a .slint file to the generator.
Issue a warning when that happens and suggest to export it explicitly.
2023-01-23 15:19:49 +01:00
Simon Hausmann
629c7ed80e Remove undocumented and dysfunctional PathLayout
This type is poorly implemented and not documented. Let's remove it for now.
It shall remain available in the git history in the event of a resurrection.
2023-01-21 13:10:19 +01:00
Olivier Goffart
6e87385cb3 Style: Harmonize the in/out properties accross styles 2023-01-20 16:21:59 +01:00
Olivier Goffart
4a086d7ed2 Always generate the native struct for exported struct
Fixes #594
2023-01-19 15:42:32 +01:00
Olivier Goffart
95e07ff4fe Fix two way binding to global getting the wrong value
We should not move the expression from a component to a global because
there is a two way binding

Fixes #2064
2023-01-18 14:07:32 +01:00
Olivier Goffart
279f399adf Don't forget elements with box-shadow error
There may still be reference to them. We may panic in later passes.

Fixes syntax/basic/box_shadow.slint test
2023-01-17 16:29:13 +01:00
Olivier Goffart
b55ec6894a Layouting: forward the implicit constraint from the children to the parent
Closes #783
2023-01-17 16:29:13 +01:00
Olivier Goffart
6e4b1b3468 Rename the std-widgets files of style base so they are not considered as a style
This is just so they don't appear in the error message, and also not
being tested by #2076 (https://github.com/slint-ui/slint/pull/2076#issuecomment-1385408167)
2023-01-17 16:21:53 +01:00
Florian Blasius
520df46998
Update examples to new syntax (#2067)
* run slint-updater on examples
* manual syntax updates
2023-01-16 12:11:25 +00:00
Florian Blasius
ac5eaf495f
move cpp StandardListViewItem from private to public namespace (#2062)
* move cpp StandardListViewItem to public namespace
* Fix missing C++ docs for StandardListViewItem

The struct is originally defined in Rust in model.rs and cbindgen creates the
compatible C++ declaration. For doxygen
to see it, it needs to be emitted into slint_generated_public.h.

* Improve the StandardListViewItem docs a little bit
* move cpp StandardListViewItem to public namespace

Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2023-01-16 09:06:36 +01:00
Simon Hausmann
96c80a2dd1
Fix crash when using an int model in a repeater with a negative value (#2063)
Make sure that we return an unsigned for row_count() in C++ and Rust by ensuring an unsigned int model at creation time.

For the interpreter this "worked" by chance as casting a negative floating
number to usize automatically caps at zero, and all values are stored as f64. For safety this patch
applies the same fix though, to be on the safe side.
2023-01-14 21:20:14 +01:00
Florian Blasius
f2aab576f4
Add StandardTableView widget (#2032)
* Text only StandardTableView with column and rows
* Text editing of cells
* Sort by column ascending and descending
* Variants of the TableView for native, fluent and material
2023-01-12 19:41:12 +01:00
Olivier Goffart
7947d44e59 Run the syntax_updater on our widgets
This is commit is just the output of running the syntax updater on the
files in the internal/compiler/widgets directory.
No extra manual steps were done.

Note: In order to run the updater, I did a hack so that the updater wouldn't
choke on internal item used by the styles by commenting out the check in
ElementType::lookup_type_for_child_element
2023-01-11 10:52:48 +01:00
Olivier Goffart
5fbf68a647 Compiler: use the empty type more often instead of the Rectangle
We have that type now, so it should be used when we don't really need a
rectangle
2023-01-10 22:23:53 +01:00
Simon Hausmann
c04bc00d34 Add initial support for rendering text in the screenshot test driver
This uses the approach discussed in Mattermost: The compiler understands
a SLINT_DEFAULT_FONT environment variable that can point to a path,
which overrides the fallback font that would otherwise come from the
system (and differ between test systems).
2023-01-09 14:12:33 +01:00
Olivier Goffart
4cf6690e5a syntax_updater: also parse slint,no-preview code block in md files
This include a fix to make sure the diagnostics has access to the
sources even if there is no path
2023-01-07 14:18:10 +01:00
Olivier Goffart
a0d057b8b8 Enable the new syntax by default 2023-01-07 14:18:10 +01:00
Olivier Goffart
8d7b8df922 Fix conversions of array literal containing struct with array literal
Fixes #2023
2023-01-02 23:53:22 +01:00
Olivier Goffart
1ab228c628 Implement calling public functions from native code
This doesn't implement any support for the interpreter yet

CC: #2012
2022-12-22 04:28:32 -08:00
Olivier Goffart
a0d6199391 Updater: annotate pure to all function and callback that returns something 2022-12-22 00:26:27 -08:00
Olivier Goffart
dace899cc5 Pure function: make it a warning in legacy context instead of an error 2022-12-22 00:26:27 -08:00
Olivier Goffart
8fc7c2dafc Error when mixing purity in callback aliases
Also adjust the way we report error while infering to avoid double
reporting errors
2022-12-22 00:26:27 -08:00
Olivier Goffart
1cbd61145e WIP: pure qualifier for callback and functions 2022-12-22 00:26:27 -08:00
Olivier Goffart
8a09043e63 Properly remember the location of builtin member function call
So we can report an error if they are called in a pure context
2022-12-22 00:26:27 -08:00
Olivier Goffart
3dc560be06 Make source-clip-width/height defaults to the size of the image
And use that to compute the ratio

Whilte technically a breaking change, i don't think anyone rely on the
previous behavior.

Fixes #664
2022-12-20 08:42:47 -08:00
Olivier Goffart
5cd38adb14 Move the colorize property to the Image item
Instead of the ClippedImage. Because we use the colorize property more
often than the source property, and these are soon going to be even more
expensive
2022-12-20 08:42:47 -08:00
Olivier Goffart
af50c2c2c2 Do not panic if the document contains a global but no normal component
Fixes #2005

(Unfortunately, we can't make a driver test for this becasue the
behavior with the interpreter is different than with the compilers.
The interpreter errors out, while the compiler should just generate
nothing)
2022-12-19 11:54:15 -08:00
Olivier Goffart
69df22e2fb Update resvg dependencies 2022-12-18 08:49:19 -08:00
ogoffart
ce07d078ce Bump version number to 0.3.4 2022-12-16 09:36:15 +00:00
Olivier Goffart
57d2e99723 Fix panic when a PopupWindow is a children of an optimized element 2022-12-15 07:01:58 -08:00
Olivier Goffart
3e8a681f36 Don't optimize properties used by functions 2022-12-15 05:43:24 -08:00
Olivier Goffart
52813224a5 Fix rust compilation of functions returning nothing 2022-12-15 14:17:03 +01:00
Olivier Goffart
aeed3b48fc Parser: fix parsing of "public function" in release mode
`consume()` does not advance whitespace, while `peek()` does.  And the
`peek()` in the debug_assert meant that the behavior was different in
release and debug mode.
Use `expect` instead of consume as it skip over white space
2022-12-15 12:52:21 +01:00
Simon Hausmann
554d153e35 Limit re-exporting of types
- Only allow one module re-export per file
- Warn when a re-exported type clashes with a locally exported type, and prioritize the local type.
2022-12-09 11:05:08 +01:00
Simon Hausmann
8faf57fa40 Minor fix to export * from "blah" parsing
Use the star token directly.
2022-12-09 11:05:08 +01:00
Simon Hausmann
b38fe7c5f0 Clean up internal Exports struct
- Use deref instead of `.0` tuple access (looks neater)
- Provide a convenience find() function that also makes use of the sorting
2022-12-09 11:05:08 +01:00
Simon Hausmann
6f19ab38e7 Use re-exports in the styles to simplify their code 2022-12-09 11:05:08 +01:00
Simon Hausmann
03fe599890 Add support for re-exporting modules
Use `export * from "somewhere.slint"` to avoid having to repeat all the
types of an existing module in order to re-export all of the types.
2022-12-09 11:05:08 +01:00
Simon Hausmann
6c01ad858c Clean up setup of exported names and components/types
Replace the intermediate NamedExport and SeenExport structs and the hash
table to find duplicates with a simpler algorithm:

1. Collect all exports into a vector, sorted, with duplicates
2. Eliminate duplicates and issue warnings accordingly and insert the
   result into a second vector.

As a bonus, the resulting vector of exports is now sorted.
2022-12-09 11:05:08 +01:00
Olivier Goffart
ccf3e8e9e9 C++: Generate image texture data for software renderer 2022-12-09 09:25:48 +01:00
Olivier Goffart
b2e22dc7cd Apply suggestions from code review
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2022-12-06 14:56:25 +01:00
Olivier Goffart
3c5aeb5897 Test for binding loops involving functions 2022-12-06 14:56:25 +01:00
Olivier Goffart
ed07cd825d Make functions private by default unless annotated with 'public' 2022-12-06 14:56:25 +01:00
Olivier Goffart
dfdbc942f6 Split Expression::CallbackReference and Expresison::FunctionReference 2022-12-06 14:56:25 +01:00