Simon Hausmann
3565023a15
Improve error handling in C++ Skia Renderer API
...
- Don't try to create a GLX context when we only have an XCB window handle,
XLib is required for that.
- Make it possible to create a NativeWindowHandle from Xlib data types.
Fixes #2978
2023-07-14 15:33:03 +02:00
Aurindam Jana
5a4a7fee63
Update royalty free license to 1.1 ( #2994 )
2023-07-10 10:12:11 +02:00
Simon Hausmann
6c5f6da473
janitor: the C++ window tests depends on the interpreter
2023-06-28 13:25:52 +02:00
Simon Hausmann
83ccd07a88
C++: Add slint::Window::scale_factor() getter ( #3004 )
...
Fixes #3003
2023-06-28 13:24:40 +02:00
Olivier Goffart
11dea135f7
Domain: slint-ui.com -> slint.dev
2023-06-16 10:55:08 +02:00
Tobias Hunger
04d1229685
Fix licnese information using xtask
2023-06-16 09:14:20 +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
29aea9a04c
Remove workaround for running tests on Linux
...
With the latest Corrosion update test binaries don’t depend on libslint_cpp.so with path anymore that contains a slash. Therefore rpath kicks in and this workaround should not be needed anymore.
Plus, this gives us test coverage for rpath.
2023-06-03 15:48:51 +02:00
Simon Hausmann
599d86e4e1
Simplify Skia renderer API
...
Remove the size argument from render().
2023-05-26 10:46:59 +02:00
Simon Hausmann
dd61890e23
Fix rendering of the Qt platform example with high-dpi
...
- Provide a C++ platform event for the scale factor change and send it
- Report the correct logical and physical sizes to Slint
2023-05-25 05:29:52 +02:00
Simon Hausmann
ef4074b041
Further simplify renderer storage in C++ platform API
...
Using an std::optional is even simpler and avoids a malloc.
2023-05-21 14:40:43 +02:00
Simon Hausmann
baba30370a
Simplify C++ WindowAdapter <> Renderer interface further
...
Instead of the WindowAdapter being a template for a concept, let's just
use an abstract base class for the renderer. Since we provide the
renderers, this simplifies two things:
- Ownership becomes clear to the user by creating the renderer instance
in a field of theirs.
- All template use goes away on the user side.
2023-05-21 14:40:43 +02:00
Simon Hausmann
fe4a434ce4
Remove the WindowAdapter from the renderer constructor
...
This allows disentangling the native window creation from the renderer
creation, which is rather ugly and complicated on the C++ side.
2023-05-21 14:40:43 +02:00
Olivier Goffart
dd5ef9993f
Platform: Add a Resized event and use that to convey the changes in size ( #2759 )
2023-05-21 12:12:30 +02:00
Simon Hausmann
3db5b97790
Fix the Qt native platform example
...
Fix regression introduced with commit d0cdc462c7
:
The window surface must exists before querying for the window handles.
2023-05-17 14:59:16 +02:00
Simon Hausmann
b27163954a
Fix build of experimental C++ platform API on Linux
2023-05-17 12:41:37 +02:00
Olivier Goffart
422bcc3a4a
C++: optimize SharedVector's iterator constructor
...
Don't detach for every element.
Closes #2737
2023-05-17 09:23:17 +02:00
Simon Hausmann
3340c31249
Clean up C++ experimental native window handle API
...
- Use explicit constructor functions
- Box the implementation
2023-05-11 10:42:09 +02:00
Simon Hausmann
d0cdc462c7
Simplify Skia Renderer
...
Allocate the renderer's surface type in the constructor.
This also changes the C++ API to match this, which complicates some code
a little bit.
2023-05-11 10:42:09 +02:00
Olivier Goffart
f9e5559eeb
C++ test with an example of using the Windows API directly to create a slint platform
2023-05-05 19:53:37 +02:00
Olivier Goffart
4076df928d
Fix panic when getting the line, column of diagnostic with invalid span
...
Introduced in cbc0c790a3
2023-04-19 12:35:17 +02:00
Olivier Goffart
ef7fb6422a
C++ Image API: introduce the SharedPixelBuffer
2023-03-20 17:22:56 +01:00
Olivier Goffart
be47c8464c
C++: implement creation of image from raw data
...
Issue #616
2023-03-20 17:22:56 +01:00
Olivier Goffart
81cb89d374
C++: fix including the generated file in several translation units
2023-02-17 16:42:40 +01:00
Olivier Goffart
e57627d535
Use the new syntax in more tests
...
That are failing otherwise as there would be a warning
2023-02-14 12:38:39 +01:00
Olivier Goffart
eaa9db4911
C++: use size_t everywhere as index in our models
...
cc #2024
2023-02-07 15:25:44 +01:00
Olivier Goffart
ae20ec59c8
Rename PointerEventButton::None to PointerEventButton::Other
...
And mark the enum non_exhaustive
closes #1903
2023-01-26 13:36:54 +01:00
Olivier Goffart
8967deef56
C++: add a manual test to test the platform API using Qt
2023-01-17 10:21:11 +01:00
Olivier Goffart
8d0cdc6ec2
C++: cmake: move the build instruction for the tests in the tests dir
2023-01-17 10:21:11 +01:00
Olivier Goffart
629a64ba89
C++ interpreter: do the renaming invoke_callback -> invoke
2023-01-02 23:55:47 +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
Simon Hausmann
e9db914fb1
Add is_visible to NodeJS and C++ Window types ( #1816 )
...
Amends commit 82278a5742
2022-11-04 16:24:24 +01:00
Simon Hausmann
6df60fa723
Add a C++ Sort Model class ( #1688 )
...
This allows automatically sorting a model.
2022-09-28 10:03:05 +02:00
Simon Hausmann
cfbdce735f
Add a C++ Map Model class ( #1687 )
...
* Add a C++ Map Model class
This matches the MapModel in the Rust API.
2022-09-27 16:03:56 +02:00
Simon Hausmann
56983482b9
Rename C++'s internal AbstractRepeaterView to ModelChangeListener
...
For consistency with the Rust model implementation.
2022-09-27 10:26:55 +02:00
Simon Hausmann
5b95466fa6
Add a C++ Filter Model class ( #1685 )
...
Add a C++ Filter Model class
This matches the FilterModel in the Rust API.
2022-09-27 10:24:47 +02:00
Simon Hausmann
98e1befd0d
Port the C++ generator and C++ API to the new window ownership model
...
One key difference to the Rust way is what `slint::Window` means. In
Rust that holds the `WindowInner` and `slint::Window` is only exposed as
`&slint::Window`. This is possible because the component owns the
`Rc<dyn PlatformWindow>`, which has a function to return the
`&slint::Window`.
In C++ `slint::Window` is also exposed as `slint::Window&` in the
`window()` getter, but there's no way to get a reference to a C++
wrapper for the Rust `&slint::Window` that the `PlatformWindow` trait
returns. Therefore in C++ `slint::Window` wraps `Rc<dyn
PlatformWindow>`.
2022-08-19 15:07:27 +02:00
Olivier Goffart
ca6dfc0cb5
Run clang-format over C++ files
2022-08-17 07:44:22 +02:00
Olivier Goffart
2aaefa8e0d
C++: Setting a value to a property having a binding should always clear the binding
...
... even if the old value holds the same value as the new value
This fixes test_cpp_bindings_two_way_priority_default
Also add a C++ unit test that tests the Property type specificaly
2022-05-09 09:30:01 +02:00
Simon Hausmann
9a8c5fed9f
Remove the ugly style
...
It's ugly ;-)
The combo box for the style is commented out for now, so that we can
easily re-add it in the future once we add a new style.
2022-04-13 10:35:42 +02:00
Olivier Goffart
350f0d0d6a
C++ interpreter API: add a Value::Value(int)
constructor ( #974 )
2022-02-21 14:00:51 +01: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
c273537990
Use logos from the logo folder over the vscode-extension icon
2022-02-04 14:28:10 +01:00
Simon Hausmann
fcf59f3793
Rename the C++ header files
2022-02-02 13:07:26 +01:00
Simon Hausmann
7d297da2fc
Rename the sixtyfps C++ namespaces
2022-02-02 12:11:27 +01:00
Olivier Goffart
03534039d6
Replace more .60 by .slint
...
Mainly an automated change with
git grep -O"sed -i 's/\.60/.slint/g'" -w "\.60"
and some manual checks
2022-02-02 10:12:31 +01:00
Olivier Goffart
0c0a783095
Rename all our .60 files to .slint
2022-02-02 10:05:45 +01:00
Olivier Goffart
f9c3e7a8de
C++ interpreter: first crash when invoking native callback
...
This was a regression following the move to the edition 2021.
The CallbackUserData was not capture in the lamda, its member were moved.
So the destructor was called right after it was set.
We must make sure we capture the whole CallbackUserData, so put the callback
inside of it. This also reduce a bit of code duplication at the same time.
Test the callback invokation with statefull lambda
2022-01-31 22:25:24 +01:00
Tobias Hunger
842f75e653
[reorg]: Move api/sixtyfps-rs/sixtyfps-* into api/rs
2022-01-31 18:24:33 +01:00