From 112d21133b87e6e90b3aaeef3c23be6f5abf2cdc Mon Sep 17 00:00:00 2001 From: Malik Olivier Boussejra Date: Mon, 30 Apr 2018 00:43:45 +0900 Subject: [PATCH] [cimgui 1.53.1] Remove ImGuiWindowFlags::ShowBorders --- CHANGELOG.markdown | 3 +++ imgui-examples/examples/test_window_impl.rs | 14 +++++--------- imgui-sys/src/lib.rs | 1 - src/child_frame.rs | 10 ++++------ src/window.rs | 18 +++++++++++++++--- 5 files changed, 27 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown index bcb6e17..0b6c717 100644 --- a/CHANGELOG.markdown +++ b/CHANGELOG.markdown @@ -19,6 +19,9 @@ and `sys::ImDrawList_AddConvexPolyFilled`. - Rename `ImGuiStyleVar::ChildWindowRounding` to `ImGuiStyleVar::ChildRounding`. - Rename `StyleVar::ChildWindowRounding` to `StyleVar::ChildRounding`. + - Remove `ImGuiWindowFlags::ShowBorders` window flag. Borders are now fully + set up in the ImGuiStyle structure. + - Obsolete `Window::show_borders`. Use `StyleVar` instead. - Style: Add `PopupRounding`, `FrameBorderSize`, `WindowBorderSize`, `PopupBorderSize`. diff --git a/imgui-examples/examples/test_window_impl.rs b/imgui-examples/examples/test_window_impl.rs index 66a0f74..3c8242e 100644 --- a/imgui-examples/examples/test_window_impl.rs +++ b/imgui-examples/examples/test_window_impl.rs @@ -23,7 +23,6 @@ struct State { show_app_metrics: bool, show_app_about: bool, no_titlebar: bool, - no_border: bool, no_resize: bool, no_move: bool, no_scrollbar: bool, @@ -72,7 +71,6 @@ impl Default for State { show_app_metrics: false, show_app_about: false, no_titlebar: false, - no_border: true, no_resize: false, no_move: false, no_scrollbar: false, @@ -269,7 +267,6 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) { ui.window(im_str!("ImGui Demo")) .title_bar(!state.no_titlebar) - .show_borders(!state.no_border) .resizable(!state.no_resize) .movable(!state.no_move) .scroll_bar(!state.no_scrollbar) @@ -344,15 +341,14 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) { if ui.collapsing_header(im_str!("Window options")).build() { ui.checkbox(im_str!("No titlebar"), &mut state.no_titlebar); ui.same_line(150.0); - ui.checkbox(im_str!("No border"), &mut state.no_border); - ui.same_line(300.0); - ui.checkbox(im_str!("No resize"), &mut state.no_resize); - ui.checkbox(im_str!("No move"), &mut state.no_move); - ui.same_line(150.0); ui.checkbox(im_str!("No scrollbar"), &mut state.no_scrollbar); ui.same_line(300.0); - ui.checkbox(im_str!("No collapse"), &mut state.no_collapse); ui.checkbox(im_str!("No menu"), &mut state.no_menu); + ui.checkbox(im_str!("No move"), &mut state.no_move); + ui.same_line(150.0); + ui.checkbox(im_str!("No resize"), &mut state.no_resize); + ui.same_line(300.0); + ui.checkbox(im_str!("No collapse"), &mut state.no_collapse); ui.tree_node(im_str!("Style")).build(|| { ui.show_default_style_editor() diff --git a/imgui-sys/src/lib.rs b/imgui-sys/src/lib.rs index e646772..b762fc8 100644 --- a/imgui-sys/src/lib.rs +++ b/imgui-sys/src/lib.rs @@ -244,7 +244,6 @@ bitflags!( const NoScrollWithMouse = 1 << 4; const NoCollapse = 1 << 5; const AlwaysAutoResize = 1 << 6; - const ShowBorders = 1 << 7; const NoSavedSettings = 1 << 8; const NoInputs = 1 << 9; const MenuBar = 1 << 10; diff --git a/src/child_frame.rs b/src/child_frame.rs index b14f03a..aa1a0fd 100644 --- a/src/child_frame.rs +++ b/src/child_frame.rs @@ -7,6 +7,7 @@ use super::{ImStr, ImVec2, ImGuiWindowFlags, Ui}; pub struct ChildFrame<'ui, 'p> { name: &'p ImStr, size: ImVec2, + border: bool, flags: ImGuiWindowFlags, _phantom: PhantomData<&'ui Ui<'ui>>, } @@ -16,6 +17,7 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> { ChildFrame { name: name, size: size.into(), + border: false, flags: ImGuiWindowFlags::empty(), _phantom: PhantomData, } @@ -47,7 +49,7 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> { } #[inline] pub fn show_borders(mut self, value: bool) -> Self { - self.flags.set(ImGuiWindowFlags::ShowBorders, value); + self.border = value; self } #[inline] @@ -103,12 +105,8 @@ impl<'ui, 'p> ChildFrame<'ui, 'p> { self } pub fn build(self, f: F) { - // See issue for history. - // https://github.com/Gekkio/imgui-rs/pull/58 - let show_border = false; - let render_child_frame = - unsafe { sys::igBeginChild(self.name.as_ptr(), self.size, show_border, self.flags) }; + unsafe { sys::igBeginChild(self.name.as_ptr(), self.size, self.border, self.flags) }; if render_child_frame { f(); } diff --git a/src/window.rs b/src/window.rs index 40d5d6c..b1330ca 100644 --- a/src/window.rs +++ b/src/window.rs @@ -2,7 +2,7 @@ use sys; use std::marker::PhantomData; use std::ptr; -use super::{ImGuiCond, ImGuiWindowFlags, ImStr, ImVec2, Ui}; +use super::{ImGuiCond, ImGuiStyleVar, ImGuiWindowFlags, ImStr, ImVec2, Ui}; #[must_use] pub struct Window<'ui, 'p> { @@ -13,6 +13,8 @@ pub struct Window<'ui, 'p> { name: &'p ImStr, opened: Option<&'p mut bool>, flags: ImGuiWindowFlags, + // Deprecated. Should be removed along with Window::show_borders + border: bool, _phantom: PhantomData<&'ui Ui<'ui>>, } @@ -26,6 +28,7 @@ impl<'ui, 'p> Window<'ui, 'p> { name: name, opened: None, flags: ImGuiWindowFlags::empty(), + border: false, _phantom: PhantomData, } } @@ -87,8 +90,9 @@ impl<'ui, 'p> Window<'ui, 'p> { self } #[inline] + #[deprecated(since = "0.0.19", note = "please use StyleVar instead")] pub fn show_borders(mut self, value: bool) -> Self { - self.flags.set(ImGuiWindowFlags::ShowBorders, value); + self.border = value; self } #[inline] @@ -156,6 +160,9 @@ impl<'ui, 'p> Window<'ui, 'p> { if !self.size_cond.is_empty() { sys::igSetNextWindowSize(self.size.into(), self.size_cond); } + if self.border { + sys::igPushStyleVar(ImGuiStyleVar::FrameBorderSize, 1.0); + } sys::igBegin( self.name.as_ptr(), self.opened.map(|x| x as *mut bool).unwrap_or( @@ -167,6 +174,11 @@ impl<'ui, 'p> Window<'ui, 'p> { if render { f(); } - unsafe { sys::igEnd() }; + unsafe { + sys::igEnd(); + if self.border { + sys::igPopStyleVar(1); + } + }; } }