From 0c9b4858f0cc40bc4db32ee1f83a48fc06305586 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 20 Mar 2021 15:36:14 +0100 Subject: [PATCH] refactor: simplify CollapsingHeader enable/disable code --- egui/src/containers/collapsing_header.rs | 65 +++++++++++------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/egui/src/containers/collapsing_header.rs b/egui/src/containers/collapsing_header.rs index a232b81d..de95c289 100644 --- a/egui/src/containers/collapsing_header.rs +++ b/egui/src/containers/collapsing_header.rs @@ -281,43 +281,40 @@ impl CollapsingHeader { ui: &mut Ui, add_contents: impl FnOnce(&mut Ui) -> R, ) -> CollapsingResponse { - let header_enabled = self.enabled; - ui.wrap(|ui| { - ui.set_enabled(header_enabled); + // Make sure contents are bellow header, + // and make sure it is one unit (necessary for putting a `CollapsingHeader` in a grid). + ui.vertical(|ui| { + ui.set_enabled(self.enabled); - // Make sure contents are bellow header, - // and make sure it is one unit (necessary for putting a `CollapsingHeader` in a grid). - ui.vertical(|ui| { - let Prepared { - id, + let Prepared { + id, + header_response, + mut state, + } = self.begin(ui); + + let ret_response = state.add_contents(ui, id, |ui| { + ui.indent(id, |ui| { + // make as wide as the header: + ui.expand_to_include_x(header_response.rect.right()); + add_contents(ui) + }) + .inner + }); + ui.memory().collapsing_headers.insert(id, state); + + if let Some(ret_response) = ret_response { + CollapsingResponse { header_response, - mut state, - } = self.begin(ui); - let ret_response = state.add_contents(ui, id, |ui| { - ui.indent(id, |ui| { - // make as wide as the header: - ui.expand_to_include_x(header_response.rect.right()); - add_contents(ui) - }) - .inner - }); - ui.memory().collapsing_headers.insert(id, state); - - if let Some(ret_response) = ret_response { - CollapsingResponse { - header_response, - body_response: Some(ret_response.response), - body_returned: Some(ret_response.inner), - } - } else { - CollapsingResponse { - header_response, - body_response: None, - body_returned: None, - } + body_response: Some(ret_response.response), + body_returned: Some(ret_response.inner), } - }) - .inner + } else { + CollapsingResponse { + header_response, + body_response: None, + body_returned: None, + } + } }) .inner }