Browse Source

Don't persist `Area` state (#4577)

If you change your code for what is contained in a menu, tooltips,
combobox etc, it is helpful if egui will recompute the size of that Area
next frame. Now it will!

The user-chosen size of a `Window` is still persisted via other means.
pull/4578/head
Emil Ernerfeldt 5 months ago
committed by GitHub
parent
commit
66f40de7a1
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      crates/egui/src/containers/area.rs
  2. 3
      crates/egui/src/memory.rs

6
crates/egui/src/containers/area.rs

@ -8,8 +8,12 @@ use crate::*;
///
/// Areas back [`crate::Window`]s and other floating containers,
/// like tooltips and the popups of [`crate::ComboBox`].
///
/// Area state is intentionally NOT persisted between sessions,
/// so that a bad tooltip or menu size won't be remembered forever.
/// A resizable [`Window`] remembers the size the user picked using
/// the state in the [`Resize`] container.
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct AreaState {
/// Last known position of the pivot.
pub pivot_pos: Pos2,

3
crates/egui/src/memory.rs

@ -934,6 +934,9 @@ impl Memory {
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde", serde(default))]
pub struct Areas {
/// Area state is intentionally NOT persisted between sessions,
/// so that a bad tooltip or menu size won't be remembered forever.
#[cfg_attr(feature = "serde", serde(skip))]
areas: IdMap<area::AreaState>,
/// Back-to-front. Top is last.

Loading…
Cancel
Save