bevy/examples/ui
Jan Hohenheim a750cfe4a1
Split CursorOptions off of Window (#19668)
# Objective

- Fixes #19627 
- Tackles part of #19644 
- Supersedes #19629
- `Window` has become a very very very big component
- As such, our change detection does not *really* work on it, as e.g.
moving the mouse will cause a change for the entire window
- We circumvented this with a cache
- But, some things *shouldn't* be cached as they can be changed from
outside the user's control, notably the cursor grab mode on web
- So, we need to disable the cache for that
- But because change detection is broken, that would result in the
cursor grab mode being set every frame the mouse is moved
- That is usually *not* what a dev wants, as it forces the cursor to be
locked even when the end-user is trying to free the cursor on the
browser
  - the cache in this situation is invalid due to #8949

## Solution

- Split `Window` into multiple components, each with working change
detection
- Disable caching of the cursor grab mode
- This will only attempt to force the grab mode when the `CursorOptions`
were touched by the user, which is *much* rarer than simply moving the
mouse.
- If this PR is merged, I'll do the exact same for the other
constituents of `Window` as a follow-up

## Testing

- Ran all the changed examples
2025-06-17 20:20:13 +00:00
..
borders.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
box_shadow.rs Minor refactoring of box_shadow example (#19404) 2025-05-27 23:44:32 +00:00
button.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
core_widgets_observers.rs Event Split: Event, EntityEvent, and BufferedEvent (#19647) 2025-06-15 16:46:34 +00:00
core_widgets.rs Core slider (#19584) 2025-06-15 00:53:31 +00:00
directional_navigation.rs Provide access to the original target of entity-events in observers (#19663) 2025-06-15 20:53:25 +00:00
display_and_visibility.rs Rename JustifyText to Justify (#19522) 2025-06-09 19:59:48 +00:00
flex_layout.rs Relationships (non-fragmenting, one-to-many) (#17398) 2025-01-18 22:20:30 +00:00
font_atlas_debug.rs Upgrade to Rust Edition 2024 (#17967) 2025-02-24 03:54:47 +00:00
ghost_nodes.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
gradients.rs Gradients example: Fit in initial window (#19520) 2025-06-08 17:26:02 +00:00
grid.rs Relationships (non-fragmenting, one-to-many) (#17398) 2025-01-18 22:20:30 +00:00
overflow_clip_margin.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
overflow_debug.rs Specialized UI transform (#16615) 2025-06-09 19:05:49 +00:00
overflow.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
relative_cursor_position.rs Specialized UI transform (#16615) 2025-06-09 19:05:49 +00:00
render_ui_to_texture.rs Rename TargetCamera to UiTargetCamera (#17403) 2025-01-19 19:56:57 +00:00
scroll.rs Event Split: Event, EntityEvent, and BufferedEvent (#19647) 2025-06-15 16:46:34 +00:00
size_constraints.rs Event Split: Event, EntityEvent, and BufferedEvent (#19647) 2025-06-15 16:46:34 +00:00
stacked_gradients.rs Rename Position to UiPosition in bevy_ui (#19422) 2025-05-29 14:52:44 +00:00
tab_navigation.rs Event Split: Event, EntityEvent, and BufferedEvent (#19647) 2025-06-15 16:46:34 +00:00
text_background_colors.rs Rename JustifyText to Justify (#19522) 2025-06-09 19:59:48 +00:00
text_debug.rs Rename JustifyText to Justify (#19522) 2025-06-09 19:59:48 +00:00
text_wrap_debug.rs Rename JustifyText to Justify (#19522) 2025-06-09 19:59:48 +00:00
text.rs Rename JustifyText to Justify (#19522) 2025-06-09 19:59:48 +00:00
transparency_ui.rs
ui_material.rs ui_material example webgl2 fix (#17852) 2025-02-13 20:52:26 +00:00
ui_scaling.rs Rename Timer::finished and Timer::paused to is_finished and is_paused (#19386) 2025-05-27 22:24:18 +00:00
ui_texture_atlas_slice.rs BorderRect maintenance (#16727) 2024-12-12 04:33:44 +00:00
ui_texture_atlas.rs
ui_texture_slice_flip_and_tile.rs BorderRect maintenance (#16727) 2024-12-12 04:33:44 +00:00
ui_texture_slice.rs BorderRect maintenance (#16727) 2024-12-12 04:33:44 +00:00
ui_transform.rs Specialized UI transform (#16615) 2025-06-09 19:05:49 +00:00
viewport_debug.rs separate border colors (#18682) 2025-05-26 16:57:13 +00:00
viewport_node.rs Event Split: Event, EntityEvent, and BufferedEvent (#19647) 2025-06-15 16:46:34 +00:00
window_fallthrough.rs Split CursorOptions off of Window (#19668) 2025-06-17 20:20:13 +00:00
z_index.rs Updated comment: ZIndex::Local(0) -> ZIndex(0). (#16585) 2024-12-01 20:09:09 +00:00