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
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
8 additions and
1 deletions
crates/egui/src/containers/area.rs
crates/egui/src/memory.rs
@ -8,8 +8,12 @@ use crate::*;
///
///
/// Areas back [`crate::Window`]s and other floating containers,
/// Areas back [`crate::Window`]s and other floating containers,
/// like tooltips and the popups of [`crate::ComboBox`].
/// 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) ]
#[ derive(Clone, Copy, Debug) ]
#[ cfg_attr(feature = " serde " , derive(serde::Deserialize, serde::Serialize)) ]
pub struct AreaState {
pub struct AreaState {
/// Last known position of the pivot.
/// Last known position of the pivot.
pub pivot_pos : Pos2 ,
pub pivot_pos : Pos2 ,
@ -934,6 +934,9 @@ impl Memory {
#[ cfg_attr(feature = " serde " , derive(serde::Deserialize, serde::Serialize)) ]
#[ cfg_attr(feature = " serde " , derive(serde::Deserialize, serde::Serialize)) ]
#[ cfg_attr(feature = " serde " , serde(default)) ]
#[ cfg_attr(feature = " serde " , serde(default)) ]
pub struct Areas {
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 > ,
areas : IdMap < area ::AreaState > ,
/// Back-to-front. Top is last.
/// Back-to-front. Top is last.