From c604574e523317442edf481c0cbe503edc876fc9 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 22 Apr 2020 18:25:02 +0200 Subject: [PATCH] Unify state management --- emigui/src/memory.rs | 16 +++++----------- emigui/src/scroll_area.rs | 6 ++++++ emigui/src/window.rs | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/emigui/src/memory.rs b/emigui/src/memory.rs index e85b95cd..ddaa2cd4 100644 --- a/emigui/src/memory.rs +++ b/emigui/src/memory.rs @@ -1,12 +1,6 @@ use std::collections::HashMap; -use crate::{collapsing_header, window::WindowState, *}; - -#[derive(Clone, Copy, Debug, Default)] -pub struct ScrollState { - /// Positive offset means scrolling down/right - pub offset: Vec2, -} +use crate::{collapsing_header, scroll_area, window, *}; #[derive(Clone, Debug, Default)] pub struct Memory { @@ -15,19 +9,19 @@ pub struct Memory { // states of various types of widgets pub(crate) collapsing_headers: HashMap, - pub(crate) scroll_areas: HashMap, - windows: HashMap, + pub(crate) scroll_areas: HashMap, + windows: HashMap, /// Top is last pub window_order: Vec, } impl Memory { - pub fn get_window(&mut self, id: Id) -> Option { + pub fn get_window(&mut self, id: Id) -> Option { self.windows.get(&id).cloned() } - pub fn set_window_state(&mut self, id: Id, state: WindowState) { + pub fn set_window_state(&mut self, id: Id, state: window::State) { let did_insert = self.windows.insert(id, state).is_none(); if did_insert { self.window_order.push(id); diff --git a/emigui/src/scroll_area.rs b/emigui/src/scroll_area.rs index 865d98ae..905071f6 100644 --- a/emigui/src/scroll_area.rs +++ b/emigui/src/scroll_area.rs @@ -1,5 +1,11 @@ use crate::*; +#[derive(Clone, Copy, Debug, Default)] +pub struct State { + /// Positive offset means scrolling down/right + pub offset: Vec2, +} + pub struct ScrollArea { max_height: f32, } diff --git a/emigui/src/window.rs b/emigui/src/window.rs index fdce2f9f..1f130cba 100644 --- a/emigui/src/window.rs +++ b/emigui/src/window.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use crate::{mesher::Path, widgets::*, *}; #[derive(Clone, Copy, Debug)] -pub struct WindowState { +pub struct State { /// Last known pos pub outer_pos: Pos2, pub inner_size: Vec2, @@ -127,7 +127,7 @@ impl Window { let (mut state, is_new_window) = match ctx.memory.lock().get_window(id) { Some(state) => (state, false), None => { - let state = WindowState { + let state = State { outer_pos: default_pos, inner_size: default_inner_size, outer_rect: Rect::from_min_size( @@ -216,7 +216,7 @@ impl Window { state.outer_pos += ctx.input().mouse_move; } - state = WindowState { + state = State { outer_pos: state.outer_pos, inner_size: new_inner_size, outer_rect: outer_rect,