diff --git a/imgui/src/clipboard.rs b/imgui/src/clipboard.rs index 38ebc97..f1abb0d 100644 --- a/imgui/src/clipboard.rs +++ b/imgui/src/clipboard.rs @@ -93,7 +93,7 @@ pub(crate) unsafe extern "C" fn set_clipboard_text(user_data: *mut c_void, text: /// # Clipboard #[allow(clippy::fn_address_comparisons)] // This is allowed because although function addresses wont be unique, we just care if its OURS -impl<'ui> Ui<'ui> { +impl Ui { /// Returns the current clipboard contents as text, or None if the clipboard is empty or cannot /// be accessed pub fn clipboard_text(&self) -> Option { diff --git a/imgui/src/columns.rs b/imgui/src/columns.rs index b282e91..ea00f3a 100644 --- a/imgui/src/columns.rs +++ b/imgui/src/columns.rs @@ -2,7 +2,7 @@ use crate::sys; use crate::Ui; /// # Columns -impl<'ui> Ui<'ui> { +impl Ui { #[doc(alias = "Columns")] pub fn columns(&self, count: i32, id: impl AsRef, border: bool) { unsafe { sys::igColumns(count, self.scratch_txt(id), border) } diff --git a/imgui/src/context.rs b/imgui/src/context.rs index a42aed6..e8f3e09 100644 --- a/imgui/src/context.rs +++ b/imgui/src/context.rs @@ -60,6 +60,8 @@ pub struct Context { // we also put it in an unsafecell since we're going to give // imgui a mutable pointer to it. clipboard_ctx: Box>, + + ui: Ui, } // This mutex needs to be used to guard all public functions that can affect the underlying @@ -241,6 +243,7 @@ impl Context { platform_name: None, renderer_name: None, clipboard_ctx: Box::new(ClipboardContext::dummy().into()), + ui: Ui(()), } } fn is_current_context(&self) -> bool { @@ -322,6 +325,7 @@ impl SuspendedContext { platform_name: None, renderer_name: None, clipboard_ctx: Box::new(ClipboardContext::dummy().into()), + ui: Ui(()), }; if ctx.is_current_context() { // Oops, the context was activated -> deactivate @@ -515,7 +519,7 @@ impl Context { /// Starts a new frame. #[deprecated(since = "0.9.0", note = "use `new_frame` instead")] - pub fn frame(&mut self) -> Ui<'_> { + pub fn frame(&mut self) -> &mut Ui { self.new_frame() } @@ -526,7 +530,7 @@ impl Context { /// Panics if the context uses a shared font atlas that is already borrowed. /// Do not attempt to borrow the context afterwards, if you are using a shared font atlas. #[doc(alias = "NewFame")] - pub fn new_frame(&mut self) -> Ui<'_> { + pub fn new_frame(&mut self) -> &mut Ui { // Clear default font if it no longer exists. This could be an error in the future let default_font = self.io().font_default; if !default_font.is_null() && self.fonts().get_font(FontId(default_font)).is_none() { @@ -540,8 +544,7 @@ impl Context { unsafe { sys::igNewFrame(); } - Ui { - phantom_data: std::marker::PhantomData, - } + + &mut self.ui } } diff --git a/imgui/src/drag_drop.rs b/imgui/src/drag_drop.rs index 2fbf0b5..a6f97f1 100644 --- a/imgui/src/drag_drop.rs +++ b/imgui/src/drag_drop.rs @@ -175,7 +175,7 @@ impl> DragDropSource { /// If you want to pass a simple integer or other "plain old data", take a look at /// [begin_payload](Self::begin_payload). #[inline] - pub fn begin<'ui>(self, ui: &Ui<'ui>) -> Option> { + pub fn begin<'ui>(self, ui: &Ui) -> Option> { self.begin_payload(ui, ()) } @@ -224,7 +224,7 @@ impl> DragDropSource { #[inline] pub fn begin_payload<'ui, P: Copy + 'static>( self, - ui: &Ui<'ui>, + ui: &Ui, payload: P, ) -> Option> { unsafe { @@ -266,7 +266,7 @@ impl> DragDropSource { #[inline] pub unsafe fn begin_payload_unchecked<'ui>( &self, - ui: &Ui<'ui>, + ui: &Ui, ptr: *const ffi::c_void, size: usize, ) -> Option> { @@ -283,7 +283,7 @@ impl> DragDropSource { } /// A helper struct for RAII drap-drop support. -pub struct DragDropSourceToolTip<'ui>(PhantomData>); +pub struct DragDropSourceToolTip<'ui>(PhantomData<&'ui Ui>); impl DragDropSourceToolTip<'_> { /// Creates a new tooltip internally. @@ -339,14 +339,14 @@ impl Drop for DragDropSourceToolTip<'_> { /// on this struct. Each of these methods will spit out a _Payload struct with an increasing /// amount of information on the Payload. The absolute safest solution is [accept_payload_empty](Self::accept_payload_empty). #[derive(Debug)] -pub struct DragDropTarget<'ui>(&'ui Ui<'ui>); +pub struct DragDropTarget<'ui>(&'ui Ui); impl<'ui> DragDropTarget<'ui> { /// Creates a new DragDropTarget, holding the [Ui]'s lifetime for the duration /// of its existence. This is required since this struct runs some code on its Drop /// to end the DragDropTarget code. #[doc(alias = "BeginDragDropTarget")] - pub fn new(ui: &'ui Ui<'ui>) -> Option { + pub fn new(ui: &'ui Ui) -> Option { let should_begin = unsafe { sys::igBeginDragDropTarget() }; if should_begin { Some(Self(ui)) diff --git a/imgui/src/draw_list.rs b/imgui/src/draw_list.rs index 27323b0..d58ef6d 100644 --- a/imgui/src/draw_list.rs +++ b/imgui/src/draw_list.rs @@ -75,7 +75,7 @@ enum DrawListType { pub struct DrawListMut<'ui> { draw_list_type: DrawListType, draw_list: *mut ImDrawList, - _phantom: PhantomData<&'ui Ui<'ui>>, + _phantom: PhantomData<&'ui Ui>, } // Lock for each variant of draw list. See https://github.com/imgui-rs/imgui-rs/issues/488 @@ -124,7 +124,7 @@ impl<'ui> DrawListMut<'ui> { } #[doc(alias = "GetWindowDrawList")] - pub(crate) fn window(_: &Ui<'ui>) -> Self { + pub(crate) fn window(_: &Ui) -> Self { Self::lock_draw_list(DrawListType::Window); Self { @@ -135,7 +135,7 @@ impl<'ui> DrawListMut<'ui> { } #[doc(alias = "GetBackgroundDrawList")] - pub(crate) fn background(_: &Ui<'ui>) -> Self { + pub(crate) fn background(_: &Ui) -> Self { Self::lock_draw_list(DrawListType::Background); Self { draw_list: unsafe { sys::igGetBackgroundDrawList() }, @@ -145,7 +145,7 @@ impl<'ui> DrawListMut<'ui> { } #[doc(alias = "GetForegroundDrawList")] - pub(crate) fn foreground(_: &Ui<'ui>) -> Self { + pub(crate) fn foreground(_: &Ui) -> Self { Self::lock_draw_list(DrawListType::Foreground); Self { draw_list: unsafe { sys::igGetForegroundDrawList() }, diff --git a/imgui/src/fonts/mod.rs b/imgui/src/fonts/mod.rs index 3f69efe..f1034a5 100644 --- a/imgui/src/fonts/mod.rs +++ b/imgui/src/fonts/mod.rs @@ -8,7 +8,7 @@ pub mod glyph; pub mod glyph_ranges; /// # Fonts -impl<'ui> Ui<'ui> { +impl Ui { /// Returns the current font #[doc(alias = "GetFont")] pub fn current_font(&self) -> &Font { diff --git a/imgui/src/input/keyboard.rs b/imgui/src/input/keyboard.rs index bab12f4..b425d9c 100644 --- a/imgui/src/input/keyboard.rs +++ b/imgui/src/input/keyboard.rs @@ -91,7 +91,7 @@ impl FocusedWidget { } /// # Input: Keyboard -impl<'ui> Ui<'ui> { +impl Ui { /// Returns the key index of the given key identifier. /// /// Equivalent to indexing the Io struct `key_map` field: `ui.io().key_map[key]` diff --git a/imgui/src/input/mouse.rs b/imgui/src/input/mouse.rs index 218b56c..269d4f2 100644 --- a/imgui/src/input/mouse.rs +++ b/imgui/src/input/mouse.rs @@ -89,7 +89,7 @@ fn test_mouse_cursor_variants() { } /// # Input: Mouse -impl<'ui> Ui<'ui> { +impl Ui { /// Returns true if the given mouse button is held down. /// /// Equivalent to indexing the Io struct with the button, e.g. `ui.io()[button]`. diff --git a/imgui/src/input_widget.rs b/imgui/src/input_widget.rs index 200df0f..6e3f073 100644 --- a/imgui/src/input_widget.rs +++ b/imgui/src/input_widget.rs @@ -166,7 +166,7 @@ pub struct InputText<'ui, 'p, L, H = &'static str, T = PassthroughCallback> { buf: &'p mut String, callback_handler: T, flags: InputTextFlags, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L: AsRef> InputText<'ui, 'p, L> { @@ -184,7 +184,7 @@ impl<'ui, 'p, L: AsRef> InputText<'ui, 'p, L> { /// your string. /// 3. Truncations by ImGui appear to be done primarily by insertions of `\0` to the truncation point. /// We will handle this for you and edit the string "properly" too, but this might show up in callbacks. - pub fn new(ui: &'ui Ui<'ui>, label: L, buf: &'p mut String) -> Self { + pub fn new(ui: &'ui Ui, label: L, buf: &'p mut String) -> Self { InputText { label, hint: None, @@ -343,7 +343,7 @@ pub struct InputTextMultiline<'ui, 'p, L, T = PassthroughCallback> { flags: InputTextFlags, size: [f32; 2], callback_handler: T, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L: AsRef> InputTextMultiline<'ui, 'p, L, PassthroughCallback> { @@ -361,7 +361,7 @@ impl<'ui, 'p, L: AsRef> InputTextMultiline<'ui, 'p, L, PassthroughCallback> /// your string. /// 3. Truncations by ImGui appear to be done primarily by insertions of `\0` to the truncation point. /// We will handle this for you and edit the string "properly" too, but this might show up in callbacks. - pub fn new(ui: &'ui Ui<'ui>, label: L, buf: &'p mut String, size: impl Into) -> Self { + pub fn new(ui: &'ui Ui, label: L, buf: &'p mut String, size: impl Into) -> Self { InputTextMultiline { label, buf, @@ -482,11 +482,11 @@ pub struct InputInt<'ui, 'p, L> { step: i32, step_fast: i32, flags: InputTextFlags, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L: AsRef> InputInt<'ui, 'p, L> { - pub fn new(ui: &'ui Ui<'ui>, label: L, value: &'p mut i32) -> Self { + pub fn new(ui: &'ui Ui, label: L, value: &'p mut i32) -> Self { InputInt { label, value, @@ -520,11 +520,11 @@ pub struct InputFloat<'ui, 'p, L> { step: f32, step_fast: f32, flags: InputTextFlags, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L: AsRef> InputFloat<'ui, 'p, L> { - pub fn new(ui: &'ui Ui<'ui>, label: L, value: &'p mut f32) -> Self { + pub fn new(ui: &'ui Ui, label: L, value: &'p mut f32) -> Self { InputFloat { label, value, @@ -559,7 +559,7 @@ macro_rules! impl_input_floatn { label: L, value: &'p mut T, flags: InputTextFlags, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L, T> $InputFloatN<'ui, 'p, L, T> @@ -568,7 +568,7 @@ macro_rules! impl_input_floatn { T: Copy + Into<$MINT_TARGET>, $MINT_TARGET: Into + Into<[f32; $N]>, { - pub fn new(ui: &'ui Ui<'ui>, label: L, value: &'p mut T) -> Self { + pub fn new(ui: &'ui Ui, label: L, value: &'p mut T) -> Self { $InputFloatN { label, value, @@ -614,7 +614,7 @@ macro_rules! impl_input_intn { label: L, value: &'p mut T, flags: InputTextFlags, - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, L, T> $InputIntN<'ui, 'p, L, T> @@ -623,7 +623,7 @@ macro_rules! impl_input_intn { T: Copy + Into<$MINT_TARGET>, $MINT_TARGET: Into + Into<[i32; $N]>, { - pub fn new(ui: &'ui Ui<'ui>, label: L, value: &'p mut T) -> Self { + pub fn new(ui: &'ui Ui, label: L, value: &'p mut T) -> Self { $InputIntN { label, value, diff --git a/imgui/src/layout.rs b/imgui/src/layout.rs index b0cdd16..b385d91 100644 --- a/imgui/src/layout.rs +++ b/imgui/src/layout.rs @@ -12,7 +12,7 @@ create_token!( ); /// # Cursor / Layout -impl<'ui> Ui<'ui> { +impl Ui { /// Renders a separator (generally horizontal). /// /// This becomes a vertical separator inside a menu bar or in horizontal layout mode. diff --git a/imgui/src/lib.rs b/imgui/src/lib.rs index 05fe3f2..34a7154 100644 --- a/imgui/src/lib.rs +++ b/imgui/src/lib.rs @@ -118,9 +118,7 @@ impl Context { /// A temporary reference for building the user interface for one frame #[derive(Debug)] -pub struct Ui<'ui> { - phantom_data: std::marker::PhantomData<&'ui Context>, -} +pub struct Ui(pub(crate) ()); /// This is our internal buffer that we use for the Ui object. /// @@ -128,7 +126,7 @@ pub struct Ui<'ui> { static mut BUFFER: cell::UnsafeCell = cell::UnsafeCell::new(string::UiBuffer::new(100)); -impl<'ui> Ui<'ui> { +impl Ui { /// This provides access to the backing scratch buffer that we use to write /// strings, along with null-terminators, before we pass normal Rust strs to /// Dear ImGui. @@ -198,29 +196,30 @@ impl<'ui> Ui<'ui> { pub fn clone_style(&self) -> Style { unsafe { *self.style() } } - /// Renders the frame and returns a reference to the resulting draw data - #[doc(alias = "Render", alias = "GetDrawData")] - pub fn render(self) -> &'ui DrawData { - unsafe { - sys::igRender(); - &*(sys::igGetDrawData() as *mut DrawData) - } - } + // /// Renders the frame and returns a reference to the resulting draw data + // #[doc(alias = "Render", alias = "GetDrawData")] + // pub fn render(self) -> &DrawData { + // unsafe { + // sys::igRender(); + // &*(sys::igGetDrawData() as *mut DrawData) + // } + // } } -impl<'a> Drop for Ui<'a> { - #[doc(alias = "EndFrame")] - fn drop(&mut self) { - if !std::thread::panicking() { - unsafe { - sys::igEndFrame(); - } - } - } -} +// TODO JACK YOU NEED TO MOVE THIS! +// impl Drop for Ui { +// #[doc(alias = "EndFrame")] +// fn drop(&mut self) { +// if !std::thread::panicking() { +// unsafe { +// sys::igEndFrame(); +// } +// } +// } +// } /// # Demo, debug, information -impl<'ui> Ui<'ui> { +impl Ui { /// Renders a demo window (previously called a test window), which demonstrates most /// Dear Imgui features. #[doc(alias = "ShowDemoWindow")] @@ -331,7 +330,7 @@ impl<'a> Default for Id<'a> { } } -impl<'ui> Ui<'ui> { +impl Ui { /// # Windows /// Start constructing a window. /// @@ -353,7 +352,7 @@ impl<'ui> Ui<'ui> { /// ui.text("An example"); /// }); /// ``` - pub fn window>(&'ui self, name: Label) -> Window<'ui, '_, Label> { + pub fn window>(&self, name: Label) -> Window<'_, '_, Label> { Window::new(self, name) } @@ -372,13 +371,13 @@ impl<'ui> Ui<'ui> { /// wt.unwrap().end() /// } /// ``` - pub fn child_window>(&'ui self, name: Label) -> ChildWindow<'ui, Label> { + pub fn child_window>(&self, name: Label) -> ChildWindow<'_, Label> { ChildWindow::new(self, name) } } // Widgets: Input -impl<'ui> Ui<'ui> { +impl<'ui> Ui { #[doc(alias = "InputText", alias = "InputTextWithHint")] pub fn input_text<'p, L: AsRef>( &'ui self, @@ -490,7 +489,7 @@ create_token!( ); /// # Tooltips -impl<'ui> Ui<'ui> { +impl Ui { /// Construct a tooltip window that can have any kind of content. /// /// Typically used with `Ui::is_item_hovered()` or some other conditional check. @@ -557,7 +556,7 @@ create_token!( /// imgui can disable widgets so they don't react to mouse/keyboard /// inputs, and are displayed differently (currently dimmed by an /// amount set in [`Style::disabled_alpha`]) -impl<'ui> Ui<'ui> { +impl Ui { /// Creates a scope where interactions are disabled. /// /// Scope ends when returned token is dropped, or `.end()` is @@ -619,7 +618,7 @@ impl<'ui> Ui<'ui> { } // Widgets: ListBox -impl<'ui> Ui<'ui> { +impl Ui { #[doc(alias = "ListBox")] pub fn list_box<'p, StringType: AsRef + ?Sized>( &self, @@ -686,7 +685,7 @@ impl<'ui> Ui<'ui> { // } } -impl<'ui> Ui<'ui> { +impl<'ui> Ui { #[doc(alias = "PlotLines")] pub fn plot_lines<'p, Label: AsRef>( &'ui self, @@ -695,9 +694,7 @@ impl<'ui> Ui<'ui> { ) -> PlotLines<'ui, 'p, Label> { PlotLines::new(self, label, values) } -} -impl<'ui> Ui<'ui> { #[doc(alias = "PlotHistogram")] pub fn plot_histogram<'p, Label: AsRef>( &'ui self, @@ -706,9 +703,7 @@ impl<'ui> Ui<'ui> { ) -> PlotHistogram<'ui, 'p, Label> { PlotHistogram::new(self, label, values) } -} -impl<'ui> Ui<'ui> { /// Calculate the size required for a given text string. /// /// This is the same as [calc_text_size_with_opts](Self::calc_text_size_with_opts) @@ -751,7 +746,7 @@ impl<'ui> Ui<'ui> { } /// # Draw list for custom drawing -impl<'ui> Ui<'ui> { +impl Ui { /// Get access to drawing API /// /// # Examples @@ -783,19 +778,19 @@ impl<'ui> Ui<'ui> { /// ``` #[must_use] #[doc(alias = "GetWindowDrawList")] - pub fn get_window_draw_list(&'ui self) -> DrawListMut<'ui> { + pub fn get_window_draw_list(&self) -> DrawListMut<'_> { DrawListMut::window(self) } #[must_use] #[doc(alias = "GetBackgroundDrawList")] - pub fn get_background_draw_list(&'ui self) -> DrawListMut<'ui> { + pub fn get_background_draw_list(&self) -> DrawListMut<'_> { DrawListMut::background(self) } #[must_use] #[doc(alias = "GetForegroundDrawList")] - pub fn get_foreground_draw_list(&'ui self) -> DrawListMut<'ui> { + pub fn get_foreground_draw_list(&self) -> DrawListMut<'_> { DrawListMut::foreground(self) } } diff --git a/imgui/src/list_clipper.rs b/imgui/src/list_clipper.rs index d4ba021..64a852e 100644 --- a/imgui/src/list_clipper.rs +++ b/imgui/src/list_clipper.rs @@ -22,7 +22,7 @@ impl ListClipper { self } - pub fn begin<'ui>(self, ui: &Ui<'ui>) -> ListClipperToken<'ui> { + pub fn begin(self, ui: &Ui) -> ListClipperToken<'_> { let list_clipper = unsafe { let list_clipper = sys::ImGuiListClipper_ImGuiListClipper(); sys::ImGuiListClipper_Begin(list_clipper, self.items_count, self.items_height); @@ -34,11 +34,11 @@ impl ListClipper { pub struct ListClipperToken<'ui> { list_clipper: *mut sys::ImGuiListClipper, - _phantom: PhantomData<&'ui Ui<'ui>>, + _phantom: PhantomData<&'ui Ui>, } impl<'ui> ListClipperToken<'ui> { - fn new(_: &Ui<'ui>, list_clipper: *mut sys::ImGuiListClipper) -> Self { + fn new(_: &Ui, list_clipper: *mut sys::ImGuiListClipper) -> Self { Self { list_clipper, _phantom: PhantomData, diff --git a/imgui/src/plothistogram.rs b/imgui/src/plothistogram.rs index 0822970..8613ee2 100644 --- a/imgui/src/plothistogram.rs +++ b/imgui/src/plothistogram.rs @@ -12,11 +12,11 @@ pub struct PlotHistogram<'ui, 'p, Label, Overlay = &'static str> { scale_min: f32, scale_max: f32, graph_size: [f32; 2], - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, Label: AsRef> PlotHistogram<'ui, 'p, Label> { - pub fn new(ui: &'ui Ui<'ui>, label: Label, values: &'p [f32]) -> Self { + pub fn new(ui: &'ui Ui, label: Label, values: &'p [f32]) -> Self { PlotHistogram { label, values, diff --git a/imgui/src/plotlines.rs b/imgui/src/plotlines.rs index a4d8441..ec9441b 100644 --- a/imgui/src/plotlines.rs +++ b/imgui/src/plotlines.rs @@ -12,11 +12,11 @@ pub struct PlotLines<'ui, 'p, Label, Overlay = &'static str> { scale_min: f32, scale_max: f32, graph_size: [f32; 2], - ui: &'ui Ui<'ui>, + ui: &'ui Ui, } impl<'ui, 'p, Label: AsRef> PlotLines<'ui, 'p, Label> { - pub fn new(ui: &'ui Ui<'ui>, label: Label, values: &'p [f32]) -> Self { + pub fn new(ui: &'ui Ui, label: Label, values: &'p [f32]) -> Self { PlotLines { label, values, diff --git a/imgui/src/popups.rs b/imgui/src/popups.rs index e0b4288..dba4190 100644 --- a/imgui/src/popups.rs +++ b/imgui/src/popups.rs @@ -118,7 +118,7 @@ impl<'p, Label: AsRef> PopupModal<'p, Label> { /// Consume and draw the PopupModal. /// Returns the result of the closure, if it is called. #[doc(alias = "BeginPopupModal")] - pub fn build T>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build T>(self, ui: &Ui, f: F) -> Option { self.begin_popup(ui).map(|_popup| f()) } @@ -128,7 +128,7 @@ impl<'p, Label: AsRef> PopupModal<'p, Label> { /// This should be called *per frame*, whereas [`Ui::open_popup`] /// should be called *once* when you want to actual create the popup. #[doc(alias = "BeginPopupModal")] - pub fn begin_popup<'ui>(self, ui: &Ui<'ui>) -> Option> { + pub fn begin_popup(self, ui: &Ui) -> Option> { let render = unsafe { sys::igBeginPopupModal( ui.scratch_txt(self.label), @@ -148,7 +148,7 @@ impl<'p, Label: AsRef> PopupModal<'p, Label> { } // Widgets: Popups -impl<'ui> Ui<'ui> { +impl Ui { /// Instructs ImGui to open a popup, which must be began with either [`begin_popup`](Self::begin_popup) /// or [`popup`](Self::popup). You also use this function to begin [PopupModal]. /// diff --git a/imgui/src/stacks.rs b/imgui/src/stacks.rs index 44e9632..0cc4b52 100644 --- a/imgui/src/stacks.rs +++ b/imgui/src/stacks.rs @@ -8,7 +8,7 @@ use std::mem; use std::os::raw::{c_char, c_void}; /// # Parameter stacks (shared) -impl<'ui> Ui<'ui> { +impl Ui { /// Switches to the given font by pushing it to the font stack. /// /// Returns a `FontStackToken` that must be popped by calling `.pop()` @@ -177,7 +177,7 @@ unsafe fn push_style_var(style_var: StyleVar) { } /// # Parameter stacks (current window) -impl<'ui> Ui<'ui> { +impl Ui { /// Changes the item width by pushing a change to the item width stack. /// /// Returns an `ItemWidthStackToken` that may be popped by calling `.pop()` @@ -337,13 +337,13 @@ create_token!( /// ImGui equivalent. We're phasing these out to make imgui-rs feel simpler to use. #[must_use] pub struct ItemFlagsStackToken<'a>( - std::marker::PhantomData>, + std::marker::PhantomData<&'a Ui>, mem::Discriminant, ); impl<'a> ItemFlagsStackToken<'a> { /// Creates a new token type. - pub(crate) fn new(_: &crate::Ui<'a>, kind: ItemFlag) -> Self { + pub(crate) fn new(_: &'a crate::Ui, kind: ItemFlag) -> Self { Self(std::marker::PhantomData, mem::discriminant(&kind)) } @@ -384,7 +384,7 @@ impl IdStackToken<'_> { } /// # ID stack -impl<'ui> Ui<'ui> { +impl<'ui> Ui { /// Pushes an identifier to the ID stack. /// This can be called with an integer, a string, or a pointer. /// @@ -462,7 +462,7 @@ impl<'ui> Ui<'ui> { /// }); /// ``` #[doc(alias = "PushId")] - pub fn push_id<'a, I: Into>>(&self, id: I) -> IdStackToken<'ui> { + pub fn push_id<'a, I: Into>>(&'ui self, id: I) -> IdStackToken<'ui> { let id = id.into(); unsafe { diff --git a/imgui/src/tables.rs b/imgui/src/tables.rs index ebd52dd..a5a9503 100644 --- a/imgui/src/tables.rs +++ b/imgui/src/tables.rs @@ -249,7 +249,7 @@ pub enum TableSortDirection { Descending, } -impl<'ui> Ui<'ui> { +impl Ui { /// Begins a table with no flags and with standard sizing contraints. /// /// This does no work on styling the headers (the top row) -- see either @@ -263,7 +263,7 @@ impl<'ui> Ui<'ui> { &self, str_id: impl AsRef, column_count: usize, - ) -> Option> { + ) -> Option> { self.begin_table_with_flags(str_id, column_count, TableFlags::empty()) } @@ -281,7 +281,7 @@ impl<'ui> Ui<'ui> { str_id: impl AsRef, column_count: usize, flags: TableFlags, - ) -> Option> { + ) -> Option> { self.begin_table_with_sizing(str_id, column_count, flags, [0.0, 0.0], 0.0) } @@ -302,7 +302,7 @@ impl<'ui> Ui<'ui> { flags: TableFlags, outer_size: [f32; 2], inner_width: f32, - ) -> Option> { + ) -> Option> { unsafe { sys::igBeginTable( self.scratch_txt(str_id), @@ -324,7 +324,7 @@ impl<'ui> Ui<'ui> { &self, str_id: impl AsRef, column_data: [TableColumnSetup<'a, Name>; N], - ) -> Option> { + ) -> Option> { self.begin_table_header_with_flags(str_id, column_data, TableFlags::empty()) } @@ -338,7 +338,7 @@ impl<'ui> Ui<'ui> { str_id: impl AsRef, column_data: [TableColumnSetup<'a, Name>; N], flags: TableFlags, - ) -> Option> { + ) -> Option> { self.begin_table_header_with_sizing(str_id, column_data, flags, [0.0, 0.0], 0.0) } @@ -354,7 +354,7 @@ impl<'ui> Ui<'ui> { flags: TableFlags, outer_size: [f32; 2], inner_width: f32, - ) -> Option> { + ) -> Option> { self.begin_table_with_sizing(str_id, N, flags, outer_size, inner_width) .map(|data| { for value in column_data { @@ -769,7 +769,7 @@ impl<'a, Name: AsRef> TableColumnSetup<'a, Name> { /// [should_sort]: Self::should_sort /// [specs]: Self::specs /// [set_sorted]: Self::set_sorted -pub struct TableSortSpecsMut<'ui>(*mut sys::ImGuiTableSortSpecs, PhantomData>); +pub struct TableSortSpecsMut<'ui>(*mut sys::ImGuiTableSortSpecs, PhantomData<&'ui Ui>); impl TableSortSpecsMut<'_> { /// Gets the specs for a given sort. In most scenarios, this will be a slice of 1 entry. diff --git a/imgui/src/tokens.rs b/imgui/src/tokens.rs index 7cf20b4..01adf84 100644 --- a/imgui/src/tokens.rs +++ b/imgui/src/tokens.rs @@ -19,11 +19,11 @@ macro_rules! create_token { ) => { #[must_use] $(#[$struct_meta])* - pub struct $token_name<'a>($crate::__core::marker::PhantomData>); + pub struct $token_name<'a>($crate::__core::marker::PhantomData<&'a crate::Ui>); impl<'a> $token_name<'a> { /// Creates a new token type. - pub(crate) fn new(_: &crate::Ui<'a>) -> Self { + pub(crate) fn new(_: &'a crate::Ui) -> Self { Self(std::marker::PhantomData) } diff --git a/imgui/src/utils.rs b/imgui/src/utils.rs index f819c26..144de1b 100644 --- a/imgui/src/utils.rs +++ b/imgui/src/utils.rs @@ -25,7 +25,7 @@ bitflags! { } /// # Item/widget utilities -impl<'ui> Ui<'ui> { +impl Ui { /// Returns `true` if the last item is hovered #[doc(alias = "IsItemHovered")] pub fn is_item_hovered(&self) -> bool { @@ -142,7 +142,7 @@ impl<'ui> Ui<'ui> { } /// # Miscellaneous utilities -impl<'ui> Ui<'ui> { +impl Ui { /// Returns `true` if the rectangle (of given size, starting from cursor position) is visible #[doc(alias = "IsRectVisibleNil")] pub fn is_cursor_rect_visible(&self, size: impl Into) -> bool { diff --git a/imgui/src/widget/color_editors.rs b/imgui/src/widget/color_editors.rs index e7157a5..e02e811 100644 --- a/imgui/src/widget/color_editors.rs +++ b/imgui/src/widget/color_editors.rs @@ -326,7 +326,7 @@ where /// Builds the color editor. /// /// Returns true if the color value was changed. - pub fn build(mut self, ui: &Ui<'_>) -> bool { + pub fn build(mut self, ui: &Ui) -> bool { // if let EditableColor::Float3(_) = self.value { self.flags.insert(ColorEditFlags::NO_ALPHA); @@ -508,7 +508,7 @@ where /// Builds the color editor. /// /// Returns true if the color value was changed. - pub fn build(self, ui: &Ui<'_>) -> bool { + pub fn build(self, ui: &Ui) -> bool { let as_vec4: MintVec4 = (*self.value).into(); let mut as_vec4: [f32; 4] = as_vec4.into(); @@ -694,7 +694,7 @@ where /// Builds the color picker. /// /// Returns true if the color value was changed. - pub fn build(mut self, ui: &Ui<'_>) -> bool { + pub fn build(mut self, ui: &Ui) -> bool { self.flags.insert(ColorEditFlags::NO_ALPHA); let mut value: [f32; 3] = (*self.value).into().into(); let changed = unsafe { @@ -886,7 +886,7 @@ where /// Builds the color picker. /// /// Returns true if the color value was changed. - pub fn build(mut self, ui: &Ui<'_>) -> bool { + pub fn build(mut self, ui: &Ui) -> bool { self.flags.insert(ColorEditFlags::NO_ALPHA); let mut value: [f32; 4] = (*self.value).into().into(); let ref_color = self.ref_color.map(|c| c.as_ptr()).unwrap_or(ptr::null()); @@ -1009,7 +1009,7 @@ impl> ColorButton { /// Builds the color button. /// /// Returns true if this color button was clicked. - pub fn build(self, ui: &Ui<'_>) -> bool { + pub fn build(self, ui: &Ui) -> bool { unsafe { sys::igColorButton( ui.scratch_txt(self.desc_id), @@ -1022,7 +1022,7 @@ impl> ColorButton { } /// # Widgets: Color Editor/Picker -impl<'ui> Ui<'ui> { +impl Ui { /// Initializes current color editor/picker options (generally on application startup) if you /// want to select a default format, picker type, etc. Users will be able to change many /// settings, unless you use .options(false) in your widget builders. diff --git a/imgui/src/widget/combo_box.rs b/imgui/src/widget/combo_box.rs index 342ef69..48cfdfe 100644 --- a/imgui/src/widget/combo_box.rs +++ b/imgui/src/widget/combo_box.rs @@ -142,7 +142,7 @@ impl, Preview: AsRef> ComboBox { /// /// Returns `None` if the combo box is not open and no content should be rendered. #[must_use] - pub fn begin<'ui>(self, ui: &Ui<'ui>) -> Option> { + pub fn begin(self, ui: &Ui) -> Option> { let should_render = unsafe { if let Some(preview_value) = self.preview_value { let (ptr_one, ptr_two) = ui.scratch_txt_two(self.label, preview_value); @@ -162,7 +162,7 @@ impl, Preview: AsRef> ComboBox { /// Returns the result of the closure, if it is called. /// /// Note: the closure is not called if the combo box is not open. - pub fn build R>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build R>(self, ui: &Ui, f: F) -> Option { self.begin(ui).map(|_combo| f()) } } @@ -177,7 +177,7 @@ create_token!( ); /// # Convenience functions -impl<'ui> Ui<'ui> { +impl Ui { /// Creates a combo box which can be appended to with `Selectable::new`. /// /// If you do not want to provide a preview, use [`begin_combo_no_preview`]. If you want @@ -193,7 +193,7 @@ impl<'ui> Ui<'ui> { &self, label: impl AsRef, preview_value: impl AsRef, - ) -> Option> { + ) -> Option> { self.begin_combo_with_flags(label, preview_value, ComboBoxFlags::empty()) } @@ -213,7 +213,7 @@ impl<'ui> Ui<'ui> { label: impl AsRef, preview_value: impl AsRef, flags: ComboBoxFlags, - ) -> Option> { + ) -> Option> { self._begin_combo(label, Some(preview_value), flags) } @@ -231,7 +231,7 @@ impl<'ui> Ui<'ui> { /// [begin_combo_no_preview_with_flags]: Ui::begin_combo_no_preview_with_flags #[must_use] #[doc(alias = "BeginCombo")] - pub fn begin_combo_no_preview(&self, label: impl AsRef) -> Option> { + pub fn begin_combo_no_preview(&self, label: impl AsRef) -> Option> { self.begin_combo_no_preview_with_flags(label, ComboBoxFlags::empty()) } @@ -250,7 +250,7 @@ impl<'ui> Ui<'ui> { &self, label: impl AsRef, flags: ComboBoxFlags, - ) -> Option> { + ) -> Option> { self._begin_combo(label, Option::<&'static str>::None, flags) } @@ -260,7 +260,7 @@ impl<'ui> Ui<'ui> { label: impl AsRef, preview_value: Option>, flags: ComboBoxFlags, - ) -> Option> { + ) -> Option> { let should_render = unsafe { let (ptr_one, ptr_two) = self.scratch_txt_with_opt(label, preview_value); sys::igBeginCombo(ptr_one, ptr_two, flags.bits() as i32) diff --git a/imgui/src/widget/drag.rs b/imgui/src/widget/drag.rs index 4b962ba..af25ca1 100644 --- a/imgui/src/widget/drag.rs +++ b/imgui/src/widget/drag.rs @@ -66,7 +66,7 @@ impl, T: DataTypeKind, F: AsRef> Drag { /// Builds a drag slider that is bound to the given value. /// /// Returns true if the slider value was changed. - pub fn build(self, ui: &Ui<'_>, value: &mut T) -> bool { + pub fn build(self, ui: &Ui, value: &mut T) -> bool { unsafe { let (one, two) = ui.scratch_txt_with_opt(self.label, self.display_format); @@ -91,7 +91,7 @@ impl, T: DataTypeKind, F: AsRef> Drag { /// Builds a horizontal array of multiple drag sliders attached to the given slice. /// /// Returns true if any slider value was changed. - pub fn build_array(self, ui: &Ui<'_>, values: &mut [T]) -> bool { + pub fn build_array(self, ui: &Ui, values: &mut [T]) -> bool { unsafe { let (one, two) = ui.scratch_txt_with_opt(self.label, self.display_format); @@ -208,7 +208,7 @@ where /// /// Returns true if the slider value was changed. #[doc(alias = "DragFloatRange2")] - pub fn build(self, ui: &Ui<'_>, min: &mut f32, max: &mut f32) -> bool { + pub fn build(self, ui: &Ui, min: &mut f32, max: &mut f32) -> bool { let label; let mut display_format = std::ptr::null(); let mut max_display_format = std::ptr::null(); @@ -251,7 +251,7 @@ where /// /// Returns true if the slider value was changed. #[doc(alias = "DragIntRange2")] - pub fn build(self, ui: &Ui<'_>, min: &mut i32, max: &mut i32) -> bool { + pub fn build(self, ui: &Ui, min: &mut i32, max: &mut i32) -> bool { unsafe { let label; let mut display_format = std::ptr::null(); diff --git a/imgui/src/widget/image.rs b/imgui/src/widget/image.rs index 4e2d115..d5aa4b3 100644 --- a/imgui/src/widget/image.rs +++ b/imgui/src/widget/image.rs @@ -58,7 +58,7 @@ impl Image { self } /// Builds the image - pub fn build(self, _: &Ui<'_>) { + pub fn build(self, _: &Ui) { unsafe { sys::igImage( self.texture_id.id() as *mut c_void, @@ -136,7 +136,7 @@ impl ImageButton { self } /// Builds the image button - pub fn build(self, _: &Ui<'_>) -> bool { + pub fn build(self, _: &Ui) -> bool { unsafe { sys::igImageButton( self.texture_id.id() as *mut c_void, diff --git a/imgui/src/widget/list_box.rs b/imgui/src/widget/list_box.rs index 922d871..e01bdc2 100644 --- a/imgui/src/widget/list_box.rs +++ b/imgui/src/widget/list_box.rs @@ -39,7 +39,7 @@ impl> ListBox { /// /// Returns `None` if the list box is not open and no content should be rendered. #[must_use] - pub fn begin<'ui>(self, ui: &Ui<'ui>) -> Option> { + pub fn begin(self, ui: &Ui) -> Option> { let should_render = unsafe { sys::igBeginListBox(ui.scratch_txt(self.label), self.size.into()) }; if should_render { @@ -52,7 +52,7 @@ impl> ListBox { /// Returns the result of the closure, if it is called. /// /// Note: the closure is not called if the list box is not open. - pub fn build R>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build R>(self, ui: &Ui, f: F) -> Option { self.begin(ui).map(|_list| f()) } } @@ -71,7 +71,7 @@ impl> ListBox { /// Builds a simple list box for choosing from a slice of values pub fn build_simple( self, - ui: &Ui<'_>, + ui: &Ui, current_item: &mut usize, items: &[V], label_fn: &L, diff --git a/imgui/src/widget/menu.rs b/imgui/src/widget/menu.rs index 0ac02e5..0b4a263 100644 --- a/imgui/src/widget/menu.rs +++ b/imgui/src/widget/menu.rs @@ -3,7 +3,7 @@ use crate::sys; use crate::Ui; /// # Widgets: Menus -impl<'ui> Ui<'ui> { +impl Ui { /// Creates and starts appending to a full-screen menu bar. /// /// Returns `Some(MainMenuBarToken)` if the menu bar is visible. After content has been @@ -12,7 +12,7 @@ impl<'ui> Ui<'ui> { /// Returns `None` if the menu bar is not visible and no content should be rendered. #[must_use] #[doc(alias = "BeginMainMenuBar")] - pub fn begin_main_menu_bar(&self) -> Option> { + pub fn begin_main_menu_bar(&self) -> Option> { if unsafe { sys::igBeginMainMenuBar() } { Some(MainMenuBarToken::new(self)) } else { @@ -167,7 +167,7 @@ impl, Shortcut: AsRef> MenuItem { /// /// Returns true if the menu item is activated. #[doc(alias = "MenuItemBool")] - pub fn build(self, ui: &Ui<'_>) -> bool { + pub fn build(self, ui: &Ui) -> bool { unsafe { let (label, shortcut) = ui.scratch_txt_with_opt(self.label, self.shortcut); sys::igMenuItem_Bool(label, shortcut, self.selected, self.enabled) @@ -176,7 +176,7 @@ impl, Shortcut: AsRef> MenuItem { #[doc(alias = "MenuItemBool")] /// Builds the menu item using a mutable reference to selected state. - pub fn build_with_ref(self, ui: &Ui<'_>, selected: &mut bool) -> bool { + pub fn build_with_ref(self, ui: &Ui, selected: &mut bool) -> bool { if self.selected(*selected).build(ui) { *selected = !*selected; true diff --git a/imgui/src/widget/misc.rs b/imgui/src/widget/misc.rs index f79e128..288c341 100644 --- a/imgui/src/widget/misc.rs +++ b/imgui/src/widget/misc.rs @@ -19,7 +19,7 @@ bitflags!( ); /// # Widgets: Miscellaneous -impl<'ui> Ui<'ui> { +impl Ui { /// Renders a clickable button. /// /// Returns true if this button was clicked. diff --git a/imgui/src/widget/progress_bar.rs b/imgui/src/widget/progress_bar.rs index eb641ef..514127d 100644 --- a/imgui/src/widget/progress_bar.rs +++ b/imgui/src/widget/progress_bar.rs @@ -62,7 +62,7 @@ impl> ProgressBar { } /// Builds the progress bar - pub fn build(self, ui: &Ui<'_>) { + pub fn build(self, ui: &Ui) { unsafe { sys::igProgressBar( self.fraction, diff --git a/imgui/src/widget/selectable.rs b/imgui/src/widget/selectable.rs index 48eceaa..2bfe93b 100644 --- a/imgui/src/widget/selectable.rs +++ b/imgui/src/widget/selectable.rs @@ -108,7 +108,7 @@ impl> Selectable { /// Builds the selectable. /// /// Returns true if the selectable was clicked. - pub fn build(self, ui: &Ui<'_>) -> bool { + pub fn build(self, ui: &Ui) -> bool { unsafe { sys::igSelectable_Bool( ui.scratch_txt(self.label), @@ -120,7 +120,7 @@ impl> Selectable { } /// Builds the selectable using a mutable reference to selected state. - pub fn build_with_ref(self, ui: &Ui<'_>, selected: &mut bool) -> bool { + pub fn build_with_ref(self, ui: &Ui, selected: &mut bool) -> bool { if self.selected(*selected).build(ui) { *selected = !*selected; true diff --git a/imgui/src/widget/slider.rs b/imgui/src/widget/slider.rs index 5b7d1c9..c473730 100644 --- a/imgui/src/widget/slider.rs +++ b/imgui/src/widget/slider.rs @@ -96,7 +96,7 @@ where /// Builds a slider that is bound to the given value. /// /// Returns true if the slider value was changed. - pub fn build(self, ui: &Ui<'_>, value: &mut Data) -> bool { + pub fn build(self, ui: &Ui, value: &mut Data) -> bool { unsafe { let (label, display_format) = ui.scratch_txt_with_opt(self.label, self.display_format); @@ -114,7 +114,7 @@ where /// Builds a horizontal array of multiple sliders attached to the given slice. /// /// Returns true if any slider value was changed. - pub fn build_array(self, ui: &Ui<'_>, values: &mut [Data]) -> bool { + pub fn build_array(self, ui: &Ui, values: &mut [Data]) -> bool { unsafe { let (label, display_format) = ui.scratch_txt_with_opt(self.label, self.display_format); @@ -222,7 +222,7 @@ where /// Builds a vertical slider that is bound to the given value. /// /// Returns true if the slider value was changed. - pub fn build(self, ui: &Ui<'_>, value: &mut Data) -> bool { + pub fn build(self, ui: &Ui, value: &mut Data) -> bool { unsafe { let (label, display_format) = ui.scratch_txt_with_opt(self.label, self.display_format); @@ -326,7 +326,7 @@ where /// Builds an angle slider that is bound to the given value (in radians). /// /// Returns true if the slider value was changed. - pub fn build(self, ui: &Ui<'_>, value_rad: &mut f32) -> bool { + pub fn build(self, ui: &Ui, value_rad: &mut f32) -> bool { unsafe { let (label, display_format) = ui.scratch_txt_two(self.label, self.display_format); diff --git a/imgui/src/widget/tab.rs b/imgui/src/widget/tab.rs index b1bedce..54b43a0 100644 --- a/imgui/src/widget/tab.rs +++ b/imgui/src/widget/tab.rs @@ -87,7 +87,7 @@ impl> TabBar { } #[must_use] - pub fn begin<'ui>(self, ui: &'ui Ui<'_>) -> Option> { + pub fn begin(self, ui: &Ui) -> Option> { ui.tab_bar_with_flags(self.id, self.flags) } @@ -95,7 +95,7 @@ impl> TabBar { /// Returns the result of the closure, if it is called. /// /// Note: the closure is not called if no tabbar content is visible - pub fn build R>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build R>(self, ui: &Ui, f: F) -> Option { self.begin(ui).map(|_tab| f()) } } @@ -144,7 +144,7 @@ impl<'a, T: AsRef> TabItem<'a, T> { } #[must_use] - pub fn begin<'ui>(self, ui: &'ui Ui<'_>) -> Option> { + pub fn begin(self, ui: &Ui) -> Option> { ui.tab_item_with_flags(self.label, self.opened, self.flags) } @@ -152,7 +152,7 @@ impl<'a, T: AsRef> TabItem<'a, T> { /// Returns the result of the closure, if it is called. /// /// Note: the closure is not called if the tab item is not selected - pub fn build R>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build R>(self, ui: &Ui, f: F) -> Option { self.begin(ui).map(|_tab| f()) } } @@ -166,7 +166,7 @@ create_token!( drop { sys::igEndTabItem() } ); -impl Ui<'_> { +impl Ui { /// Creates a tab bar and returns a tab bar token, allowing you to append /// Tab items afterwards. This passes no flags. To pass flags explicitly, /// use [tab_bar_with_flags](Self::tab_bar_with_flags). diff --git a/imgui/src/widget/text.rs b/imgui/src/widget/text.rs index 99bb0d4..abe38be 100644 --- a/imgui/src/widget/text.rs +++ b/imgui/src/widget/text.rs @@ -13,7 +13,7 @@ fn fmt_ptr() -> *const c_char { } /// # Widgets: Text -impl<'ui> Ui<'ui> { +impl Ui { /// Renders simple text #[doc(alias = "TextUnformatted")] pub fn text>(&self, text: T) { diff --git a/imgui/src/widget/tree.rs b/imgui/src/widget/tree.rs index 06abafc..4f18b16 100644 --- a/imgui/src/widget/tree.rs +++ b/imgui/src/widget/tree.rs @@ -241,7 +241,7 @@ impl, L: AsRef> TreeNode { /// rendered, the token can be popped by calling `.pop()`. /// /// Returns `None` if the tree node is not open and no content should be rendered. - pub fn push<'ui>(self, ui: &Ui<'ui>) -> Option> { + pub fn push(self, ui: &Ui) -> Option> { let open = unsafe { if self.opened_cond != Condition::Never { sys::igSetNextItemOpen(self.opened, self.opened_cond as i32); @@ -282,7 +282,7 @@ impl, L: AsRef> TreeNode { /// Returns the result of the closure, if it is called. /// /// Note: the closure is not called if the tree node is not open. - pub fn build R>(self, ui: &Ui<'_>, f: F) -> Option { + pub fn build R>(self, ui: &Ui, f: F) -> Option { self.push(ui).map(|_node| f()) } } @@ -292,11 +292,11 @@ impl, L: AsRef> TreeNode { /// If `TreeNodeFlags::NO_TREE_PUSH_ON_OPEN` was used when this token was created, calling `.pop()` /// is not mandatory and is a no-op. #[must_use] -pub struct TreeNodeToken<'a>(core::marker::PhantomData>, bool); +pub struct TreeNodeToken<'a>(core::marker::PhantomData<&'a crate::Ui>, bool); impl<'a> TreeNodeToken<'a> { /// Creates a new token type. This takes a bool for the no-op variant on NO_TREE_PUSH_ON_OPEN. - pub(crate) fn new(_: &crate::Ui<'a>, execute_drop: bool) -> Self { + pub(crate) fn new(_: &crate::Ui, execute_drop: bool) -> Self { Self(std::marker::PhantomData, execute_drop) } @@ -408,7 +408,7 @@ impl> CollapsingHeader { /// /// This is the same as [build](Self::build) but is provided for consistent naming. #[must_use] - pub fn begin(self, ui: &Ui<'_>) -> bool { + pub fn begin(self, ui: &Ui) -> bool { self.build(ui) } @@ -419,7 +419,7 @@ impl> CollapsingHeader { /// This is the same as [build_with_close_button](Self::build_with_close_button) /// but is provided for consistent naming. #[must_use] - pub fn begin_with_close_button(self, ui: &Ui<'_>, opened: &mut bool) -> bool { + pub fn begin_with_close_button(self, ui: &Ui, opened: &mut bool) -> bool { self.build_with_close_button(ui, opened) } @@ -428,7 +428,7 @@ impl> CollapsingHeader { /// Returns true if the collapsing header is open and content should be rendered. #[must_use] #[inline] - pub fn build(self, ui: &Ui<'_>) -> bool { + pub fn build(self, ui: &Ui) -> bool { unsafe { sys::igCollapsingHeader_TreeNodeFlags( ui.scratch_txt(self.label), @@ -442,7 +442,7 @@ impl> CollapsingHeader { /// Returns true if the collapsing header is open and content should be rendered. #[must_use] #[inline] - pub fn build_with_close_button(self, ui: &Ui<'_>, opened: &mut bool) -> bool { + pub fn build_with_close_button(self, ui: &Ui, opened: &mut bool) -> bool { unsafe { sys::igCollapsingHeader_BoolPtr( ui.scratch_txt(self.label), @@ -453,7 +453,7 @@ impl> CollapsingHeader { } } -impl Ui<'_> { +impl Ui { /// Constructs a new collapsing header #[doc(alias = "CollapsingHeader")] pub fn collapsing_header(&self, label: impl AsRef, flags: TreeNodeFlags) -> bool { diff --git a/imgui/src/window/child_window.rs b/imgui/src/window/child_window.rs index 8b83df4..5694305 100644 --- a/imgui/src/window/child_window.rs +++ b/imgui/src/window/child_window.rs @@ -9,7 +9,7 @@ use crate::Ui; #[derive(Copy, Clone, Debug)] #[must_use] pub struct ChildWindow<'ui, Label> { - ui: &'ui Ui<'ui>, + ui: &'ui Ui, name: Label, flags: WindowFlags, size: [f32; 2], @@ -22,7 +22,7 @@ pub struct ChildWindow<'ui, Label> { impl<'ui, Label: AsRef> ChildWindow<'ui, Label> { /// Creates a new child window builder with the given ID #[doc(alias = "BeginChildID")] - pub fn new(ui: &'ui Ui<'ui>, name: Label) -> ChildWindow<'ui, Label> { + pub fn new(ui: &'ui Ui, name: Label) -> ChildWindow<'ui, Label> { ChildWindow { ui, name, diff --git a/imgui/src/window/content_region.rs b/imgui/src/window/content_region.rs index 40c2190..27270e2 100644 --- a/imgui/src/window/content_region.rs +++ b/imgui/src/window/content_region.rs @@ -2,7 +2,7 @@ use crate::sys; use crate::Ui; /// # Content region -impl<'ui> Ui<'ui> { +impl Ui { /// Returns the current content boundaries (in *window coordinates*) #[doc(alias = "GetContentRegionMax")] pub fn content_region_max(&self) -> [f32; 2] { diff --git a/imgui/src/window/mod.rs b/imgui/src/window/mod.rs index 6183ca8..00e7f65 100644 --- a/imgui/src/window/mod.rs +++ b/imgui/src/window/mod.rs @@ -111,7 +111,7 @@ bitflags! { } /// # Window utilities -impl<'ui> Ui<'ui> { +impl Ui { /// Returns true if the current window appeared during this frame #[doc(alias = "IsWindowAppearing")] pub fn is_window_appearing(&self) -> bool { @@ -162,7 +162,7 @@ impl<'ui> Ui<'ui> { #[derive(Debug)] #[must_use] pub struct Window<'ui, 'a, Label> { - ui: &'ui Ui<'ui>, + ui: &'ui Ui, name: Label, opened: Option<&'a mut bool>, flags: WindowFlags, @@ -181,7 +181,7 @@ pub struct Window<'ui, 'a, Label> { impl<'ui, 'a, Label: AsRef> Window<'ui, 'a, Label> { /// Typically created via [`Ui::window`] - pub fn new(ui: &'ui Ui<'ui>, name: Label) -> Self { + pub fn new(ui: &'ui Ui, name: Label) -> Self { Window { ui, name, diff --git a/imgui/src/window/scroll.rs b/imgui/src/window/scroll.rs index 386002a..cd9174a 100644 --- a/imgui/src/window/scroll.rs +++ b/imgui/src/window/scroll.rs @@ -2,7 +2,7 @@ use crate::sys; use crate::Ui; /// # Window scrolling -impl<'ui> Ui<'ui> { +impl Ui { /// Returns the horizontal scrolling position. /// /// Value is between 0.0 and self.scroll_max_x().