Olivier Goffart
f4dba7bcfd
Seal the Renderer trait
...
Because we need to make the Render trait public so one can re-implement
the WindowAdapter trait
2023-06-13 17:44:04 +02:00
Olivier Goffart
6341769cbd
WindowAdaptor: move a few function to the public trait
...
Note: the addition of MinimalSoftwareWindow::set_size is there because
it would be a breaking change for user who called set_size on the
MinimalSoftwareWindow while also using the WindowAdapter trait.
This was the case of a test.
The same problem theorically exist with set_position and position, but
is unlikely to be a problem because i don't think people would use the
position with a MinimalSoftwareWindow
The renderer() is now public as well. That's because I want to make sure
that the scealed trait don't have non-provided method
2023-06-13 17:44:04 +02:00
Simon Hausmann
d48e7192d8
Provide a more idiomatic API for accessible_descendents
...
With just the Qt accessibility support, this is not impactful.
But with accesskit it'll be useful to avoid the intermediate vector of ItemRcs
and map directly to a different data structure.
Otherwise, this is a trade-off between the stack allocation of the recursion and
instead allocating the stack of pending itemrs
on the heap.
2023-06-13 11:20:30 +02:00
Olivier Goffart
5f84cd5a90
Change the return type of WindowAdapterSealed::position to be an Option
2023-06-12 19:25:33 +02:00
Simon Hausmann
e663282c65
Fix support for High-DPI with Qt
...
Preserve the early backend initialization of commit
f0b047057b
2023-06-10 11:41:04 +02:00
Simon Hausmann
01b00d26eb
Rust: Allocate the window adapter lazily
...
This will be needed for embedding - to avoid creating two window
adapters - and it will be needed for the API to allow creating a
component from an existing window.
2023-06-10 11:41:04 +02:00
Florian Blasius
94a0327af6
Add primary flag toButton
( #2820 )
...
* Add default flag to button
* Code review feedback
* Update CHANGELOG.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update examples/gallery/ui/pages/controls_page.slint
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Code review feedback
---------
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2023-06-06 15:41:23 +02:00
Simon Hausmann
0f54b9599b
Add support for manually closing PopupWindows
...
This patch adds a `close()` function that can be called to close a popup
window, and a `close-to-click` boolean that can be set to false to
disable the default behavior.
2023-06-02 18:07:49 +02:00
Olivier Goffart
0c64312383
qt: fix rendering layers with a scale factor
2023-06-02 13:10:19 +02:00
Olivier Goffart
dafdc664bc
Qt: make sure to apply antialiasing also when creating layers
2023-06-02 12:30:15 +02:00
Simon Hausmann
3cf1b38a48
Add basic support for italic font face selection to Text
and TextInput
...
This is implemented for FemtoVG, Skia, and Qt.
2023-05-31 18:47:39 +02:00
Florian Blasius
b4472b9118
Added switch widget ( #2798 )
...
* Add material Switch
* Add fluent switch
* Add native Switch and cleanup
* Rebase fix
* Update internal/compiler/widgets/fluent-base/std-widgets-impl.slint
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Code review
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Code review
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update examples/gallery/ui/pages/controls_page.slint
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Code review tweak on gallery layout
* Code review tweak on gallery layout
---------
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2023-05-31 14:57:23 +02:00
Florian Blasius
9e267bcc94
Add ProgressIndicator widgets ( #2792 )
...
* Add material ProgressIndicator and documentation
* Add fluent ProgressIndicator
* Add native ProgressIndicator
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update docs/language/src/builtins/widgets.md
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Code review
* Update internal/compiler/widgets/fluent-base/std-widgets-base.slint
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
* Update changelog
---------
Co-authored-by: Simon Hausmann <simon.hausmann@slint-ui.com>
2023-05-31 09:57:12 +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
Olivier Goffart
a68df6eb70
WindowAdaptor: change the 3 ime call into one single ime request enum ( #2747 )
2023-05-17 17:50:19 +02:00
Olivier Goffart
e3ecb5979c
Simplify the way the window properties are applied
2023-05-17 10:22:54 +02:00
Simon Hausmann
8a2b40ca7d
Simplify core Renderer trait for easier implementation
...
Make text_input_byte_offset_for_position and text_input_cursor_rect_for_byte_offset
low-level in the API, where the implementation becomes easier. Two
helper functions in TextInput in turn collect the necessary parameters
and thus also reduce the amount of duplicated code.
This also decouples the renderer further from the window.
2023-05-17 09:01:02 +02:00
Simon Hausmann
7f45d180a9
Clean up internal RenderingMetricsCollector API
...
Don't require passing a dyn WindowAdapter. This was only used for
calling request_redraw(), which a proper window adapter should do anyway
if has_active_animations() is true.
2023-05-17 09:01:02 +02:00
Olivier Goffart
66342f67e3
qt: be consistant in rejecting items smaller than one pixel bix
2023-05-05 19:53:57 +02:00
Olivier Goffart
37e70c302e
Refactoring: Pass the size to to the render function
...
So that we don't need to query the geometry multiple time, and this pave
the way to not have the geometry in the items
Part of #1932
As a drive by, fix the clipping of the Path element which incorrectly
offseted the clip by (x,y).
Similar fixes happen in the Clip element in some renderer, but that
didn't have effect because x and y are always 0 for the Clip element
2023-05-05 19:53:57 +02:00
Olivier Goffart
9e60eceb76
Qt: Fix translucent windows
2023-05-03 19:29:51 +02:00
Simon Hausmann
85da840603
Fold TextVisualRepresentation::apply_password_character_substitution into the TextInput's visual_representation() function
...
That way the call doesn't need to be duplicated on all call sites.
2023-04-26 17:48:46 +02:00
Simon Hausmann
baba08baeb
Move the default password character into corelib
...
And only let Qt customize it
2023-04-26 17:48:46 +02:00
Simon Hausmann
d757456c5a
Centralize all password character substitution in corelib
...
Use TextVisualRepresentation also in text_input_byte_offset_for_position
2023-04-26 17:48:46 +02:00
Simon Hausmann
fd9a2638b7
Use the common TextInputVisualization::apply_password_character_substitution also for the Qt renderer
2023-04-26 17:48:46 +02:00
ogoffart
dfd5fc38b3
Bump version number to 1.0.3
2023-04-26 14:04:08 +00:00
ogoffart
53cce5bf44
Bump version number to 1.0.2
2023-04-26 11:33:16 +02:00
ogoffart
bd63218412
Bump version number to 1.0.1
2023-04-18 14:56:40 +00:00
Simon Hausmann
f9e561e21f
Prospective fix for panic when running material style under Wayland/Gnome
...
When for example only a maximum height is set, but no maximum width,
avoid passing -1 or 0 to winit for the width. Instead use the same large
value was for Qt.
cc #2562
2023-04-18 08:57:01 +02:00
Cole Lawrence
af30896e4a
Add always-on-top
property to Window element
2023-04-15 13:58:47 +02:00
Simon Hausmann
81d3b4a930
Qt: Fix missing support for horizontal alignment in TextInput
...
Apply horizontal alignment to the text lines created by QTextLayout.
Fixes #2524
2023-04-11 14:21:01 +02:00
Simon Hausmann
d6c9ddd27a
Qt: Avoid setting 0x0 as maximum size on a window
...
Centralize the code to ensure that we only set a maximum size if > 0 into corelib.
2023-03-30 08:43:48 +02:00
Simon Hausmann
2872c13fff
Fix using the software renderer with the native style
...
Provide access to the window inner also from within the software
renderer, so that the native style rendering can query the active state.
Fixes #2404
2023-03-24 16:29:21 +01:00
Simon Hausmann
8ffb5131c7
Introduce error handling in the FemtoVG and Skia renderers ( #2402 )
...
Avoid unwrap() and expect() and instead propagate errors all the way
down to run_event_loop(), show(), and hide() in the Slint AIP.
2023-03-24 14:18:11 +01:00
Tobias Hunger
28c35279e4
accessibility: Do not freeze trying to find items at position
...
Fix the code to always return a direct child widget or nullptr. The
documentation says to return a direct or indirect child, but the
implementation expects a direct child.
Fixes : #2195
2023-03-20 15:29:40 +01:00
Tobias Hunger
3ac01c3f07
clippy: Fix clippy warnings
2023-03-09 09:35:29 +01:00
Olivier Goffart
ca7b2e0bb8
Harmonize style properties
2023-02-10 16:49:25 +01:00
Olivier Goffart
6889dfa5f5
Rust: Make new(), run() and show() report errors from the backend
...
Fixes #2198
2023-02-10 05:00:03 +01:00
ogoffart
e7f48512ee
Bump version number to 1.0.0
2023-02-03 11:07:15 +01:00
Olivier Goffart
8e0a8ca5cf
Qt: use the double click interval from the platform
2023-02-03 08:48:49 +01:00
Olivier Goffart
f34b1bda2e
Add primary keyboard support on unix (selection copy, middle click paste)
...
Closes #2146
2023-01-31 16:39:22 +01:00
Simon Hausmann
32d2ba70ca
Change WindowEvent::KeyPressed/Released to use a SharedString instead of a char ( #2148 )
...
Also, `WindowEvent` is not `Copy` anymore.
Closes #1749
2023-01-31 15:44:54 +01:00
Florian Blasius
d84de623b4
TextEdit select text with double and dribble click ( #2088 )
...
* Select word in `TextEdit` by double click
* Select paragraph in `TextEdit` by dribble click
2023-01-31 15:04:19 +01:00
Simon Hausmann
8c807cb1da
Remove slint::Image::stride() ( #2147 )
...
cc #2138
2023-01-30 13:59:31 +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
0aeb4d2aec
Qt: fix clipping of itemview when not using the Qt backend
...
In that case, the clip is null which means no clip (as opposed as "clip
everything")
2023-01-23 16:26:49 +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
Simon Hausmann
5ff0278185
Simplify path event extraction
...
Return the path events for rendering as an Option, so that if the path is empty,
we simply return.
This avoids a double property dependency in the (likely) event the path is not empty.
2023-01-21 13:10:19 +01:00
Simon Hausmann
b6b2a0e555
Fix rendering of #1988 's testcase with Qt
...
Don't rely on the pen not being set when drawing the background of a rectangle
with transparent border. On my machine with the test case the pen has some other
color from previous drawing (or Qt internal?).
2023-01-18 18:05:53 +01:00