-
Notifications
You must be signed in to change notification settings - Fork 334
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
New auto-layout of space views #2558
Conversation
e8048ce
to
f80d434
Compare
23cf189
to
b33091a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
great step into the right direction. It does shrink customizability a little bit for the moment since the grid can't be customized easily - one can loose columns or rows but not restablish them.
I'd be very happy if you remove the new/changed use of view category, but not blocking over this ofc.
thanks for fixing up run_all properly as well, admittedly I ended up working around or giving up on it instead of taking the time to fix it up
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks!
pub enum SpaceViewClassLayoutPriority { | ||
/// This space view can share space with others | ||
/// | ||
/// Used for boring things like text and plots. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't think of our plots as boring :P
Closes #2139 ### What This simplifies the auto-layout of space views. We make heavy use of `egui_tiles::Grid`, which is responsive to the current viewport size. This means that space views may move around as you resize window in an effort to keep each one square-ish. In the future we can make `egui_tiles` smarter here and inform it of the desired aspect ratio of each space view. We make an exception for the (common) case of exactly three space views, which doesn't fit nicely in a grid anyways. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested https://demo.rerun.io/pr/2558 <!-- This line will get updated when the PR build summary job finishes. --> PR Build Summary: https://build.rerun.io/pr/2558 <!-- pr-link-docs:start --> Docs preview: https://rerun.io/preview/e2ed87c/docs Examples preview: https://rerun.io/preview/e2ed87c/examples <!-- pr-link-docs:end --> ### Testing In order to test this I used the `run_all.py` script and found a bunch of issues with is, so I fixed them. ![image](https://github.com/rerun-io/rerun/assets/1148717/af84bbde-7828-45f5-ab31-df20b3f099df) ![image](https://github.com/rerun-io/rerun/assets/1148717/d845a3b6-3c4d-4a2c-8317-90d35a1a423d) ![image](https://github.com/rerun-io/rerun/assets/1148717/c4005fd2-00c4-44bb-a120-f114f4e2bff8) ![image](https://github.com/rerun-io/rerun/assets/1148717/9844c977-d7a1-49a1-8255-e659288991ee) ![image](https://github.com/rerun-io/rerun/assets/1148717/6546b29f-2107-4713-bfe2-be1efd2cae1e) ![image](https://github.com/rerun-io/rerun/assets/1148717/05353922-02fb-4293-89c7-6b8372240e2b)
…nts - 2023-07-27 (#2842) ## [0.8.0](v0.7.0...v0.8.0) - Infrastructure investments and more transform improvements - 2023-07-27 [Rerun](https://www.rerun.io/) is an easy-to-use visualization toolbox for computer vision and robotics. * Python: `pip install rerun-sdk` * Rust: `cargo add rerun` and `cargo install rerun-cli` * Online demo: <https://demo.rerun.io/version/0.8.0/> ### Overview & Highlights - `log_pinhole` is now easier to use in simple cases and supports non-RDF camera coordinates. [#2614](#2614) - You only need to set focal length and optional principal point instead of setting the full 3x3 matrix. - There is also a new argument: `camera_xyz` for setting the coordinate system. The default is RDF (the old default). This affects the visible camera frustum, how rays are projected when hovering a 2D image, and how depth clouds are projected. - The visualizer can now show coordinate arrows for all affine transforms within the view. [#2577](#2577) - Linestrips and oriented bounding boxes can now be logged via batch APIs in python. - See: `log_linestrips_2d`, `log_linestrips_3d`, [#2822](#2822) and `log_obbs` [#2823](#2823) - Rust users that build their own Viewer applications can now add fully custom Space Views. Find more information [here](https://www.rerun.io/docs/howto/extend-ui#custom-space-views-classes). - New optional `flush_timeout` specifies how long Rerun will wait if a TCP stream is disconnected during a flush. [#2821](#2821) - In Rust, `RecordingStream::connect` now requires `flush_timeout` specified as an `Option<Duration>`. - To keep default behavior, this can be specified using the `rerun::default_flush_time()` helper. - In Python `flush_init_sec` is now an optional argument to `rr.connect()` - In Rust, the `RecordingStream` now offers a stateful time API, similar to the Python APIs. [#2506](#2506) - You can now call `set_time_sequence`, `set_time_seconds`, and `set_time_nanos` directly on the `RecordingStream`, which will set the time for all subsequent logs using that stream. - This can be used as an alternative to the the previous `MsgSender::with_time` APIs. - The Rerun SDK now defaults to 8ms long microbatches instead of 50ms. This makes the default behavior more suitable for use-cases like real-time video feeds. [#2220](#2220) - Check out [the microbatching docs](https://www.rerun.io/docs/reference/sdk-micro-batching) for more information on fine-tuning the micro-batching behavior. - The web viewer now incremental loads `.rrd` files when streaming over HTTP. [#2412](#2412) ![Open Photogrammetry Preview](https://static.rerun.io/9fa26e73a197690e0403cd35f29e31c2941dea36_release_080_photogrammetry_full.png) ### Ongoing Refactors - There have been a number of significant internal changes going on during this release with little visible impact. This work will land across future releases, but is highlighted here since much of it is visible through the changelog. - The layout of the Viewer is now controlled by a Blueprint datastore. In the future this will allow for direct API control of the layout and configuration of the Viewer. A very early prototype of this functionality is available via the `rerun.experimental` module in Python. - An entirely new code-generation framework has been brought online for Rust, Python and C++. This will eventually enable new object-centric APIs with a more scalable, consistent, and ergonomic experience. - Bringup of C++ support is now underway and will eventually become our third officially supported SDK language. ### Known Regressions - Due to the Blueprint storage migration, blueprint persistence on web is currently broken. Will be resolved in: [#2579](#2579) ### In Detail #### 🐍 Python SDK - Clean up warnings printed when `rr.init` hasn't been called [#2209](#2209) - Normalise Python typing syntax to 3.8+ [#2361](#2361) - Simpler, sturdier stateful time tracking in both SDKs [#2506](#2506) - Fix not taking np.array for single colors [#2569](#2569) - Add a basic pyright config [#2610](#2610) - Improve `log_pinhole` and support non-RDF pinholes [#2614](#2614) - Expose batch APIs for linestrips [#2822](#2822) - Expose batch APIs for oriented bounding boxes [#2823](#2823) #### 🦀 Rust SDK - Add example for adding custom Space Views [#2328](#2328) - Simpler, sturdier stateful time tracking in both SDKs [#2506](#2506) - Automagic flush when `take()`ing a `MemorySinkStorage` [#2632](#2632) - Logging SDK: Log warnings if user data is dropped [#2630](#2630) - Add support for `RecordingStream::serve` [#2815](#2815) #### 🌁 Viewer Improvements - Better handle scroll-to-zoom in 3D views [#1764](#1764) - Add command to screenshot the application [#2293](#2293) - Show layout in blueprint tree view [#2465](#2465) - Double-click to select entity [#2504](#2504) - Add Rerun.io link/text in top bar [#2540](#2540) - New auto-layout of space views [#2558](#2558) - Add 'Dump datastore' command to palette [#2564](#2564) - Support any `dtype` for depth images [#2602](#2602) - Change "Save Selection" command to Cmd+Alt+S [#2631](#2631) - Consistent transform visualization for all entities with transforms [#2577](#2577) - Improve `log_pinhole` and support non-RDF pinholes [#2614](#2614) #### 🚀 Performance Improvements - Flush the batches every 8ms instead of 50 ms [#2220](#2220) - Replace `image` crate jpeg decoder with zune-jpeg [#2376](#2376) - Stream `.rrd` files when loading via http [#2412](#2412) #### 🪳 Bug Fixes - Fix deadlock when misusing the Caches [#2318](#2318) - Fix unstable order/flickering of "shown in" space view list on selection [#2327](#2327) - Fix transforms not applied to connections from transform context [#2407](#2407) - Fix texture clamping and color gradient selection being displayed incorrectly [#2394](#2394) - Fix projected ray length [#2482](#2482) - Tweak the depth bias multiplier for WebGL [#2491](#2491) - Clip image zoom rectangle [#2505](#2505) - Fix missing feature flags for benchmarks [#2515](#2515) - `run_all.py` script fixes [#2519](#2519) - Update egui_tiles with fix for drag-and-drop-panic [#2555](#2555) - Convert objectron proto.py back to using typing.List [#2559](#2559) - Exclude from `objectron/proto/objectron/proto.py` from `just py-format` [#2562](#2562) - Fix pinhole visualization not working with camera extrinsics & intrinsics on the same path [#2568](#2568) - Fix: always auto-layout spaceviews until the user interveens [#2583](#2583) - Fix freeze/crash when logging large times [#2588](#2588) - Update egui_tiles to fix crash [#2598](#2598) - Fix clicking object with single instance (of every component) selecting instance instead of entity [#2573](#2573) - Cleanup internal data-structures when process has been forked [#2676](#2676) - Fix shutdown race-condition by introducing a flush_timeout before dropping data [#2821](#2821) - Fix ui-scale based point/line sizes incorrectly scaled when zooming based on horizontal dimension [#2805](#2805) - Fix visibility toggle for maximized Space Views [#2806](#2806) - Fix loading file via CLI [#2807](#2807) - Fix disconnected space APIs in Python SDK [#2832](#2832) - Avoid unwrap when generating authkey [#2804](#2804) #### 🧑🏫 Examples - Add example template [#2392](#2392) - Show hidden url search param in `app.rerun.io` [#2455](#2455) - Minimal example of running an intel realsense depth sensor live [#2541](#2541) - Add a simple example to display Open Photogrammetry Format datasets [#2512](#2512) - Move `examples/api_demo` -> `tests/test_api` [#2585](#2585) #### 📚 Docs - Docs: link to `rr.save` and suggest `rerun` instead of `python -m rerun` [#2586](#2586) - Update docs about transforms [#2496](#2496) - Fixup remaining usages of log_rigid3 in docs [#2831](#2831) #### 🎨 Renderer Improvements - Expose type erased draw data that can be consumed directly [#2300](#2300) - Use less `mut` when using `RenderContext` [#2312](#2312) #### 🧑💻 Dev-experience - Better error messages in build.rs [#2173](#2173) - Recommend sccache in CONTRIBUTING.md [#2245](#2245) - introduce `re_tracing` [#2283](#2283) - lint: standardize formatting of let-else-return statements [#2297](#2297) - Centralized build tools in `re_build_tools` [#2331](#2331) - Lint for explicit quotes [#2332](#2332) - Added example screenshot instructions in `just upload --help` [#2454](#2454) - Added support for puling image from an URL to `upload_image.py` [#2462](#2462) - `setup_dev.sh` now installs pngcrush [#2470](#2470) - Added docs/code-examples to the directories checked by py-lint and py-format [#2476](#2476) - Link to demo in PR + check checkboxes [#2543](#2543) - Add script to find external issues we haven't commented on [#2532](#2532) - Move CI-related scripts to its own folder [#2561](#2561) - Render PR description as template [#2563](#2563) - Add basic testing automation against all version of Python using nox [#2536](#2536) - Run clippy on public API too [#2596](#2596) - Bump all `py-lint`-related package versions [#2600](#2600) - Crates publishing script [#2604](#2604) - Fix rust docs deploy [#2615](#2615) - Add support for .gitignore to scripts/lint.py [#2666](#2666) #### 🗣 Refactors - Refactor space-view dependencies: - Move spatial space view to its own crate [#2286](#2286) - Separate crate for bar chart space view [#2322](#2322) - Separate crate for time series space view [#2324](#2324) - Separate crate for tensor space view [#2334](#2334) - Separate viewport related files out to a new re_viewport crate [#2251](#2251) - Remove timepanel dependency from viewport [#2256](#2256) - New trait system for SpaceViews: - Initial Space View trait & port of text space views to the new Space View trait system [#2281](#2281) - Extend/iterate on SpaceViewClass framework with SceneContext & port SpatialSpaceView scene parts [#2304](#2304) - Finalize move of SpatialSpaceView to SpaceViewClass trait framework [#2311](#2311) - Typename cleanup in SpaceViewClass framework [#2321](#2321) - Automatic fallback for unrecognized Space View Class, start removing old ViewCategory [#2357](#2357) - Rename ScenePart -> ViewPartSystem + related renamings [#2674](#2674) - Dynamically registered space view (part/context) systems [#2688](#2688) - Viewer's command queue is now a channel, allowing to queue commands without mutable access [#2339](#2339) - Break up app.rs into parts [#2303](#2303) - Break out `re_log_types::component_types` as `re_components` [#2258](#2258) - Introduce StoreHub and rename Recording->Store [#2301](#2301) - Move StoreHub out of the Viewer during Update [#2330](#2330) - Expand CommandSender to support SystemCommand [#2344](#2344) - Use `camino` crate for UTF8 paths in `re_types_builder` [#2637](#2637) - Separate 2d & 3d spaceview classes, removal of `ViewCategory`, `SpaceViewClass` driven spawn heuristics [#2716](#2716) - Move object property heuristics to heuristics.rs [#2764](#2764) #### 📦 Dependencies - Version `rand` & friends at workspace level [#2508](#2508) - Update to PyO3 0.19 [#2350](#2350) - Pin `half` to `2.2.1` [#2587](#2587) #### 📘 Blueprint Changes - Drive blueprints off of a DataStore [#2010](#2010) - Split SpaceView -> SpaceViewState + SpaceViewBlueprint [#2188](#2188) - Split the Blueprint into AppBlueprint and ViewportBlueprint [#2358](#2358) - Swap the naming of Viewport and ViewportBlueprint [#2595](#2595) - Basic persistence for blueprints [#2578](#2578) #### 🏭 New Codegen Framework - Codegen/IDL 1: add more build tools [#2362](#2362) - Codegen/IDL 2: introduce `re_types_builder` [#2363](#2363) - Codegen/IDL 3: introduce `re_types` [#2369](#2369) - Codegen/IDL 4: definitions for a `Points2D` archetype [#2370](#2370) - Codegen/IDL 5: auto-generated Python code for `Points2D` [#2374](#2374) - Codegen/IDL 7: handwritten Python tests and extensions for `Points2D` [#2410](#2410) - Codegen/IDL 6: auto-generated Rust code for `Points2D` [#2375](#2375) - Codegen/IDL 8: handwritten Rust tests and extensions for `Points2D` [#2432](#2432) - Codegen'd Rust/Arrow 1: upgrading to actual `TokenStream`s [#2484](#2484) - Codegen'd Rust/Arrow 2: matching legacy definitions [#2485](#2485) - Codegen'd Rust/Arrow 3: misc fixes & improvements [#2487](#2487) - Codegen'd Rust/Arrow 4: out-of-sync definitions CI detection [#2545](#2545) - Codegen'd Rust/Arrow 5: doc, definitions and regression tests for combinatorial affixes [#2546](#2546) - Codegen'd Rust/Arrow 6: serialization [#2549](#2549) - Codegen'd Rust/Arrow 7: deserialization [#2554](#2554) - Codegen'd Rust/Arrow 8: carry extension metadata across transparency layers [#2570](#2570) - Codegen'd Rust/Arrow 9: Rust backport! [#2571](#2571) - End-to-end cross-language roundtrip tests for our archetypes [#2601](#2601) - Automatically derive `Debug` and `Clone` in Rust backend [#2613](#2613) - Generating (de)serialization code for dense unions in Rust backend [#2626](#2626) - Fix `FixedSizeList` deserialization edge-case + trivial optimizations [#2673](#2673) - Make `Datatype` & `Component` both inherit from `Loggable` [#2677](#2677) - Roundtrip-able `Transform3D`s [#2669](#2669) - Don't inline recursive datatypes in Rust backend [#2760](#2760) - Automatically derive `tuple_struct` attr and trivial `From` impls where possible [#2772](#2772) - Introduce roundtrip-able `Points3D` archetype (py + rs) [#2774](#2774) - Add `fmt::Debug` implementations to various types. [#2784](#2784) (thanks [@kpreid](https://github.com/kpreid)!) - Isolate testing types in Rust backend [#2810](#2810) - Fix out-of-sync codegen hash [#2567](#2567) - Python backport: add `log_any()` [#2581](#2581) - Integrate unit examples into codegen stack [#2590](#2590) - Disable codegen on windows [#2592](#2592) - Python codegen: big cleaning and paving the way towards transforms [#2603](#2603) - Automatically assume arrow transparency for components [#2608](#2608) - Fix wrong path being `rerun_if_changed()` in `compute_dir_hash` [#2612](#2612) - Support transparency at the semantic layer [#2611](#2611) - Don't use builtin `required` anymore, introduce `nullable` instead [#2619](#2619) - Rust codegen: generate proper docstrings [#2668](#2668) - Support nullable Arrow unions using virtual union arms [#2708](#2708) - Introduce support for querying Archetypes [#2743](#2743) - Introduce legacy shims and migrate DataCell to re_types::Component [#2752](#2752) #### 🌊 Starting work on C++ - Seed of C and C++ SDKs [#2594](#2594) - Move C++ SDK to own folder [#2624](#2624) - C++ codegen [#2678](#2678) - C++ codegen for reporting arrow data type for structs [#2756](#2756) - Don't inline recursive datatypes in C++ backend [#2765](#2765) - C++ codegen to_arrow_data_type for unions [#2766](#2766) - C++ codegen arrow serialize non-union components/datatypes without nested rerun types [#2820](#2820) - C++ codegen of structs and unions [#2707](#2707) - Fix cpp formatter differences [#2773](#2773) #### 🤷♂️ Other - test_api: set different app_id based on what test is run [#2599](#2599) - Introduce `rerun compare` to check whether 2 rrd files are functionally equivalent [#2597](#2597) - Remove `files.exclude` in vscode settings [#2621](#2621) - Support feature-gated rust attributes [#2813](#2813) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/2842) (if applicable) - [PR Build Summary](https://build.rerun.io/pr/2842) - [Docs preview](https://rerun.io/preview/pr%3Arelease-0.8/docs) - [Examples preview](https://rerun.io/preview/pr%3Arelease-0.8/examples)
* Uses: rerun-io/egui_tiles#67 * Uses: lampsitter/egui_commonmark#51 * Split off from #6171 * Closes #5280 ### Test * [x] image loading * [x] gltf ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6448?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6448?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6448) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. # egui changelog so far Full diff at https://github.com/emilk/egui/compare/0.27.0..HEAD #### ecolor * Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor` [#4372](emilk/egui#4372) (thanks [@dataphract](https://github.com/dataphract)!) * Remove `extra_asserts` and `extra_debug_asserts` feature flags [#4478](emilk/egui#4478) #### eframe * Add `register_native_texture` in `eframe::Frame` [#4246](emilk/egui#4246) (thanks [@Chaojimengnan](https://github.com/Chaojimengnan)!) * Early-out from context switching the `glow` backend [#4284](emilk/egui#4284) * Fix `ViewportCommand::InnerSize` not resizing viewport on Wayland (#4211) [#4211](emilk/egui#4211) (thanks [@rustbasic](https://github.com/rustbasic)!) * Only avoid glow context switching on Windows [#4296](emilk/egui#4296) * Improve IME support with new `Event::Ime` [#4358](emilk/egui#4358) (thanks [@rustbasic](https://github.com/rustbasic)!) * Allow users to create viewports larger than monitor on Windows & macOS [#4337](emilk/egui#4337) (thanks [@lopo12123](https://github.com/lopo12123)!) * Use `objc2` and its framework crates [#4395](emilk/egui#4395) (thanks [@madsmtm](https://github.com/madsmtm)!) * Update to Rust 1.76 [#4411](emilk/egui#4411) * Egui-winit: emit physical key presses when a non-Latin layout is active [#4461](emilk/egui#4461) (thanks [@TicClick](https://github.com/TicClick)!) * IME for chinese [#4436](emilk/egui#4436) (thanks [@rustbasic](https://github.com/rustbasic)!) * Fix : In Windows, the 'egui_demo_app' screen does not appear. [#4410](emilk/egui#4410) (thanks [@rustbasic](https://github.com/rustbasic)!) * Fix: Window position creeps between executions on scaled monitors [#4443](emilk/egui#4443) (thanks [@avery-radmacher](https://github.com/avery-radmacher)!) * Update `image` crate to 0.25 [#4160](emilk/egui#4160) * Ignore synthetic key presses [#4514](emilk/egui#4514) (thanks [@hut](https://github.com/hut)!) * Fix: still track mouse when dragging outside web canvas [#4522](emilk/egui#4522) * Add `NativeOptions::persistence_path` [#4423](emilk/egui#4423) (thanks [@lucasmerlin](https://github.com/lucasmerlin)!) * Use ResizeObserver instead of `resize` event [#4536](emilk/egui#4536) (thanks [@jprochazk](https://github.com/jprochazk)!) * Fix: Don't `.forget()` RAF closure [#4551](emilk/egui#4551) (thanks [@jprochazk](https://github.com/jprochazk)!) #### egui_extras * Update `image` crate to 0.25 [#4160](emilk/egui#4160) #### egui_plot * `Plot::Items:allow_hover` give possibility to masked the interaction on hovered item [#2558](emilk/egui#2558) (thanks [@haricot](https://github.com/haricot)!) * Expose `ClosestElem` and `PlotConfig` [#4380](emilk/egui#4380) (thanks [@Narcha](https://github.com/Narcha)!) * Disable interaction for `ScrollArea` and `Plot` when UI is disabled [#4457](emilk/egui#4457) (thanks [@varphone](https://github.com/varphone)!) * Make sure plot size is positive [#4429](emilk/egui#4429) (thanks [@rustbasic](https://github.com/rustbasic)!) * Introduce lifetime to `egui_plot::Plot` to replace `'static` fields [#4435](emilk/egui#4435) (thanks [@Fabus1184](https://github.com/Fabus1184)!) * Hide all other series when alt-clicking in the legend [#4549](emilk/egui#4549) (thanks [@abey79](https://github.com/abey79)!) * Plot now respects the `interact_radius` set in the UI's style [#4520](emilk/egui#4520) (thanks [@YgorSouza](https://github.com/YgorSouza)!) #### egui_glow * Enable egui_glow's winit feature on wasm (#4420) [#4421](emilk/egui#4421) (thanks [@simon-frankau](https://github.com/simon-frankau)!) #### egui-wgpu * Update to wgpu 0.20 [#4433](emilk/egui#4433) (thanks [@KeKsBoTer](https://github.com/KeKsBoTer)!) * Revert update to wgpu 0.20 => downgrade to wgpu 0.19.1 [#4559](emilk/egui#4559) #### egui-winit * Update `webbrowser` to `v1.0.0` [#4394](emilk/egui#4394) (thanks [@torokati44](https://github.com/torokati44)!) * Emit physical key presses when a non-Latin layout is active [#4461](emilk/egui#4461) (thanks [@TicClick](https://github.com/TicClick)!) * IME for chinese [#4436](emilk/egui#4436) (thanks [@rustbasic](https://github.com/rustbasic)!) * Fix: Window position creeps between executions on scaled monitors [#4443](emilk/egui#4443) (thanks [@avery-radmacher](https://github.com/avery-radmacher)!) * Ignore synthetic key presses [#4514](emilk/egui#4514) (thanks [@hut](https://github.com/hut)!) #### egui * Improve the UI for changing the egui theme [#4257](emilk/egui#4257) * Change the resize cursor when you reach the resize limit [#4275](emilk/egui#4275) * Make `TextEdit` an atomic widget [#4276](emilk/egui#4276) * Overload operators for `Rect + Margin`, `Rect - Margin` etc [#4277](emilk/egui#4277) * Implement blinking text cursor in `TextEdit` [#4279](emilk/egui#4279) * Rename `fn scroll2` to `fn scroll` [#4282](emilk/egui#4282) * Change `Frame::multiply_with_opacity` to multiply in gamma space [#4283](emilk/egui#4283) * Support order on windows [#4301](emilk/egui#4301) (thanks [@alexparlett](https://github.com/alexparlett)!) * Fix wrong replacement function in deprecation notice of `drag_released*` [#4314](emilk/egui#4314) (thanks [@sornas](https://github.com/sornas)!) * Consider layer transform when positioning text agent [#4319](emilk/egui#4319) (thanks [@juancampa](https://github.com/juancampa)!) * Fix incorrect line breaks [#4377](emilk/egui#4377) (thanks [@juancampa](https://github.com/juancampa)!) * Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor` [#4372](emilk/egui#4372) (thanks [@dataphract](https://github.com/dataphract)!) * Change `Ui::allocate_painter` to inherit properties from `Ui` [#4343](emilk/egui#4343) (thanks [@varphone](https://github.com/varphone)!) * Use parent `Ui`s style for popups [#4325](emilk/egui#4325) (thanks [@alexparlett](https://github.com/alexparlett)!) * Fix : take `rounding` into account when using `Slider::trailing_fill` [#4308](emilk/egui#4308) (thanks [@rustbasic](https://github.com/rustbasic)!) * Add a way to specify Undoer settings and construct Undoers more easily [#4357](emilk/egui#4357) (thanks [@valadaptive](https://github.com/valadaptive)!) * Add xtask crate [#4293](emilk/egui#4293) (thanks [@YgorSouza](https://github.com/YgorSouza)!) * Add `ViewportCommand::RequestCut`, `RequestCopy` and `RequestPaste` to trigger Clipboard actions [#4035](emilk/egui#4035) (thanks [@bu5hm4nn](https://github.com/bu5hm4nn)!) * Fix `Panel` incorrect size [#4351](emilk/egui#4351) (thanks [@zhatuokun](https://github.com/zhatuokun)!) * Improve IME support with new `Event::Ime` [#4358](emilk/egui#4358) (thanks [@rustbasic](https://github.com/rustbasic)!) * Allow users to create viewports larger than monitor on Windows & macOS [#4337](emilk/egui#4337) (thanks [@lopo12123](https://github.com/lopo12123)!) * Added ability to define colors at UV coordinates along a path [#4353](emilk/egui#4353) (thanks [@murl-digital](https://github.com/murl-digital)!) * Eframe: update ViewportBuilder.with_icon() documentation [#4408](emilk/egui#4408) (thanks [@roccoblues](https://github.com/roccoblues)!) * Update to Rust 1.76 [#4411](emilk/egui#4411) * Add a `Display` impl for `Vec2`, `Pos2`, and `Rect` [#4428](emilk/egui#4428) (thanks [@tgross35](https://github.com/tgross35)!) * Remove `extra_asserts` and `extra_debug_asserts` feature flags [#4478](emilk/egui#4478) * Egui-winit: emit physical key presses when a non-Latin layout is active [#4461](emilk/egui#4461) (thanks [@TicClick](https://github.com/TicClick)!) * Disable interaction for `ScrollArea` and `Plot` when UI is disabled [#4457](emilk/egui#4457) (thanks [@varphone](https://github.com/varphone)!) * Update ahash 0.8.6 -> 0.8.11 [#4507](emilk/egui#4507) (thanks [@hellodword](https://github.com/hellodword)!) * `include_image!` now accepts expressions [#4521](emilk/egui#4521) (thanks [@YgorSouza](https://github.com/YgorSouza)!) * Remove `Event::Scroll` and handle it in egui [#4524](emilk/egui#4524) * Remove scroll latency for smooth trackpads [#4526](emilk/egui#4526) * Smooth out zooming with discreet scroll wheel [#4530](emilk/egui#4530) * Add `Options::line_scroll_speed` and `scroll_zoom_speed` [#4532](emilk/egui#4532) * Don't panic when replacement glyph is not found [#4542](emilk/egui#4542) (thanks [@RyanBluth](https://github.com/RyanBluth)!) * Make `TextEdit::return_key` optional [#4543](emilk/egui#4543) (thanks [@doonv](https://github.com/doonv)!) * Add `TextEdit::hint_text_font` [#4517](emilk/egui#4517) (thanks [@zaaarf](https://github.com/zaaarf)!) * Add `Options::reduce_texture_memory` to free up RAM [#4431](emilk/egui#4431) (thanks [@varphone](https://github.com/varphone)!) * Fix `Ui::scroll_with_delta` only scrolling if the `ScrollArea` is focused [#4303](emilk/egui#4303) (thanks [@lucasmerlin](https://github.com/lucasmerlin)!) * Add support for text truncation to `egui::Style` [#4556](emilk/egui#4556) (thanks [@abey79](https://github.com/abey79)!) * Hide toolip when opening `ComboBox` drop-down [#4546](emilk/egui#4546) (thanks [@abey79](https://github.com/abey79)!) * Better spacing and sizes for (menu) buttons [#4558](emilk/egui#4558) #### epaint * Add `RectShape::blur_width` to implement shadows [#4267](emilk/egui#4267) * Overload operators for `Rect + Margin`, `Rect - Margin` etc [#4277](emilk/egui#4277) * Fix incorrect line breaks [#4377](emilk/egui#4377) (thanks [@juancampa](https://github.com/juancampa)!) * Fix `hex_color!` macro by re-exporting `color_hex` crate from `ecolor` [#4372](emilk/egui#4372) (thanks [@dataphract](https://github.com/dataphract)!) * Add `emath::OrderedFloat` (moved from `epaint::util::OrderedFloat`) [#4389](emilk/egui#4389) * Added ability to define colors at UV coordinates along a path [#4353](emilk/egui#4353) (thanks [@murl-digital](https://github.com/murl-digital)!) * Add a `Display` impl for `Vec2`, `Pos2`, and `Rect` [#4428](emilk/egui#4428) (thanks [@tgross35](https://github.com/tgross35)!) * Remove `extra_asserts` and `extra_debug_asserts` feature flags [#4478](emilk/egui#4478) * Make `epaint::mutex::RwLock` allow `?Sized` types [#4485](emilk/egui#4485) (thanks [@crumblingstatue](https://github.com/crumblingstatue)!) * Update ahash 0.8.6 -> 0.8.11 [#4507](emilk/egui#4507) (thanks [@hellodword](https://github.com/hellodword)!) * Don't panic when replacement glyph is not found [#4542](emilk/egui#4542) (thanks [@RyanBluth](https://github.com/RyanBluth)!) --------- Co-authored-by: Antoine Beyeler <antoine@rerun.io> Co-authored-by: Andreas Reich <r_andreas2@web.de>
Closes #2139
What
This simplifies the auto-layout of space views.
We make heavy use of
egui_tiles::Grid
, which is responsive to the current viewport size. This means that space views may move around as you resize window in an effort to keep each one square-ish. In the future we can makeegui_tiles
smarter here and inform it of the desired aspect ratio of each space view.We make an exception for the (common) case of exactly three space views, which doesn't fit nicely in a grid anyways.
Checklist
PR Build Summary: https://build.rerun.io/pr/2558
Docs preview: https://rerun.io/preview/e2ed87c/docs
Examples preview: https://rerun.io/preview/e2ed87c/examples
Testing
In order to test this I used the
run_all.py
script and found a bunch of issues with is, so I fixed them.