Olivier Goffart
abe24e2e9e
C++ two way bindings
2020-09-25 15:21:37 +02:00
Simon Hausmann
e5dfb3a4c0
Implement basic focus handling
...
Similar to the mouse_grabber, we use a VisitChildrenResult field to
track the focus item within a component. Unlike the mouse grabber
however, it is set/cleared using dedicated focus events.
The key event now routes the key event directly to the focus item.
The focus can be requested via set_focus_item on a window, which the
TextItem does.
2020-09-25 10:43:47 +02:00
Simon Hausmann
aa5babffe1
Prepare for key event delivery to a specific focus item
...
Begin by routing key events through the component. In the future that
will direct the event to the focus item.
2020-09-25 10:06:15 +02:00
Simon Hausmann
2b76e9277a
Prepare for allowing an item mouse handler to request focus
...
In the future the TextInput will request focus on mouse click,for
example.
Pass the outer-most component through to ItemVTable's input_event.
For the purpose of disambiguating this component from any nested
component instantiated by a repeater or so, it's called the
app_component.
The ComponentVTable takes a reference to a ComponentRefPin instead of a
ComponentRefPin by value, as the vtable macro gets confused otherwise
and thinks it's a self argument.
2020-09-25 10:06:15 +02:00
Olivier Goffart
315fd7a881
Start doing a ScrollArea element
...
Unfortunately something is wrong with the Qt style, it looks like the Qt style
does not respect the rect given for the sub components
Also Input is not handled yet.
2020-09-22 20:05:41 +02:00
Simon Hausmann
93a08c5207
Add a LineEdit widget to the ugly and native style
2020-09-18 18:54:37 +02:00
Simon Hausmann
2da84fee46
Add a boilerplate TextInput item
2020-09-18 16:34:24 +02:00
Simon Hausmann
7053aee0c8
Pass the ComponentWindow to ItemVTable::input_event
2020-09-18 16:18:48 +02:00
Olivier Goffart
cbd8c6aefc
Documentation for the newly added struct type
2020-09-17 13:14:01 +02:00
Simon Hausmann
3e8e357dec
Reformat sixtyfps_properties.h
...
Further changes coming up
2020-09-16 16:56:54 +02:00
Simon Hausmann
2150d1784e
Prospective MSVC build fix
...
Use the std type instead of uint, that seems to be not known to MSVC without additional includes?
2020-09-16 13:56:28 +02:00
Simon Hausmann
ad77896312
Change the way Text's default color is implemented
...
Instead of via an item constructor, implement support for default
bindings in the compiler.
2020-09-16 13:41:18 +02:00
Simon Hausmann
b99e4817cd
Reformat the file
...
(to reduce diff in further changes)
2020-09-16 08:56:29 +02:00
Simon Hausmann
625cb6c6b8
Add a constructor to Text and let the color default to black
...
We really shouldn't require specifying a color for every Text {} element just in order
to see *some* text.
For Rectangle OTOH transparent is a good default (and thus for Color), hence
this change just to Text.
Right now the constructor bit is also a bit repetitive, this could
perhaps be folded into BuiltinItem to generate the ffi, default impl and
forward to an init function if it exists.
2020-09-16 08:20:13 +02:00
Olivier Goffart
4da5f5eee6
C++: Make a model based on a SharedArray like in C++
...
And make the SharedArray editable
2020-09-15 15:01:33 +02:00
Olivier Goffart
2ae4f1757b
Rename model method to match the rust API
2020-09-15 14:10:07 +02:00
Olivier Goffart
4a0a65f113
C++ model that can be changed
2020-09-15 12:18:36 +02:00
Olivier Goffart
b41e80b7db
C++ Tests add an assert_eq macro
...
More consistency with rusts tests
2020-09-15 10:19:22 +02:00
Simon Hausmann
0dc81895ed
Exclude SharedArray::SharedArrayHeader from the C++ docs
2020-09-11 18:35:27 +02:00
Simon Hausmann
29a9bd05eb
Remove Pin, etc. typedefs from C++ docs
...
Exclude everything from vtable.h, and apply the same logic for sixtyfps::testing.
2020-09-11 18:16:17 +02:00
Simon Hausmann
dd6c931237
Hide sixtyfps::testing* from the C++ docs
2020-09-11 18:12:34 +02:00
Simon Hausmann
a3f917652a
Exclude VOffset and VRefMut from the C++ docs
2020-09-11 18:11:56 +02:00
Simon Hausmann
831cf902fe
C++: Add constructors to and from ARGBColor/Color
2020-09-11 18:08:37 +02:00
Simon Hausmann
520df89e2c
Add the same (a)rgb_(uint8/float) functions in C++ Color as in Rust
2020-09-11 17:55:52 +02:00
Simon Hausmann
8a70651038
Provide docs for C++ SharedString
2020-09-09 08:34:52 +02:00
Simon Hausmann
25584317e8
Implement ARGBColor<T> for the C++ API
...
As discussed in the last API review.
2020-09-08 22:52:40 +02:00
Simon Hausmann
52b19606d1
Provide red/green/blue/alpha getters for Rust and C++ Color
...
And fix up the C++ class docs.
2020-09-08 22:32:15 +02:00
Simon Hausmann
09142beac4
Make C++'s Color consistent with Rust's Color
...
sixtyfps::Color shall have the same minimal API by providing from_argb_encoded and as_argb_encoded.
2020-09-08 22:19:58 +02:00
Simon Hausmann
02b3bce6dc
Reformat sixtyfps_color.h
2020-09-08 22:13:17 +02:00
Olivier Goffart
a6504ee61b
Start implementing some code that passes argument to functions and signals
2020-09-08 14:37:44 +02:00
Olivier Goffart
a192ffe283
Make the C++ Signal class templated on the arguments
2020-09-08 13:11:32 +02:00
Olivier Goffart
16f5cf42e3
Actually compute the layout of elements within a for loop
2020-09-07 14:04:14 +02:00
Olivier Goffart
3f45b545ff
C++: Don't return model data by const value
...
Prevetn warning
2020-09-07 12:50:08 +02:00
Olivier Goffart
72df23637d
CMake: on windows need to add the IMPORTED_IMPLIB
2020-09-06 14:54:05 +02:00
Olivier Goffart
f6c8ea0f20
Make the Model/Repeater type safe in C++
2020-09-04 19:02:56 +02:00
Olivier Goffart
4c07fbfb3d
Fix destructor of SharedArray in C++
...
We should of course only free the memory if the refcount reaches 0
2020-09-04 16:21:47 +02:00
Olivier Goffart
f5aeb9ba60
Only the computation of the model needs to be done in the evaluation scope for it
...
Otherwise any change in any of the properties of the delegate will cause
the model to be reset.
2020-09-04 15:37:38 +02:00
Olivier Goffart
c8fa3354be
Change the implementation of SharedArray so that it can destruct its contents
2020-09-04 15:37:38 +02:00
Simon Hausmann
6278a7168a
Include the example preview also in the C++ documentation
...
The template system used by Sphinx makes this rather easy, just the selector for the
HTML element to inject to needs to be extended.
2020-09-04 11:44:08 +02:00
Simon Hausmann
f4958abba5
Simplify C++ docs build directory setup
...
Symlink the _static directory instead.
2020-09-04 11:30:51 +02:00
Olivier Goffart
9fbb40d91b
Start working on a debug statement
2020-09-03 19:10:07 +02:00
Simon Hausmann
dcb923c1df
Simplify markdown links to C++/Rust docs
...
and also offer them conveniently in the primary readme.
2020-09-03 17:35:07 +02:00
Simon Hausmann
fab3d9355d
Remove ItemVisitorRefMut and ComponentRef from the public C++ API
...
It's only for internal use and just typedefs to private types anyway.
2020-09-03 15:44:36 +02:00
Simon Hausmann
3eef23f93c
Add widgets to the C++ docs as well
2020-09-03 12:05:50 +02:00
Simon Hausmann
834fa12206
Add the builtin elements to the C++ docs
2020-09-03 09:36:30 +02:00
Simon Hausmann
82ecae8ba6
Move the .60 <> C++ type mappings into a separate section
...
So the README.md remains usable also on Github.
2020-09-03 09:30:46 +02:00
Simon Hausmann
dc137fa0a6
Add a .60 <> C++ type mapping table to the C++ docs
2020-09-02 17:06:41 +02:00
Simon Hausmann
fd9aea97eb
Fix markdown table rendering in C++ docs
...
This reverts commit 0bb904e10a
and
re-introduces the markdown table support extension. The resulting table
by default is too wide in the "responsive" read-the-docs theme, but with
a CSS tweak it becomes readable.
Markdown tables are much easier to deal with and this way we can also
include references within the tables.
2020-09-02 17:06:41 +02:00
Olivier Goffart
1cf6d81169
Impletment GroupBox with the Qt style
2020-09-02 17:05:28 +02:00
Simon Hausmann
65ff715fbc
Make C++ documentation generation an xtask
...
Tear it out of the CMakeLists.txt and instead run it via
cargo xtask cppdocs
This allows the build_and_test step in the CI to only run cmake for the
library/header related bits and the docs_and_demos step to only generate
docs and not require a full host build of the library (as cargo xtask
cmake would otherwise do).
2020-09-01 17:03:55 +02:00