Commit graph

1937 commits

Author SHA1 Message Date
Tobias Hunger
22c65707b2 Janitor: Fix clippy::len_zero 2021-08-04 22:50:35 +02:00
Tobias Hunger
60ef093aaa Janitor: Fix clippy::len_without_is_empty 2021-08-04 22:50:35 +02:00
Tobias Hunger
3c9451f94c Janitor: Fix clippy::needless_question_mark 2021-08-04 22:50:35 +02:00
Tobias Hunger
04a2df540a Janitor: Fix clippy::upper_case_acronyms 2021-08-04 22:50:35 +02:00
Tobias Hunger
57ed130380 Janitor: Fix clippy::from_over_into 2021-08-04 22:50:35 +02:00
Simon Hausmann
601e93b9f5 Style fixup: Avoid a huge match expression
Instead merging the match with a variable declared later down is easier to read.
2021-08-03 16:47:23 +02:00
Simon Hausmann
25fac2bcd5 GL backend: Avoid run-time opengl errors with clipped zero width or height rectangles
If a Rectangle has a border-radius and clipping, we use an FBO to render
the children and then use femtovg's stencil clipping. If the Rectangle
has a zero width or height, we would end up trying to create a texture
with such dimensions, which produces run-time opengl errors.

We can detect this situation and avoid it early on. The same might happen for shadows.

Fixes #377
2021-08-03 16:47:23 +02:00
Simon Hausmann
faedf2d5a9 cSpell: silence qt_window.rs 2021-08-03 16:18:43 +02:00
Olivier Goffart
1dab4c35d9 For embedded data, store the extension in the binary
This is usefull for the detection of SVG
2021-08-03 16:15:31 +02:00
Simon Hausmann
3374a214f1 cSpell: silence graphics_window.rs 2021-08-03 16:14:40 +02:00
Simon Hausmann
bd556e03be minor cleanup: add transparent marker
to make the reinterpret casting between the inner and outer types a bit ... safer
2021-08-03 10:32:04 +02:00
Simon Hausmann
9e4b067f38 Provide sixtyfps::Window by reference in the C++ interpreter API 2021-08-03 10:32:04 +02:00
Simon Hausmann
29f5853332 Provide sixtyfps::Window by reference in the Rust API
This also removes Clone from the Window again, to avoid having to face
the question: Does cloning a window duplicate it on the screen?
2021-08-03 10:32:04 +02:00
Simon Hausmann
d87cfb4b1e internal cleanup
Move the WindowHandleAccess impl for api::Window into the super module
so that we don't need the #[doc(hidden)] attribute.
2021-08-03 10:32:04 +02:00
Simon Hausmann
66891a299c Start a new sixtyfps::Window API for Rust, C++, the interpreters and JS
The generated component now provides access to a Window type
via the window() accessor function.

This is part of #333
2021-08-03 10:32:04 +02:00
Simon Hausmann
d867d7b58a Fix rendering of text selection with combining characters with the GL backend
When the text selection end follows right after a grapheme that uses less
glyphs than characters, then there may not be a matching glyph with the byte
index, therefore we wouldn't set the selection_end_x and draw incorrectly.
Take the visual tail of the last glyph then.
2021-08-01 09:35:19 +02:00
Simon Hausmann
17b3fbc7cf Fix cursor navigation when using combining characters
The cursor navigation left/right (and subsequently text selection) needs
to respect grapheme boundaries. Since we already depend on the
unicode-segmentation crate through femtovg, we might as well use the
functionality for determining grapheme boundaries from there.

The only place where the cursor navigation is allowed to break that is
when using backspace, as that allows the user to break glyph clusters.
2021-08-01 09:35:19 +02:00
Simon Hausmann
35541cffd9 Fix cursor rendering with the Qt backend for non-ascii text
We calculate the cursor position as byte offset in the utf-8 encoded string,
while Qt expects an index in the utf-16 encoded QString.
When those differ, the cursor is rendered at the wrong location.

Fixes #363
2021-08-01 09:34:50 +02:00
Olivier Goffart
90cdb5ab5d Add a changed callback to Slider
Closes #125
2021-07-31 15:14:03 +02:00
Tobias Hunger
f1f0182826 Janitor: Fix clippy::needless_return 2021-07-30 09:27:48 +02:00
Tobias Hunger
34d461cb2b Janitor: Fix clippy::clone_on_copy 2021-07-30 09:27:48 +02:00
Olivier Goffart
6a32a8b37a Don't error on empty documents 2021-07-29 17:40:20 +02:00
Olivier Goffart
bd52f4d444 Allow the clip property to be a dynamic property 2021-07-29 15:02:25 +02:00
Olivier Goffart
43e07320a5 Fix comments and naming found in review in #355 2021-07-28 16:57:09 +02:00
Olivier Goffart
7821926002 Rust: defaults to the native style when Qt is available
This requires some gymnastics to get right as the information
need to be passed to the compiler despite having no direct dependency
between the compiler and the runtime or backends.
So use a file in the build directory to tell the default style

