Simon Hausmann
c16253d29f
Use Property<LogicalLength> instead of Property<Coord>
...
This removes the special code for the generated property getters and
ensures type safety in the run-time library for property value setting.
In the Rust generated code we continue to do arithmetic on the scalar
values, that means we immediately extract the scalar, do arithmetic and
rely on the compiler to only allow compatible units.
Danger zone alert: In the interpreter Value::Number can now be converted
to LogicalLength as-is.
2022-10-24 12:49:37 +02:00
Simon Hausmann
38a55f87a4
Change internal MouseEvent to use logical points
2022-10-13 17:02:18 +02:00
Simon Hausmann
c11b4305c1
Change Item::geometry() to return a LogicalRect
2022-10-13 17:02:18 +02:00
Simon Hausmann
299325370d
Change generated accessor functions for Property<Coord> getters to return LogicalLength
2022-10-13 17:02:18 +02:00
Simon Hausmann
dc8bc5690b
Fix C++ build with changed KeyEvent
...
cbindgen does not support Option.
2022-10-07 11:16:36 +02:00
Simon Hausmann
8cba0622f5
Initial input method support for the winit backend and the FemtoVG/Skia renderers
...
Known caveats:
- winit doesn't forward mouse events to the IME, so clicking
with the mouse while composing results in funny effects such
as the pre-edit text following the cursor.
- With FemtoVG there's no text decoration support, thus no underlining
of the preedit area.
2022-10-07 11:16:36 +02:00
Simon Hausmann
c40b82c509
Add ItemRc to focus_event and key_event
...
This will be needed to compute the cursor rectangle in window coordinates, by
traversal of the parent chain.
2022-10-07 11:16:36 +02:00
Simon Hausmann
37a8c50c12
Simplify FontRequest
...
It doesn't have to be generic as mostly the frontend code creates it with logical lengths.
2022-09-30 23:31:32 +02:00
Simon Hausmann
57fe1b9c47
Replace manual calls to LogicalLength::new() for item fields with logical_XXX getters
2022-09-30 13:00:37 +02:00
Simon Hausmann
a52d633b59
Change FontRequest to be a generic over the length
...
The API uses a logical length for pixel sizes and letter spacing,
but the renderer will need the physical length eventually.
2022-09-30 13:00:37 +02:00
Simon Hausmann
1624a66ebc
Change the Renderer trait's text related functions to explicitly operate on logical lengths
2022-09-30 13:00:37 +02:00
Olivier Goffart
1afaab6cc1
TextInput: Change the mouse pointer to the Text cursor on hover
2022-09-16 19:14:49 +02:00
Simon Hausmann
7967bf1ab0
Replace the internal WindowHandleAccess
trait with a helper function on WindowInner
...
The reversal of ownership removes the need for the glue trait in the
publicly visible API.
2022-09-06 16:17:06 +02:00
Simon Hausmann
7e5de3d5d3
Remove use of euclid types and tags for logical/physical position and size in the public API
...
Instead provide our own types.
2022-09-02 11:05:53 +02:00
Tobias Hunger
10c3c9d16d
Api cleanup: Rename some remaining platform abstractions to platform
2022-08-29 16:53:47 +02:00
Tobias Hunger
1e6ffeaa0f
API cleanup: Rename PlatformWindow to WindowAdapter
2022-08-29 16:53:47 +02:00
Tobias Hunger
259457eff8
API cleanup: Fix typo in variable name
2022-08-29 13:26:36 +02:00
Olivier Goffart
7417422e3c
Make the PlatformAbstraction not Send using a EventLoopProxy trait
...
This changes the way the platform abstraction is initialized
2022-08-24 11:32:21 +02:00
Olivier Goffart
2e5ab86bea
Rename backend module to platform
...
and the Backend trait into PlatfromAbstraction trait
2022-08-23 19:39:49 +02:00
Simon Hausmann
1d436778c1
Remove the use of the PlatformWindowRc alias again
...
and use Rc<dyn PlatformWindow> instead. The alias has to stay with the ffi
functions though and the item vtable definitions,
because we don't have an Rc<> template in C++.
2022-08-19 15:07:27 +02:00
Simon Hausmann
fd026a3991
Change itemtable to use &PlatformWindowRc instead of &WindowInner
...
The former is cbindgen friendly, the latter is entirely Rust internal.
2022-08-19 15:07:27 +02:00
Simon Hausmann
af86f36157
Invert slint: 🪟 :WindowInner and PlatformWindow ownership
...
Previously: Window is an Rc<WindowInner>, which has an Rc<dyn
PLatformWindow> - and weak references the other way around.
Now: Rc<dyn PlatformWindow> is the root of window ownership. The impl
PlatformWindow has a slint::api::Window, which just holds a WindowInner.
This change is incomplete on a few levels, mainly that neither of the
code generators nor the interpreter is ported.
2022-08-19 15:07:27 +02:00
Simon Hausmann
b0b8d8d899
Change the Item vtable to take a &WindowInner instead of &WindowRc
...
... in preparation for storing an Rc<dyn PlatformWindow> in the component.
This won't compile with C++ yet.
2022-08-19 15:07:27 +02:00
Simon Hausmann
262c96af8c
Simplify receiver for WindowInner
...
Use &self consistently, instead of Rc<Self>, so that in the future we can
replace Window(Rc<WindowInner>) with Window(WindowInner).
2022-08-19 15:07:27 +02:00
Olivier Goffart
a62a5cbd19
Rename MouseEvent pos
to position
2022-08-17 18:28:12 +02:00
Olivier Goffart
61739dcb81
Remove the Mouse
prefix from enum value of the MouseEvent
enum
2022-08-17 18:28:12 +02:00
Simon Hausmann
81ca8f54c2
Add missing shortcuts for delete word forward and backwards ( #1483 )
...
* Add missing shortcuts for delete word forward and backwards
Fixes #1467
2022-08-16 08:24:56 +02:00
Simon Hausmann
369f347b29
Move the clipboard back from the Window to the Backend trait
...
Found a way to connect the clipboard to the wayland display through the winit event loop target.
2022-07-25 15:41:51 +02:00
Olivier Goffart
74c041010e
Move the text functions out of the Window, into the Renderer trait
2022-07-25 12:04:34 +02:00
Simon Hausmann
a5cd0a7173
Simplify window item interaction in the core library
...
Simlify the borrow_pin / downcast_pin dance a little by using VRcMapped.
2022-07-22 23:09:08 +02:00
Simon Hausmann
0ab71ec503
Perform resolution of font properties against the window defaults in the core library
...
This simplifies the renderer handling - the FontRequest arriving there
will always be resolved.
And this reduces the amount of property dependencies: If a Text elements
specifies a font-family, no dependency to the window's
default-font-family is created.
2022-07-22 23:09:08 +02:00
Simon Hausmann
f9791ea03a
Simplify text selection extraction code
2022-07-22 15:21:21 +02:00
Simon Hausmann
465da27270
janitor: simplify string slice creation
...
Co-authored-by: Olivier Goffart <olivier.goffart@slint-ui.com>
2022-07-22 15:21:21 +02:00
Simon Hausmann
c494861ddd
Change set_clipboard_set
to take a &str
instead of a String
...
Every backend will do something different with the string that needs to go into the clipboard.
Qt will convert it to a QString, copypasta to a String, in theory it could be written
directly to a socket.
Given that we don't know what the perfect representation on the backend side is, passing
a string slice avoids any immediate conversions.
2022-07-22 15:21:21 +02:00
Olivier Goffart
ac4f3e97ad
Change slint enum values to be PascalCase in rust
...
... while still being kebab-case in .slint
Some enums might become public API and we want to have them as
PascalCase to respect the rust conventions
2022-07-22 12:23:52 +02:00
Simon Hausmann
8a3ff06eb5
Move the clipboard handling from the Backend trait into PlatformWindow
...
Access to the clipboard implies access to the windowing system.
2022-07-22 08:10:44 +02:00
Simon Hausmann
565262f5c1
Fix formatting
...
Re-ran `cargo fmt`
2022-06-08 09:23:31 +02:00
pubg-hacks
aed71311ca
Add a read-only
propery to TextInput
, LineEdit
and TextEdit
2022-06-08 09:23:01 +02:00
Olivier Goffart
d2186593c0
Pass the ItemRc to each draw_function
...
So that it can be used as a key to the cache
2022-05-31 10:48:24 +02:00
Olivier Goffart
3a6f6d25e6
Fix wasm compilation
...
For some reason when compiling slint-lsp for wasm, rustc cannot infer this type
2022-05-30 11:07:29 +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
Olivier Goffart
1b91158b46
corelib: allow to use i32 for coordinate instead of f32
2022-04-11 17:46: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
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
7cffd928f2
add TextShortcut to text.rs and use it
2022-03-31 10:54:38 +02:00
Lukas Jung
a3cb8c1200
remove redundant setting of preferred_x_pos in mouse events
2022-03-28 10:07:07 +02:00
Lukas Jung
3818b09626
reset the preferred_x_pos in set_cursor_position()
2022-03-28 10:07:07 +02:00
Lukas Jung
b6171530ab
replace text_input_position_for_byte_offset with text_input_cursor_rect_for_byte_offset
2022-03-28 10:07:07 +02:00
Lukas Jung
8ca915d9bd
add comment to TextInput's preferred_x_pos
2022-03-23 13:23:58 +01:00