Commit graph

1937 commits

Author SHA1 Message Date
Olivier Goffart
861edf94fd Remove FontMetrics trait
since there is only one function in it, just put that function in the Window
then there is no need to heap alocate a dyn FontMetrics just to call this function.
2021-08-31 13:27:32 +02:00
Olivier Goffart
c1fc242a9a Move the text_input_byte_offset_for_position from the FontMetrics to the Window
In preparation of having mutiple-lines TextInput, we will need to give more
data to this function so it no longer belong in FontMetrics

Also remove the unused FontMetric::line_height()
2021-08-31 13:27:32 +02:00
Olivier Goffart
e1be599bc0 Print an warning in stderr when modifying read-only model
... and improve the documentation of Model
2021-08-31 10:36:22 +02:00
Olivier Goffart
b04581b64e Fix panic on mouse wheel on a NativeSlider
move the handle instead of panicking
2021-08-31 09:38:21 +02:00
Simon Hausmann
6db89e3468 Fix key events the control modifier on Windows, X11 and Wayland
Under these windowing systems, we receive a QString text from Qt that
contains a terminal control character (like \u{3} for ctrl+c). We
decided to supply the character for the key (for example 'c' for Ctrl+C)
to the application, so activate the conversion from the key code when
control characters are present.

With winit, we receive first a key down input event with the virtual key
code (for example C for Ctrl+C), followed by a ReceivedCharacter event
with a terminal control character. We choose to ignore that and instead
take the previously received key code and try to use that instead.

Fixes #441
2021-08-30 19:07:32 +02:00
Simon Hausmann
f50ba4a40f Fix doc build with nightly
The lack of docs for the debug_log macro produces a warning now (and
an error for us). Add some basic docs as remedy.
2021-08-30 18:36:07 +02:00
Simon Hausmann
dbc8b34494 Internal cleanup
Simplify if condition for entering the branch in the item graphics cache that
may update an existing entry.
2021-08-27 15:10:27 +02:00
Simon Hausmann
88af441321 Fix panic in the GL backend when text has complex bindings to sizes
Avoid borrowing the rendering cache while evaluating property bindings.

Fixes #410
2021-08-27 15:10:27 +02:00
Simon Hausmann
4b8259017b Doc fixes
Try to use the term "global singleton" consistently. That's also the
term we use in the language reference.
2021-08-27 13:46:44 +02:00
Olivier Goffart
70c57844b7 Add invoke_global_callback to the C++ interpreter API 2021-08-27 13:36:48 +02:00
Olivier Goffart
00cc8ec693 Add invoke_global_callback to the interpreter API 2021-08-27 13:36:48 +02:00
Olivier Goffart
0fad27e23e Add set_global_callback in the C++ interpreter API 2021-08-27 13:36:48 +02:00
Olivier Goffart
a294ab4200 Interpreter: add set_global_callback 2021-08-27 13:36:48 +02:00
Olivier Goffart
81688906f7 C++ Interpreter: add API to get/set global value 2021-08-27 13:36:48 +02:00
Olivier Goffart
a1803ec3a0 Interpreter: return a proper error from set_property instead of panic 2021-08-27 13:36:48 +02:00
Olivier Goffart
5f8cea5926 WIP interpreter API to access globals 2021-08-27 13:36:48 +02:00
Simon Hausmann
90765a97ce Further clean up item graphics cache handling
The RenderCache (slab and generation) is always in a refcell, so we can
just pass that through. This also eliminates the ItemGraphicsCache
wrapper in the GL backend.

This will allow more fine grained borrowing in the future.
2021-08-26 13:46:37 +02:00
Simon Hausmann
ea07d21560 Internal cleanup
Remove unnecessary wrapper function for the item graphics cache in the GL backend.
2021-08-26 13:31:15 +02:00
Olivier Goffart
b07d52cd23 Support aliases to callbacks in globals 2021-08-24 12:36:16 +02:00
Olivier Goffart
d5f4a796ad Fix interpreter panics when calling callback that weren't set 2021-08-24 11:37:47 +02:00
Simon Hausmann
cdca921469 Apply the default text color from the style for the color of Text and TextInput elements
We apply a default window background from the palette to all `Window`
elements, and likewise we need to apply the default text color to Text
elements to ensure a readable contrast.