cc: #83
2021-07-28 16:57:09 +02:00
Simon Hausmann
3d1c71b762 Fix formatting (cargo fmt)
Amends f75745ea30
2021-07-27 19:37:06 +02:00
Simon Hausmann
aacb47dfaf qt native button: Apply suggestions from code review
Add the icon type explicitly to make it easier to do "eye" based type matching with the cpp! macro.

Co-authored-by: Olivier Goffart <ogoffart@sixtyfps.io>
2021-07-27 19:37:06 +02:00
Simon Hausmann
14c6819791 Add support for icons in the Button widget
The icon in the gallery example was generated via https://emoji.aranja.com
2021-07-27 19:37:06 +02:00
Simon Hausmann
dbdd8d8cb3 cspell: silence in fonts.rs 2021-07-26 14:37:40 +02:00
Simon Hausmann
40e7d45e2d Tweak manual font fallbacks on Linux
Add the noto color emoji font that's default on Ubuntu at least

(until we can use fontconfig proper)
2021-07-26 14:37:24 +02:00
Olivier Goffart
07bf0974d7 C++: Expose conversion betwen Value and Image
Closes #350
2021-07-26 14:12:32 +02:00
Tobias Hunger
d34fd5add2 Fix float comparison in qt_window.rs
Amends 02bdcbf6ff
2021-07-24 22:53:52 +02:00
Olivier Goffart
ba32777cab Refactoring: move the animation in the PropertyBinding struct
Since they always belong together.

This will help for issue #193
2021-07-23 15:25:53 +02:00
Tobias Hunger
2cdc5848a2 Janitor: Replace float comparison dance with approx_eq from euclid
Sixtyfps uses euclid already, so let's use euclid for float comparisons
as well.

I changed the code to decide whether a number is a positive integer to
make do without a comparison along the way.
2021-07-23 13:48:52 +02:00
Tobias Hunger
27b42687fa Janitor: Fix clippy::redundant_closure 2021-07-23 13:48:52 +02:00
Tobias Hunger
9539a53480 Janitor: Fix clippy::redundant_clone 2021-07-23 13:48:52 +02:00
Tobias Hunger
1c21ba89ee Janitor: Fix clippy::if_let_some_result 2021-07-23 13:48:52 +02:00
Tobias Hunger
97be634b9b Janitor: Fix clippy::match_like_matches_macro 2021-07-23 13:48:52 +02:00
Tobias Hunger
d64291245e Janitor: Fix clippy::len_zero 2021-07-23 13:48:52 +02:00
Tobias Hunger
8d83ce88d7 Janitor: Fix clippy::excessive_precision 2021-07-23 13:48:52 +02:00
Tobias Hunger
3e0534afea Janitor: Fix clippy::needless_lifetimes 2021-07-23 13:48:52 +02:00
Tobias Hunger
b61dcc42b9 Janitor: Fix clippy::double_parens 2021-07-23 13:48:52 +02:00
Tobias Hunger
2a6560b073 Janitor: Remove unecessary cast
Prefer a u8 literal over an i32 literal that is then cast to a u8
2021-07-23 13:48:52 +02:00
Tobias Hunger
67586b12e4 Janitor: Do float comparison dance in qt_window.rs 2021-07-23 13:48:52 +02:00
Olivier Goffart
da6897f4c6 native style: Fix clipping in NativeListView
The Style is overriding the clip, so we need to set the system clip
to make sure that clips are combined.
2021-07-22 22:29:52 +02:00
Olivier Goffart
6aa6dec9b4 Small simplification on the usages of ListView
Now that the height computation is done properly
2021-07-22 17:29:53 +02:00
Olivier Goffart
7e0136b11d Fix panic when exiting the sixtyfps-viewer when a TextInput is focused
The viewer holds the component in a thread_local, so when it is being
dropped, thread_locals are already destroyed.
When an TexInput is focused, it holds a Timer for the blinking cursor,
so when that Timer gets drop'ed, we must not access the thread_local
2021-07-22 14:38:58 +02:00
Simon Hausmann
eaddbe664e internal cleanup: Rename ComponentWindow to WindowRc
That's all it is nowadays, it's a wrapper around Rc<Window>. It's not an
alias because we need to also "wrap" it to C++ via cbindgen, but that's
about it.
2021-07-21 20:33:02 +02:00
Tobias Hunger
57389c1731 Janitor: Fix remaining instance of clippy::redundant_clone 2021-07-21 19:44:57 +02:00
Tobias Hunger
aeebbb1d96 Janitor: Fix remaining clippy::option_map_unit_fn 2021-07-21 19:44:57 +02:00