Fix precision issue in panel space allocation debug sanity check

Closes https://github.com/emilk/egui/issues/99
This commit is contained in:
Emil Ernerfeldt 2021-01-07 18:31:19 +01:00
parent 5ef9f35d1e
commit e413e5e3e9
2 changed files with 8 additions and 4 deletions

View file

@ -13,6 +13,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Add `ui.allocate_at_least` and `ui.allocate_exact_size`. * Add `ui.allocate_at_least` and `ui.allocate_exact_size`.
### Fixed 🐛
* Fixed a bug that would sometimes trigger a "Mismatching panels" panic in debug builds.
## 0.7.0 - 2021-01-04 ## 0.7.0 - 2021-01-04
### Added ⭐ ### Added ⭐

View file

@ -93,8 +93,8 @@ impl FrameState {
/// Shrink `available_rect`. /// Shrink `available_rect`.
pub(crate) fn allocate_left_panel(&mut self, panel_rect: Rect) { pub(crate) fn allocate_left_panel(&mut self, panel_rect: Rect) {
debug_assert!( debug_assert!(
panel_rect.min == self.available_rect.min, panel_rect.min.distance(self.available_rect.min) < 0.1,
"Mismatching panels. You must not create a panel from within another panel." "Mismatching left panel. You must not create a panel from within another panel."
); );
self.available_rect.min.x = panel_rect.max.x; self.available_rect.min.x = panel_rect.max.x;
self.unused_rect.min.x = panel_rect.max.x; self.unused_rect.min.x = panel_rect.max.x;
@ -104,8 +104,8 @@ impl FrameState {
/// Shrink `available_rect`. /// Shrink `available_rect`.
pub(crate) fn allocate_top_panel(&mut self, panel_rect: Rect) { pub(crate) fn allocate_top_panel(&mut self, panel_rect: Rect) {
debug_assert!( debug_assert!(
panel_rect.min == self.available_rect.min, panel_rect.min.distance(self.available_rect.min) < 0.1,
"Mismatching panels. You must not create a panel from within another panel." "Mismatching top panel. You must not create a panel from within another panel."
); );
self.available_rect.min.y = panel_rect.max.y; self.available_rect.min.y = panel_rect.max.y;
self.unused_rect.min.y = panel_rect.max.y; self.unused_rect.min.y = panel_rect.max.y;