Commit graph

5155 commits

Author SHA1 Message Date
ogoffart
e54e03148f Bump version number to 0.1.2 2021-09-04 10:08:51 +02:00
Olivier Goffart
a28bc7c629 Refactor the way the builtin files are loaded
So that we can share some code accross styles
2021-09-03 22:31:54 +02:00
Simon Hausmann
c10835311d Add a Changelog entry 2021-09-03 14:33:55 +02:00
Simon Hausmann
cca2a18edb Fix C++ build with the interpreter disabled 2021-09-03 14:33:55 +02:00
Simon Hausmann
5a81976f3b Allow selecting features in the CMake integration
Provide the same features as in the Rust API crate, as CMake
options.
2021-09-03 14:33:55 +02:00
Olivier Goffart
4f1eacd6d8 LineEdit is now able to scroll to keep the cursor visible 2021-09-02 17:20:44 +02:00
Olivier Goffart
50ca8a924c Split qt_widgets.rs in several modules
It was the bigger rust file in the repository
2021-09-02 12:18:21 +02:00
Simon Hausmann
5ae6d308be Minor cleanup in Window::draw_contents
The component rendering closure can be FnOnce, it doesn't have to be
FnMut.
2021-09-02 12:16:35 +02:00
Simon Hausmann
baa55e8824 Internal cleanup: Remove canvas dependency from text layout code
We can use the non-canvas bound TextContext and need the canvas only
in the closure when painting.
2021-09-02 11:09:32 +02:00
Simon Hausmann
040775173b Clean up GL backend code
Remove GLRenderer and GLRendererData. Most of the fields fold nicely
into the MappedWindow.
2021-09-02 09:48:04 +02:00
Olivier Goffart
092d5d551f C++: add blocking_invoke_from_event_loop
A blocking version of invoke_from_event_loop
2021-09-01 23:19:13 +02:00
Simon Hausmann
ce62cce266 Internal cleanup: Simplify some Option handling
Replace

   if let Some(Some(Foo)) = bar.map(|some_weak| weak.upgrade())

with

   if let Some(Foo) = bar.and_then(|some_weak| weak.upgrade())
2021-09-01 18:29:32 +02:00
Simon Hausmann
8114e187b0 Unify mouse input event and draw handling between Qt and the GL backend
The unification reduces back-end specific fields for the window and
allows making all the property trackers in the run-time window private.
2021-09-01 18:20:23 +02:00
Simon Hausmann
bcbed23392 Internal cleanup: simplify GraphicsWindow::draw a little bit
Similar to the other window item properties and also similar to how the
Qt backend handles this, fetch the background color in
apply_window_properties().
2021-09-01 18:20:23 +02:00
Simon Hausmann
5dff29ef67 Internal cleanup: Centralize code to determine default font properties
If the root item is a Window, then we use the default-font-* properties as the basis
for all unspecified font properties in text rendering.

This patch centralizes the code for retrieving that in the runtime window.

If this becomes a performance bottleneck, then we could cache it in a
box-pinned property in the run-time window.
2021-09-01 18:20:23 +02:00
Simon Hausmann
549fcb049b Internal cleanup: Move the scale factor property into the shared runtime Window 2021-09-01 18:20:23 +02:00
Simon Hausmann
60082b84b0 GL backend: remove unnecessary window scale factor refresh call
When the window is mapped, the scale factor is brought up-to-date. Only
after that we can receive a resize event or a window scale factor
changed event.
2021-09-01 18:20:23 +02:00
Simon Hausmann
2e8378801d GL backend: internal cleanups
Remove the indirection between the GraphicsWindow and the femtovg renderer.
2021-09-01 18:20:23 +02:00
Olivier Goffart
6e12b4504a A few fixup for the multi-line edit
- Have the cursor at the right place when clicking on end of line
 - make sure not to render new lines if there are some when in single-line mode
 - Enter should make a new line
2021-09-01 16:52:37 +02:00
Olivier Goffart
b2392c25c7 Basic support for Multi-line TextInput 2021-09-01 16:52:37 +02:00
Simon Hausmann
ffc2c81bd0 Fix code comment about names of exported global 2021-08-31 17:09:11 +02:00
Simon Hausmann
ee8e5699e5 Clean up global alias handling
Remove the internal name again and pick the first exported one when
assigning ids. This avoids internal names showing up in code completion
or the internal types leaking into generated code.
2021-08-31 17:09:11 +02:00
Simon Hausmann
0d19e2d9b9 Add support for global aliases
When exporting an global multiple times under different names, make sure
that they alias in the generated code.

As a consequence, the compiler maintains the original unique name and in
Rust and C++ makes only the exported names public. In the interpreter
the internal name is theoretically still accessible from the outside.
2021-08-31 17:09:11 +02:00
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
Simon Hausmann
ab522eb147 Produce errors when exporting a name multiple times 2021-08-31 10:19:50 +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
c3ca796b1d Fix missing compiler warning about duplicated ids when using id more than twice
Don't remove the id of a duplicate from the seen set, as it may appear
again.
2021-08-30 20:35:31 +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
Olivier Goffart
e22e870ce6 Adjustment to the rust documentation with regards to global singetons 2021-08-27 18:00:44 +02:00
Simon Hausmann
54182ff54b Add a section to the C++ intepreter intro about global singletons
Also minor fixes to the generated C++ global singleton docs.
2021-08-27 17:14:57 +02:00
Simon Hausmann
3212cda271 Add a section to the C++ docs about accessing global singletons 2021-08-27 17:08:57 +02:00
Simon Hausmann
8de3075270 C++ docs: rework the entry points
Move the sixtyfps::namespace entry into a dedicated C++ integration overview
page. Also duplicate and specialize the instantiation and model bits, which
differ between the compiled code and the interpreter.

Finally, fix the generated C++ docs to not mention that there's a constructor,
instead we generate a constructor function.
2021-08-27 16:56:36 +02:00
Olivier Goffart
07e2532c0b Printer Demo: rename PrinterQueue component
PrinterQueue -> PrineterQueueView
PrinterQueueData -> PrinterQueue
2021-08-27 16:55:07 +02:00
Olivier Goffart
fefc7f31d0 Port the printer demo to use exported globals 2021-08-27 16:55: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
499f75455e Re-order the side bar in the C++ docs
The new order is

    1. Getting Started
    2. C++ / .60 Integration
    3. Reference

The second section will host a broader introduction that is currently hiding
in the namespace.
2021-08-27 14:44:33 +02:00
Simon Hausmann
6d05959c93 Complete the generated C++ code docs to mention globals
But there's an entire section still missing with an example.
2021-08-27 14:28:33 +02:00
Olivier Goffart
fe94f93755 Test the use of global callback from rust and C++ 2021-08-27 13:56:54 +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
Simon Hausmann
26a63fcf22 Change example docs of global exports to use a re-export
That's the more typical use-case to also deal with name spaces, where
this is done at import time.

The modified test case tries to ensure that this also works.
2021-08-27 13:38:57 +02:00
Simon Hausmann
0bb586e70f Minor documentation fixes for the globals access API 2021-08-27 13:36:48 +02:00
Simon Hausmann
3206d6fcfc Minor cleanup
In the compiler we can set the mark that a global component is meant for
export earlier.
2021-08-27 13:36:48 +02:00
Olivier Goffart
c049cdf1c3 Changelog entry for the changes in globals 2021-08-27 13:36:48 +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
Simon Hausmann
c7ef3e0fb9 Link from the rust global docs to the singleton langref 2021-08-27 13:36:48 +02:00