This also fixes the default text color when using Qt/native style in
dark mode on macOS.
2021-08-23 15:03:18 +02:00
Olivier Goffart
b42c187ed1 Refactor the way the two-ways biding are represented internaly
Don't put them in a fake expression.
This simplifies a bit the expression handling, and will make
possible to fix analysis that needs a vew into the aliases
2021-08-20 18:26:36 +02:00
Olivier Goffart
5efa5bbf1d Added a commented out debug comment which I often use
It allows dumping the lowered object tree
2021-08-19 09:57:13 +02:00
Olivier Goffart
76ca2eed6b Fix intra-doc links
It should be ``[`...`]``, not `` `[...]` ``
2021-08-19 09:17:30 +02:00
Tobias Hunger
60575e7878 Janitor: Fix clippy::iter_skip_next 2021-08-18 00:24:51 +02:00
Tobias Hunger
91c78f61e9 Janitor: Fix clippy::needless_lifetimes 2021-08-18 00:24:51 +02:00
Tobias Hunger
d26707e41e Janitor: Fix clippy::bool_assert_comparison 2021-08-18 00:24:51 +02:00
Tobias Hunger
604f91681b Janitor: Fix clippy::needless_return 2021-08-18 00:24:51 +02:00
Tobias Hunger
a387c0f60f Janitor: Fix clippy::needless_borrow 2021-08-18 00:24:51 +02:00
Tobias Hunger
bbbf6460df Janitor: Fix clippy::redundant_closure 2021-08-18 00:24:51 +02:00
Tobias Hunger
aea4ecca99 Apply pre-commit hooks to all files 2021-08-17 22:38:16 +02:00
Olivier Goffart
a39dd6ac4f Interpreter API: preserve the dashes and underscore when listing properties 2021-08-17 18:47:41 +02:00
Olivier Goffart
a2966bdafa Fix warning generating internal docs
references to non-existing items
2021-08-16 18:27:35 +02:00
Olivier Goffart
a094ce7a2a Add a warning on the internal crates documentation that we don't follow semver 2021-08-16 18:26:33 +02:00
Olivier Goffart
073447a47d Fix the clippy error about comparing address of virtual table
Fix one vtable_address_comparisons clippy link.
It is fine to only compare the data pointer.
Two different model with the same data pointer in a Rc could only be obtained
with tricks like transmute because each model is allocated on a different Rc.
2021-08-16 10:53:28 +02:00
Olivier Goffart
5ac8010346 NativeButton: set the right icon style 2021-08-13 18:13:16 +02:00
Olivier Goffart
ec529f088b Fix the native style drawn from the GL backend
Femtovg wants RGBA, not ARGB
2021-08-13 18:12:18 +02:00
Simon Hausmann
386d61d648 Simplify Rust’s SharedVector::clear() when the vector is shared
Co-authored-by: Olivier Goffart <ogoffart@sixtyfps.io>
2021-08-12 13:41:08 +02:00
Simon Hausmann
d65af654d7 Changed Rust's SharedVector::clear() to not preserve capacity when shared 2021-08-12 13:41:08 +02:00
Simon Hausmann
856a049627 Implement SharedVector::clear() for Rust 2021-08-12 13:41:08 +02:00
Olivier Goffart
0b5e87b66b TextInput: Properly align the cursor and selection rect with different vertical alignment 2021-08-11 16:02:25 +02:00
Simon Hausmann
e5c2a4f996 Avoid hardcoding the rgb crate version for rustdoc builds 2021-08-11 08:46:55 +02:00
Simon Hausmann
ea663955bd Fix links to rgb crate in the sixtyfps.io hosted online docs
Use the external docs rustdoc feature to link to the rgb docs on docs.rs.
2021-08-10 22:30:37 +02:00
Olivier Goffart
4e254445d9 Fix interpreter test 2021-08-10 22:21:01 +02:00
Olivier Goffart
532827b646 Fix the C++ interpreter API compatibility after the change from _ to -
Property name with _ should still be supported by set_property/get_property
2021-08-10 22:21:01 +02:00
Olivier Goffart
c25538c982 Normalize identifiers to - instead of _
As a result
 - The error messages will now show the error with `-` instead of `_`
 - The LSP will auto-complete with -
 - The interpreter's list of properties will list the property with '-'
   (but we made the change so that set_property, get_property, and so on
   work also if passed a '-')
2021-08-10 22:21:01 +02:00
Simon Hausmann
e23dcc336f Fix doc build
Amends commit 0852a7661b
2021-08-10 16:53:37 +02:00
Simon Hausmann
0852a7661b Fix mutable slice API
* Change SharedVector::as_mut_slice() to SharedVector::make_mut_slice()
* SharedPixelBuffer::as_mut_slice and SharedPixelBuffer::make_mut_slice()
* SharedPixelBuffer::as_bytes_mut() to SharedPixelBuffer::make_mut_bytes()

This is consistent with Rc::make_mut() and is supposed to emphasize
that, unlike the usual as_* operations, it is not a free operation but
may involve work (detaching the data by cloning it).

Amends commit 7384ebdc32
2021-08-10 16:37:34 +02:00
Simon Hausmann
01c3347d19 Make fluent the new default style
It's not ugly :-)
2021-08-10 15:56:38 +02:00
Simon Hausmann
1fca971fa8 Rename RGB(A)8Pixel to Rgb(a)8Pixel
That's consistent casing with RgbaColor.
2021-08-10 15:56:01 +02:00