-
Notifications
You must be signed in to change notification settings - Fork 566
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Xilem architecture prototype #2183
base: master
Are you sure you want to change the base?
Commits on Apr 12, 2022
-
Initial commit of idiopath experiment
This is similar to lasagna but with strongly typed elements. Let's see how it goes.
Configuration menu - View commit details
-
Copy full SHA for 9f06dda - Browse repository at this point
Copy the full SHA 9f06ddaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1caa8ca - Browse repository at this point
Copy the full SHA 1caa8caView commit details
Commits on Apr 13, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 899feb2 - Browse repository at this point
Copy the full SHA 899feb2View commit details -
Implement not very useful form of use_state
Event propagation has no mutable access.
Configuration menu - View commit details
-
Copy full SHA for fc142ea - Browse repository at this point
Copy the full SHA fc142eaView commit details -
A slightly more useful version
This passes the app state down through an Rc using a lens-like construction. I'm not sure this is the best construction. Perhaps it should be combined with adapt (the callback could take both mutable state references), but that's 3 callbacks. Also makes state mutable in event propagation, which seems useful.
Configuration menu - View commit details
-
Copy full SHA for 08afce9 - Browse repository at this point
Copy the full SHA 08afce9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8a4b687 - Browse repository at this point
Copy the full SHA 8a4b687View commit details
Commits on Apr 16, 2022
-
Configuration menu - View commit details
-
Copy full SHA for f30b2bb - Browse repository at this point
Copy the full SHA f30b2bbView commit details
Commits on May 4, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 52c29e8 - Browse repository at this point
Copy the full SHA 52c29e8View commit details -
Use xdg-desktop-portal's dbus APIs for open/save dialogs on x11.
Configuration menu - View commit details
-
Copy full SHA for 677f13f - Browse repository at this point
Copy the full SHA 677f13fView commit details -
Configuration menu - View commit details
-
Copy full SHA for ecbcb0f - Browse repository at this point
Copy the full SHA ecbcb0fView commit details -
Introduce Cx for reconciliation
This commit was derived from the async experiment, which required adding a waker to the reconciliation context. We will definitely be adding more things to Cx so that should be the type of View methods, but also we'll iterate a while on the core architecture before re-introducing async. Note, it also bounds the element type for View to Widget, which is less flexible but more ergonomic.
Configuration menu - View commit details
-
Copy full SHA for cfa7380 - Browse repository at this point
Copy the full SHA cfa7380View commit details -
Provide default (unit) action type for View. Add with_id and with_new_id methods to Cx which ensure proper nesting by construction.
Configuration menu - View commit details
-
Copy full SHA for bb86d0f - Browse repository at this point
Copy the full SHA bb86d0fView commit details -
Return "changed" indication from rebuild
Tweak signature of rebuild method to return a boolean indicating whether anything has been changed. This is not used yet, but will be for invalidation.
Configuration menu - View commit details
-
Copy full SHA for c607825 - Browse repository at this point
Copy the full SHA c607825View commit details -
Let event handlers do different things than return user-specified actions. This may not be used immediately but is important for implementing environment.
Configuration menu - View commit details
-
Copy full SHA for a69bb1b - Browse repository at this point
Copy the full SHA a69bb1bView commit details
Commits on May 10, 2022
-
Start implementing a widget hierarchy
The prototype had an extremely skeletal implementation of the widget hierarchy, but with this commit we start building more of a real one. It's based to a large exttent on existing Druid widgets, but some parts may be done differently, in particular an exploration into layout more similar to SwiftUI.
Configuration menu - View commit details
-
Copy full SHA for 8682d90 - Browse repository at this point
Copy the full SHA 8682d90View commit details
Commits on May 13, 2022
-
Add some layout methods. Rename Column to VStack. Put in alignment mechanisms. Much of the core layout protocol is implemented, but it's not exercised very deeply. A lot of view wrappers like "frame" in SwiftUI need to get implemented. I think I want to get the core widget trait more or less stable first (events need work in particular).
Configuration menu - View commit details
-
Copy full SHA for a2acd92 - Browse repository at this point
Copy the full SHA a2acd92View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3e703fb - Browse repository at this point
Copy the full SHA 3e703fbView commit details
Commits on May 14, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 163f756 - Browse repository at this point
Copy the full SHA 163f756View commit details -
Adds axis to SingleAlignment (renamed from OneAlignment). Incorporates layout offsets into alignment results.
Configuration menu - View commit details
-
Copy full SHA for ebe51a6 - Browse repository at this point
Copy the full SHA ebe51a6View commit details -
Use single Center alignment for horiz and vert
In SwiftUI, HorizontalAlignment.center and VerticalAlignment.center are two different structs, but in Rust it's just as convenient, if not more so, to let the same struct just impl the two different traits.
Configuration menu - View commit details
-
Copy full SHA for 064d639 - Browse repository at this point
Copy the full SHA 064d639View commit details -
This brings the event method in line with other widget methods, and also existing Druid. Also adds mutable access to the event queue to the base context state, so other contexts can add events. This will be useful for LayoutObserver (event generated from layout context). Actual event propagation is still very under-developed, but it should be possible to build that out without big signature changes.
Configuration menu - View commit details
-
Copy full SHA for a1706b8 - Browse repository at this point
Copy the full SHA a1706b8View commit details -
Implement the "layout observer" concept which is very similar to GeometryReader in SwiftUI. Also fix some problems in vstack layout computation.
Configuration menu - View commit details
-
Copy full SHA for e678cc4 - Browse repository at this point
Copy the full SHA e678cc4View commit details
Commits on May 18, 2022
-
Configuration menu - View commit details
-
Copy full SHA for c24b40c - Browse repository at this point
Copy the full SHA c24b40cView commit details -
Move relevant bits into core and contexts files, mirroring the structure of existing Druid (which hopefully will make it easier to navigate when adapting existing Druid code to the new architecture).
Configuration menu - View commit details
-
Copy full SHA for 6c6b0f2 - Browse repository at this point
Copy the full SHA 6c6b0f2View commit details -
The widget set really should be structured as a library, and it will no doubt be useful to have multiple examples to exercise various aspects of that. This patch changes from a single main executable to a library with an examples dir.
Configuration menu - View commit details
-
Copy full SHA for 5aaec6d - Browse repository at this point
Copy the full SHA 5aaec6dView commit details
Commits on May 19, 2022
-
I've decided on the name "xilem" rather than "idiopath," and this also matches the blog post (now linked from the README, though that is a bit stale).
Configuration menu - View commit details
-
Copy full SHA for ab39d1f - Browse repository at this point
Copy the full SHA ab39d1fView commit details -
Start building event propagation
Import some of the event dispatching logic from Druid. Still fairly minimal, not yet doing real hot/active logic on buttons yet (doing it the same way as Druid would depend on adding lifecycle to the Widget trait).
Configuration menu - View commit details
-
Copy full SHA for c4171f5 - Browse repository at this point
Copy the full SHA c4171f5View commit details
Commits on May 20, 2022
-
Add the lifecycle method to the Widget trait, matching existing Druid. I'm not at all convinced it's necessary - in original Druid, one of the main differences is that it doesn't have mutable access to app state, but that concern isn't really relevant. In any case, this minimizes divergence, and can possibly be cleaned up later.
Configuration menu - View commit details
-
Copy full SHA for 19aa2e6 - Browse repository at this point
Copy the full SHA 19aa2e6View commit details -
This commit implements the core functionality of button, including hot/active states, drawing of appearance, and reasonable layout. There are other changes in widget infrastructure to support this functionality.
Configuration menu - View commit details
-
Copy full SHA for a6fb0b8 - Browse repository at this point
Copy the full SHA a6fb0b8View commit details