- Bindings for
Key::F12..=Key::F24
,Key::AppBack
, andKey::AppForward
. MouseSource
enumeration which describes from what kind of device a mouse event originated.Ui::text_link
andUi::text_link_open_url
have been added, for working with hyperlinks.- Added support for
ChildFlags
forChildWindow
. Ui::separator_with_text
, which is like aUi::separator
but with text input.ItemFlags
to be used withUi::push_item_flags
. See note inDeprecated
for more on that.- New style parameters have been added. Note especially
Style::hover_flags_for_tooltip_mouse
andStyle::hover_flags_for_tooltip_nav
which describe the default flags when hovering items. Style::default
,StyleColor::dark_colors
,StyleColor::light_colors
, andStyleColor::classic_colors
have been added. Note though thatStyle::use_x_colors
is still present, as it avoids taking up a lot of stack space like theStyleColor
s do.
- Keys now communicate with
imgui
in a far simpler manner -- rather than going through a complex keymap, they instead simply notate if they are or are not down toimgui
directly. Multiple functions, such asUi::key_index
,Ui::is_key_index_down
,Ui::is_key_index_pressed
,Ui::is_key_index_pressed_no_repeat
, andUi::key_index_pressed_amount
were removed. Use the corresponding non-index
version. - The default
oversample_h
on theFontConfig
has changed to 2 instead of 3. SelectableFlags::DONT_CLOSE_POPUPS
has been renamed toSelectableFlags::NO_AUTO_CLOSE_POPUPS
SelectableFlags::ALLOW_ITEM_OVERLAP
has been renamed toSelectableFlags::ALLOW_OVERLAP
.TreeNodeFlags::ALLOW_ITEM_OVERLAP
has been renamed toTreeNodeFlags::ALLOW_OVERLAP
.DragDropFlags::SOURCE_AUTO_EXPIRE_PAYLOAD
has been renamed toDragDropFlags::PAYLOAD_AUTO_EXPIRE
.Ui::begin_tooltip
now returns anOption
, as sometimes tooltips fail to begin.StyleColor::TabActive
has been renamed toStyleColor::TabSelected
.StyleColor::TabActive
has been renamed toStyleColor::TabSelected
.StyleColor::TabUnfocused
has been renamed toStyleColor::TabDimmed
.StyleColor::TabUnfocusedActive
has been renamed toStyleColor::TabDimmedSelected
.ItemHoveredFlags
has been renamed toHoveredFlags
.Ui::set_item_allow_overlap
has been replaced withUi::set_next_item_allow_overlap
: Instead of callingUi::set_item_allow_overlap
after calling an item, callUi::set_next_item_allow_overlap
before calling the item.
ChildWindow::always_use_window_padding
andChildWindow::borders
have both been deprecated in favor of using the newChildWindow::child_flags
API.Ui::push_allow_keyboard_focus
andUi::push_button_repeat
have been deprecated in favor of using the newUi::push_item_flag
instead. This function itself was deprecated in the past, but Dear ImGui has changed directions and it will now be used going forward instead of many individual methods.
GetWindowContentRegionMax
,GetWindowContentRegionMin
,GetContentRegionMax
-- see this issue for more information.WindowFlags::ALWAYS_USE_WINDOW_PADDING
was removed, as this only pertained toChildWindow
, which now has a dedicated API for it (see in theAdded
section).
- Updated many dependencies - in particular the new winit release is a bit change.
- Fix some unsaftey issue in the handling of text - PR #746
- Added
Io::add_key_analog_event
for supporting analog key events such as gamepad sticks - PR #728 - Added
begin_popup_context_*
methods - PR #738 - Use correct alpha blending function (problem described here - PR #756
- Minimum supported version of Rust (MSRV) is now 1.70 - PR #747
- Added API to add callbacks to draw list for advanced custom drawing - PR#702
- Added
OwnedDrawData
API for usage like multithreaded renderers - PR#721 - MSRV bumped to 1.64 (will likely still work in 1.60 with pinning of some indirect dependencies) - PR#718
- Examples now use
copypasta
crate for clipboard handling, as it is more maintained - PR#715 - Update glow to 0.12 (from v0.10)- PR#711 (and also PR#712)
- Fixed handling of modifiers keys - PR#710
- There is a new "viewport" renderer which uses the docking branch's multi-viewport handling! - PR#619
0.10.0 - 2023-01-16
-
Breaking: Removed
im_str!
macro - deprecated since v0.8.ui.button(im_str!("Example"))
just becomesui.button("Example")
andui.button(&im_str!("My age is {}", 100))
becomesui.button!(format!("My age is {}", 100))
-
Breaking: Updated to Dear ImGui 1.89.2.
This introduces some breaking changes like the
imgui::Key
now contains a full set of keys (previously it was a small subset of to cover copy/paste/undo)Also note
Key::KeyPadEnter
was renamed toKeypadEnter
-
freetype feature can now locate required libraries either via
pkg-config
orvcpkg
-
Breaking (partially):
ImageButton::new
is now deprecated, replaced byui.image_button_config(...)
.The old
new
method should be backwards-compatible in most common situations. Exception is if theImageButton
builder struct was explicitly specified, say in a method likefn configure_my_button(button: &mut imgui::ImageButton)
(in which case either changeImageButton
toImageButtonDeprecated
, or update to the new constructor) -
Breaking:
Key
,StyleColor
, andStyleVar
enums are now marked as non-exhaustive. -
Updated
imgui-winit-support
andimgui-sdl2-support
to use new "event based IO" (detailed in the Dear ImGui 1.87 release notes, but basically it aims to improve behaviour at low frame rates). Existing custom backends should work without changes, but are advised to update to the new API. -
Accept
usize
andisize
for parameters which useDataTypeKind
(such asUi::input_scalar
). This treats them asu64
/i64
(oru32
/i32
) as appropriate -
The
examples
directories have been reorganized slightly.There is now an example in
imgui-glium-renderer
showing basic usage, consistent with the glow.
0.9.0 - 2022-11-30
-
MSRV is now 1.57. We soft-updated to this to Rust 1.54 in the v0.8.0 release (with a feature
min-const-generics
), which has now been removed (and as such, we resume having no default features). Rust 1.56 is required for the Rust 2021 edition, and 1.57 is required by some dependencies -
Upgraded from Dear ImGui 1.84.2 to 1.86. See the 1.85 and the 1.86 release notes
-
Upgraded winit version to
v0.27
forimgu-winit-support
-
The
imgui-winit-support
andimgui-glow-renderer
re-exportwinit
andglow
respectively to make setup easier for simple projects. PR #676 -
BREAKING: Removed
push_style_colors
andpush_style_vars
. Instead, usepush_style_color
in a loop. This was deprecated in0.7.0
and should have been removed in0.8.0
. This also removes their associated tokens. -
BREAKING: Ui now does not have a lifetime associated with it, but is only ever given to users in the form of
&mut Ui
. Additionally, therender
function has been moved to theContext
instead ofUi
. -
BREAKING:
SharedFontAtlas
now hides anRc
within its wrapper -- this simplifies the codebase and more accurately reflects how we expectSharedFontAtlas
to be used (ie, you're probably going to set it up once, and then give it around, rather than constantly edit it).SharedFontAtlas
users, if this change is very bad for you, please let us know with issues! -
BREAKING:
Id
is now a simpler facade, but requires theUi
struct to generate.push_id
, equally, has been split into multiple functions for simplicity. New exampleimgui-examples/examples/id_wrangling.rs
shows some of thepush_id
usage -
Added
imgui-sdl2-support
to provide a simple ImGui platform wrapper. Please give it a try! Thank you to @NightShade256 for implementing this here -
BREAKING: We now only support
glium 0.30
. We're in a difficult position supporting arbitraryglium
versions in our renderer, sinceglium
is only in a semi-maintained state.glium
users, please get in contact in issues to let us know what will work best for your needs! -
Added
InputScalar
andInputScalarN
. These are the core Input modules that Dear ImGui uses, and ultimately whatInputFloat
andInputInt
turn into. See deprecation ofInputFloat
andInputInt
as a result. Thank you to @EmbersArc for implementing this here. -
BREAKING:
ui.input_int
andui.input_float
now returnInputScalar<'ui, 'l, f32/i32>
, instead ofInputFloat
/InputInt
. This struct has all of the same flags asInputFloat
andInputInt
did. -
DEPRECATED:
InputFloat
andInputInt
have been deprecated.ui.input_float
andui.input_int
are not, however, and instead will just callinput_scalar
as appropriate. Therefore, please switch your code toui.input_float
orui.input_int
. -
Added
add_polyline
method toDrawListMut
, which binds to Dear ImGui'sAddPolyline
andAddConvexPolyFilled
-
BREAKING: The following structs have had their
new
method changed and deprecated; they now also takeui
in theirnew
, but you should create them on theUi
struct instead.Window
should be made withui.window
- e.gui.window("My Window").build(|| { ui.text("Contents") });
ChildWindow
should be made withui.child_window
MenuItem
should be made withui.menu_item
orui.menu_item_config
.DragDropSource
andDragDropTarget
should be made withui.drag_drop_source_config
orui.drag_drop_target
. Both of these methods, and the DragDrop API in general, are likely to change.
-
Added
docking
feature which builds against the upstream docking branch. Only basic API is exposed currently, just enough to enable the dockingimgui_context.io_mut().config_flags |= imgui::ConfigFlags::DOCKING_ENABLE;
- a safe API for programtically docking windows and so on will be added later (until then the internal docking API can be accessed,imgui::sys::igDockBuilderDockWindow
and so on) -
Fixed dpi related issues when not in
HiDpiMode::Default
mode. The wrong scale factor was used when converting winit physical size to logical size, causing the imgui display size to be incorrect. -
Fixed creation of
.crate
(published to crates.io) so required files for freetype feature are included -
Added binding to TextFilter API. PR #658
0.8.0 - 2021-09-17
Welcome to the 0.8.0
update. This is one of the largest updates imgui-rs has ever seen; it will generate errors in a 0.7
project, but hopefully it should be both quick to fix, and enjoyable to update. See our release page for more information and a list of contributors to this cycle. Thank you to everyone who uses imgui-rs
, files issues, and spend their time and effort to PR new changes into the codebase. Because of all that effort, this is by far the best imgui-rs
has looked!
-
Removed ImStr and ImString from the API. Currently
im_str!
is deprecated and will be removed in 0.9.0. To change your code:- If you were just wrapping a string literal, like
im_str!("button")
, just use"button"
. (Help: the regexim_str!\("((?:(?=(\\?))\2.)*?)"\)
, replacing matches with"$1"
, can get the majority of these quickly.); - If you were formatting, like
&im_str!("My age is {}", 100)
, you can now just use format likeformat!("My age is {}, 100)
. Notice that due to the trait bounds, you can pass the string in directly too.
- If you were just wrapping a string literal, like
-
BREAKING: Most tokens through the repository (eg.
WindowToken
,TabBarToken
,FontStackToken
, etc) now allow for permissive dropping -- i.e, you don't need to actually call the.end()
method on them anymore. In exchange, these tokens have taken on a lifetime, which allows them to be safe. This could make some patterns impossible. Please file an issue if this causes a problem.end()
no longer takesUi
. This is a breaking change, but hopefully should be trivial (and perhaps nice) for users to fix. Simply delete the argument, or add a_
before the token's binding name and allow it to be dropped on its own. In our code, we tend to write these now like:
if let Some(_t) = ui.begin_popup("example") {
// your code here
}
-
BREAKING: Created
with_x
variants for most functions which previously took multiple parameters where some had default arguments in the C++. This makes calling most functions simpler and more similar to the C++.- The most likely breaking changes users will see is
button
andsame_line
now take one fewer parameter -- if you were callingbutton
with[0.0, 0.0]
, simply delete that -- otherwise, callbutton_with_size
. Similarly, forsame_line
, if you were passing in0.0.
simply delete that argument. Otherwise, callsame_line_with_pos
.
- The most likely breaking changes users will see is
-
ADDED: support for the
tables
API which was added in dear imgui1.80
. We currently have this feature gated behindtables-api
. You should feel safe to use this in stable production, but be aware of two things:- The tables API is marked as "beta" meaning that it may change with fewer stability promises. This is unlikely and it seems fairly settled.
- There are a few cases where the tables API will segfault by dereferencing a
NULL
where it should insteadASSERT
and crash. This is simply annoying because you won't get a stacktrace. See here for more info on that.. If this is fixed upstream, we will issue a patch.
-
ADDED: an
imgui-glow-renderer
which targetsglow 0.10
. Before release, this will be updated to target current0.11
glow when further features are added. Thank you to @jmaargh for the work implementing this here! -
UPGRADED: from v1.80 to Dear ImGui v1.84.2 See the Dear ImGui v1.84 release notes for more information. Thank you to @dbr for doing the work (twice actually) of upgrading the repository.
-
BREAKING: Reworked how callbacks on
InputText
andInputTextMultiline
work.- REMOVED
.callback_name()
methods in favor of one method:.callback(FLAGS, CallbackStruct)
. - Wrapped callback kinds into their own enums,
InputTextCallback
andInputTextCallbackMultiline
. - Created a trait,
InputTextCallbackHandler
. - To see how to create an InputText callback, see
examples/text_callback.rs
. - Finally, please note that editing an
&mut String
which contains\0
within it will produce surprising truncation within ImGui. If you need to edit such a string, please pre-process it.
- REMOVED
-
ADDED:
begin_disable
andbegin_enable
methods. These add (finally) support for disabling any widget. Thank you to @dbr for implementing this here. -
BREAKING: MSRV is now 1.54. This is gives us access to min-const-generics, which we use in a few places, but will gradually use more. Because this is the first time we've bumped MSRV intentionally, we have added a new feature
min-const-generics
, which is enabled by default. If you are pre-1.54, you can hang onto this update by disabling that feature. In our next update, this feature will be removed and we will commit to our MSRVs going forward. Thank you to @dbr for changing our CI infrastructure to support better MSRVs here. -
BREAKING: Changed default version of Winit in
imgui-winit-support
towinit 0.25
. Thank you to @repi for implementing this here.- Removed automatically adding default features for
imgui-winit-support
with the exception of the current default winit feature/dep version. If you want to not have the default features of winit with 0.25, setdefault-features = false
and addwinit-25
as a normal feature. Thank you to @dzil123 for the work implementing this here!
- Removed automatically adding default features for
-
ADDED: Support for the freetype font rasterizer. Enabled by the non-default
freetype
feature, e.gimgui = {version = "...", features=["freetype"]})
Thank you to @dbr for this work implementing this here. -
ADDED:
doc alias
support throughout the repository. You can now, inside the docs, search forimgui-rs
functions by theirDear ImGui
C++ names. For example, searching forInputText
will pull upUi::input_text
. This was quite a lot of documentation and effort, so thank you to @toyboot4e for implementing this here. -
ADDED: text hinting into
InputText
. Thank you to @lwiklendt for implementing this here. -
BREAKING: Reworked
.range
calls onSlider
,VerticalSlider
, andDrag
to simply take two min and max values, and requires that they are provided in the constructor.- To update without changing behavior, use the range
T::MIN
andT::MAX
for the given numerical type (such asi8::MIN
andi8::MAX
). - Using
.range
is still maintained for simplicity, but will likely be deprecated in 0.9 and removed in 0.10!
- To update without changing behavior, use the range
-
DrawListMut
has new methods to draw images- The methods are
add_image
,add_image_quad
, andadd_image_rounded
. Theimgui-examples/examples/custom_textures.rs
has been updated to show their usage. - Additionally the
imgui::draw_list
module is now public, which contains the various draw list objects. While theadd_*
methods are preferred,imgui::draw_list::Circle::new(&draw_list_mut, ...).build()
is equivalent - Finally, we have relaxed the limits around having multiple draw lists such that you can have multiple mutable draw lists of different kinds (ie, a
foreground
and abackground
at the same time.). - Thank you to @dbr for implementing these changes.
- The methods are
-
ADDED: the
ButtonFlags
which previously preventedinvisible_button
from being usable. Thank you to @dbr for implementing this change here. -
BREAKING:
PopupModal
'snew
was reworked so that it didn't takeUi
untilbuild
was called. This is a breaking change if you were invoking it directly. Simply move yourui
call tobuild
orbegin
. -
BREAKING: Restored methods to access keyboard based on backend-defined keyboard map indexes. These allow access to most keys, not just those defined in the small subset of
imgui::Keys
(note the available keys may be expanded in future by imgui PR #2625)- The new methods on
imgui::Ui
areis_key_index_down
,is_key_index_pressed
,is_key_index_pressed_no_repeat
,is_key_index_released
,is_key_index_released
- For example
ui.is_key_released(imgui::Key::A)
is same asui.is_key_index_released(winit::events::VirtualKeyCode::A as i32)
when using the winit backend
- The new methods on
-
BREAKING: Modifies
build
style methods to allow the provide closure to return a value. The build call will then return Some(value) if the closure is called, and None if it isn't.- The most likely breaking changes users will see is that they will need to add semicolons after calling
build
, because these function no longer return()
. - Thank you to @AngelOfSol for implementing this here.
- The most likely breaking changes users will see is that they will need to add semicolons after calling
-
BREAKING: Removed
imgui::legacy
which contained the old style of flags. The remaining flags inimgui::legacy
have been updated to be consistent with other flags in the project.imgui::legacy::ImGuiDragDropFlags
were accidentally not cleared when they were remade indrag_drop.rs
in v0.7.0.imgui::legacy::ImGuiInputTextFlags
is nowimgui::input_widgets::InputTextFlags
imgui::legacy::ImGuiTreeNodeFlags
is nowimgui::widget::tree::TreeNodeFlags
imgui::legacy::ImDrawListFlags
is nowimgui::draw_list::DrawListFlags
-
Full (32-bit) unicode support is enabled in Dear Imgui (e.g.
-DIMGUI_USE_WCHAR32
is enabled now). Previously UTF-16 was used internally.- BREAKING: Some parts of the font atlas code now use
char
(oru32
) instead ofu16
to reflect this.- Note:
u32
is used overchar
in some situations, such as when surrogates are allowed
- Note:
- BREAKING (sorta): Dear Imgui now will use 32 bits for character data internally. This impacts the ABI, including sizes of structs and such, and can break some low level or advanced use cases:
- If you're linking against extensions or plugins to Dear Imgui not written in Rust, you need to ensure it is built using
-DIMGUI_USE_WCHAR32
.- However, if the
DEP_IMGUI_DEFINE_
vars are used properly, this is non-breaking.
- However, if the
- If you're using
features="wasm"
to "link" against emscripten-compiled Dear Imgui, you need to ensure you use-DIMGUI_USE_WCHAR32
when compile the C and C++ code.- If you're using
DEP_IMGUI_DEFINE_
s for this already, then no change is needed.
- If you're using
- If you're using
.cargo/config
to apply a build script override and link against a prebuiltDear Imgui
(or something else along these lines), you need to ensure you link with a version that was built using-DIMGUI_USE_WCHAR32
.
- If you're linking against extensions or plugins to Dear Imgui not written in Rust, you need to ensure it is built using
- BREAKING: Some parts of the font atlas code now use
0.7.0 - 2021-02-04
-
Upgrade to Dear ImGui v1.80. (Note that the new table functionality is not yet supported, however)
-
Ui::key_index()
is now called internally when needed, and the variousis_key_foo
now take aKey
directly: #416is_key_down
,is_key_pressed
,is_key_released
andkey_pressed_amount
now take aKey
instead ofu32
(breaking).key_index
is no longer public (breaking). If you need access to the key map, it can be accessed asui.io().key_map[key]
(If you need to do this, file a bug, since I'm open to exposing this if there's actually a use case).
-
winit
0.23/0.24 handling has been (hopefully) fixed: #420 (breaking, see also #412).imgui-winit-support
'swinit-23
feature no longer supportswinit
version0.24
(this caused an unintentional semver breakage before, unfortunately).imgui-winit-support
has a newwinit-24
feature for 0.24 support.- By default
imgui-winit-support
feature now enableswinit-24
, and notwinit-23
(by default it will always enable the latest).
-
The
imgui
crate no longer depends ongfx
orglium
directly: #420 (breaking, related to the previous change).- That is, the
gfx
andglium
features are removed to reduce version compatibility issues going forward.- This only matters if you manually implement
gfx
orglium
renderers without using theimgui-glium-renderer
orimgui-gfx-renderer
crates. - In the (somewhat unlikely) case you were relying on these this, you should define your own vertex type that's layout-compatible with
imgui::DrawVert
, and replace calls toimgui::DrawList::vtx_buffer()
withimgui::DrawList::transmute_vtx_buffer::<MyDrawVert>()
. You can seeimgui_glium_renderer::GliumDrawVert
andimgui_gfx_renderer::GfxDrawVert
types respectively for examples of this, if needed, but it should be straightforward enough if you're already implementing a renderer from scratch.
- This only matters if you manually implement
- This is admittedly less convenient, but avoids depending on any specific version of
gfx
orglium
in the coreimgui
crate, which will ease maintenance and reduce unintentional breakage in the future.
- That is, the
-
Non-window DrawList support has been fixed/improved: #414
WindowDrawList
has been renamed toDrawListMut
, to reflect that it may refer to other kinds of draw lists, and is mutable, unlikeimgui::DrawList
(breaking).Ui::get_background_draw_list()
has been fixed when used outside of a window context, and now has an example.Ui::get_foreground_draw_list()
has been added, analogous toUi::get_background_draw_list()
.
-
Added drag drop support, with a safe and an unsafe variant: #428
DragDropSource
allows users to create a dragdrop payload which is either empty, of'static + Copy
data, orunsafe
, allowing for theoretically arbitrary payloads.DragDropTarget
allows users to accept any of the above payloads.- Extensive documentation has been made on all of these features, hopefully as a target for future features.
-
ImColor
(which is a wrapper aroundu32
) has been renamed toImColor32
in order to avoid confusion with theImColor
type from the Dear ImGui C++ code (which is a wrapper aroundImVec4
). In the future anImColor
type which maps more closely to the C++ one will be added.- Additionally, a number of constructor and accessor methods have been added to it
ImColor
, which areconst fn
where possible.
- Additionally, a number of constructor and accessor methods have been added to it
-
The
im_str!
macro can now be used inconst
contexts (when theformat!
version is not used). -
im_str!
now verifies that the parameter has no interior nuls at compile time. This can be avoided to get the old (truncating) behavior by forcing it to use theformat!
-like version, e.g.im_str!("for_some_reason_this_should_be_truncated\0 there {}", "")
.- This is not recommended, and is probably not useful.
-
Many functions are now
const fn
. -
A large number of small functions are now
#[inline]
, but many still aren't, so you probably will want to build with LTO for release builds if you useimgui
heavily. -
The
io.config_windows_memory_compact_timer
flag has been renamed toio.config_memory_compact_timer
. This follows the similar rename in the C++ ImGui, and was done because it no longer only applies to window memory usage. -
The variants of
ColorEditInputMode
andColorEditDisplayMode
have been renamed to be CamelCase instead of upper case (e.g.ColorEditFooMode::RGB
=>ColorEditFooMode::Rgb
).- However, this change is probably not breaking (in practice if not in theory) because const aliases using the old names are provided.
0.6.1 - 2020-12-16
- Support for winit 0.24.x
- Note: this change was accidentally semver-breaking, see the caveat below.
- Support multiple simultaneous winit versions in imgui-winit-support:
- The latest will be if more than one is specified, and a single warning will be logged in debug builds (based on
cfg!(debug_assertions)
) at runtime if multiple are specified. - This is intended to make features behave a bit more closely to additively, and reduce the pain of using this crate in a larger workspace.
- The latest will be if more than one is specified, and a single warning will be logged in debug builds (based on
- Avoid dropping mouse events when press/release are on the same frame (macos)
- Substantial repository layout reorganization
Note from the future: imgui-winit-support@0.6.1
has been yanked. I don't believe the breakage impacted the other crates so I'm leaving those to avoid impacting non-winit
usages.
This release accidentally broke semver, and should have been 0.7.0. It will be yanked when 0.7.0 is released, unless there are objections.
This happened when updating the glium/winit/glium versions, adding support for winit 0.24
and related. Unfortunately, while an attempt to avoid breakage was made, it happened regardless. This mainly happened as it was the holidays and not enough attention was paid to the changes in an urgent-sounding request for supporting the new version, and more care will be taken in the future to avoid cutting a hasty release without adequate testing.
As mentioned, the 0.6.1 release of imgui-winit-support
has been yanked.
0.6.0 - 2020-11-15
Io::peek_input_characters
- Upgrade to cimgui / imgui 1.79
- Upgrade to winit 0.23
- Bump minimum Rust version to 1.43
0.5.0 - 2020-09-20
- Support for ConfigFlags::RENDERER_HAS_VTX_OFFSET in imgui-glium-renderer and imgui-gfx-renderer. This makes it possible to output large meshes (e.g. complex UIs) without problems when using these renderers
Ui::begin_tooltip
to support using tooltips with stack tokens instead of closures- API for accessing the background drawlist
- Tab bar / tab item API
- Redesigned drag slider API
- Upgrade to cimgui / imgui 1.78
- Store per-texture sampler parameters in imgui-glium-renderer to support customizing them
- Slider widget constructors no longer require the range parameter. Call the range function on the builder to set the range.
- Reduce unnecessary winit cursor changes which earlier caused cursor flickering or invalid cursors on some platforms (at least Windows)
- Various things that were deprecated in imgui-rs 0.4.0
0.4.0 - 2020-05-27
- WebAssembly FFI shells
- Redesign tree / collapsing header API
- Bump minimum Rust version to 1.40 (at least xml-rs crate requires it)
- Upgrade to glium 0.27 / winit 0.22
- Switch Glium renderer to use GL_CLAMP_TO_BORDER
- Bug in font name length checking
0.3.1 - 2020-03-16
- Narrowed supported winit version range in imgui-winit-support
0.3.0 - 2020-02-15
- Add
ChildWindow::movable
- ImString now implements fmt::Write
- Upgrade to cimgui / imgui 1.75
- Bump minimum Rust version to 1.38 (at least backtrace crate requires it)
- Upgrade to glium 0.26 / winit 0.21
- Switch imgui-winit-support to 0.20+ by default. Winit 0.19 support is still
available via the
winit-19
feature flag - Resources used by examples are no longer included in the published crate
- Various things that were deprecated in imgui-rs 0.2.0
- Fix toggling behavior on using
MenuItem::build_with_ref
andSelectable::build_with_ref
. - ImString nul terminator handling
0.2.1 - 2019-09-09
- Fix backspace handling on macOS
- Fix ImageButton bool return value
0.2.0 - 2019-09-07
- Window scrolling API
- Full support for the column API
- Almost all small utility functions from upstream API
- Support for winit 0.20 alpha via
winit-20
feature
- Redesigned window API
- Redesigned progress bar API
- Redesigned color editor/picker API
- Redesigned child window API (previously known as child frame)
- Redesigned image / image button API
- Redesigned combo box API
- Redesigned selectable API
- Redesigned slider API. Generic scalar sliders support all main data types and replace previous individual sliders (int, int2, int3, int4, etc...)
- Redesigned menu API
- Updated layout API
- Renderer errors implement std::error::Error
- Glium renderer re-exports imgui and glium
- Gfx renderer re-exports imgui and gfx
- These functions now take/return PathBuf: log_filename, set_log_filename, ini_filename, set_logfilename
- ID stack manipulation now uses stack tokens
- Parameter stack pushes must almost always be paired by a manual call to stack pop
- Container widget tokens must be ended manually by calling end. Closure-based function (e.g. build()) are unaffected and do this automatically
- Bump minimum Rust version to 1.36 (some dependencies, including winit, require MaybeUninit)
- Upgrade to cimgui / imgui 1.72b
- Various things that were deprecated in imgui-rs 0.1.0
0.1.0 - 2019-07-12
- Support for font atlas sharing
- Support for using multiple fonts
- Support for suspended contexts (useful for having multiple independent operating system windows)
- Support for DX11 in imgui-gfx-renderer
- Support for navigation input system
- Support for backend/renderer name strings
- Support for saving/loading INI settings manually
- Pluggable clipboard support
- imgui-sys is now almost completely automatically generated. This is a big breaking change in imgui-sys API
- ImGui/Context API is now safer
- The library context (known as Context, previously known as ImGui) is no longer Send or Sync
- Many getter/setter APIs have been replaced with direct access to struct fields
- [f32; 2] and [f32; 4] are now the main vector types. ImVec/ImVec4 and corresponding tuples are no longer used in the main API
- imgui-gfx-renderer is parameterized over the color format, so Rgba8 and Srgba8 are both supported
- imgui-winit-support has been rewritten to provide a more robust abstraction that is easier to use correctly
- Parameter stack (e.g. StyleVar) manipulation is now done using push functions and automatically or manually droppable stack tokens
- Upgrade to glium 0.25
- Upgrade to cimgui / imgui 1.71
- Bump minimum Rust version to 1.33
0.0.23 - 2019-04-10
- Support for image buttons:
Ui::image_button
Ui::set_keyboard_focus_here
- Support for window position pivot
- Upgrade to gfx 0.18
- Various things that were deprecated in imgui-rs 0.0.21 and 0.0.22
0.0.22 - 2019-02-05
Ui::with_test_wrap_pos
Ui::get_content_region_max
Ui::get_window_content_region_min
Ui::get_window_content_region_max
- Upgrade to cimgui 1.66.2+ / imgui 1.66b. This is a very big update, so there are a lot of breaking changes
- Bump minimum Rust version to 1.31 (1.28 required by the glutin crate, and 1.31 required by the stb_truetype crate)
- Upgrade to glium 0.23
- Replaced
imgui-glutin-support
withimgui-winit-support
0.0.21 - 2018-10-11
ImGui::mouse_down
ImGui::key_super
Ui::get_window_pos
Ui::is_window_focused
Ui::is_root_window_focused
Ui::is_child_window_focused
Ui::popup_modal
imgui-glutin-support
crate- Support for custom textures
- Possible crash if rendering was skipped during a frame
- Bump minimum Rust version to 1.26 (required by the parking_lot_core crate)
0.0.20 - 2018-08-13
- Clip rect regression in the glium renderer
- Various things that were deprecated in imgui-rs 0.0.19
0.0.19 - 2018-08-12
- New things in imgui/cimgui 1.53.1
- Style: Add
PopupRounding
,FrameBorderSize
,WindowBorderSize
,PopupBorderSize
. - DemoWindow: Add
no_close
state. - Input: Add
no_undo_redo
method. - imgui-sys:
igStyleColorsDark
andigStyleColorsLight
- DragDrop low level API
igGetFrameHeight
igBeginCombo
,igEndCombo
igSetItemDefaultFocus
igGetOverlayDrawList
andigGetDrawListSharedData
ImFontConfig_DefaultConstructor
ImDrawList_AddImageRounded
- Style: Add
- Input: Add
read_only
andpassword
methods. - Various utility functions
- Support for changing the mouse cursor
- Custom font support
- Support for item grouping (
group
function) - Custom drawing with draw list manipulation
- Drag widgets
- Input: Add
input_text_multiline
method
- Upgrade to imgui/cimgui 1.53.1
- Rename
Ui::show_test_window
toUi::show_demo_window
. Keep redirection. - Rename
sys::igGetItemsLineHeightWithSpacing
tosys::igGetFrameHeightWithSpacing
. Keep redirection. - Rename
ImGuiTreeNodeFlags::AllowOverlapMode
toImGuiTreeNodeFlags::AllowItemOverlap
.sys::igSetNextWindowContentSize()
. Keep redirection. - Rename
sys::ImGuiTextBuffer_append()
helper toappendf()
. - Rename
ImGuiStyleVar::ChildWindowRounding
toImGuiStyleVar::ChildRounding
. Keep redirection. - Rename
StyleVar::ChildWindowRounding
toStyleVar::ChildRounding
. Keep redirection. - Rename
ImGuiCol::ChildWindowBg
toImGuiCol::ChildBg
. Keep redirection.
- Rename
- Upgrade glium to 0.22.0. This updates winit to 0.16. This changes the way
HIDPI are calculated. Depending on your needs, you may want to set HIDPI to 1
by setting the environment variable
WINIT_HIDPI_FACTOR=1
if you use X11. frame()
now takes a singleFrameSize
argument- Bump minimum Rust version to 1.24
set_mouse_down
takes button states by value, not by reference
- Various imgui-sys things that were deprecated in imgui/cimgui 1.53.1
- Obsolete
sys::igIsRootWindowFocused()
in favor of usingsys::igIsWindowFocused(ImGuiFocusedFlags::RootWindow)
. - Obsolete
sys::igIsRootWindowOrAnyChildFocused()
in favor of usingsys::igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows)
. - Obsolete
sys::igIsRootWindowOrAnyChildHovered()
in favor of usingsys::igIsWindowHovered(ImGuiHoveredFlags::RootAndChildWindows)
. - Obsolete
sys::SetNextWindowContentWidth()
in favor of using - ObsoleteWindow::show_borders
. UseStyleVar
instead. - Obsolete
ImGuiCol::ComboBg
. UsePopupBg
instead.
- Obsolete
- Features that were removed in imgui/cimgui 1.53.1
- Remove
anti_aliased: bool
final parameter ofsys::ImDrawList_AddPolyline
andsys::ImDrawList_AddConvexPolyFilled
. - Remove
ImGuiWindowFlags::ShowBorders
window flag. Borders are now fully set up in the ImGuiStyle structure.
- Remove
- Various imgui-sys things that were deprecated in imgui/cimgui 1.52
0.0.18 - 2017-12-23
is_item_hovered
tooltip
tooltip_text
- Upgrade to imgui/cimgui 1.52
- Upgrade to glium 0.19
- Various imgui-sys things that were deprecated in imgui/cimgui 1.52
- Non-namespaced flags
- Various imgui-sys things that were deprecated in imgui/cimgui 1.51
Window::bg_alpha
. Push a color change withwith_color_var
insteadcolor_edit3
color_edit4
0.0.17 - 2017-11-07
- Namespaced flags (e.g.
ImGuiWindowFlags
) - Color picker widget
- Color button widget
imgui_sys
is now re-exported assys
in the main createimgui::get_style_color_name
- Upgrade to imgui/cimgui 1.51
- Adapt to latest cimgui API changes
- Bump minimum Rust version to 1.20
- Upgrade to bitflags 1.0
- Various minor ImString/ImStr changes
text
now accepts normal Rust strings. ImStr is still needed everywhere else
- Default impl for ImString was incorrect and could cause a crash
- Non-namespaced flags
- Various imgui-sys things that were deprecated in imgui/cimgui 1.51
Window::bg_alpha
. Push a color change withwith_color_var
insteadcolor_edit3
. Usecolor_edit
insteadcolor_edit4
. Usecolor_edit
instead
- ImStr -> str Deref. Use
to_str
instead.
0.0.16 - 2017-10-26
- OpenGL ES 2.0+ support in gfx and glium renderers
- Separate OpenGL 2.0, 3.0, 4.0 shaders in both renderers. This should fix an issue with some systems that refuse to use old GLSL shaders with modern OpenGL contexts
ImGui::add_font_global_scale
- Support for radio buttons
- Upgrade to glium 0.18
- imgui-gfx-renderer
Renderer::init
now requires ashaders: Shaders
parameter. Please see examples/support_gfx/mod.rs for a shader resolution example - Bump minimum Rust version to 1.19 because some dependencies require it.
- Glium renderer now uses MinifySamplerFilter::Nearest. This fixes a blurry font issue in some configurations
ImString::from_string_unchecked
ImString::from_bytes_unchecked
ImStr::from_bytes_unchecked
0.0.15 - 2017-07-23
- Support for new_line function
- Support for text size calculation
- Support for scoped style customization
- Support for scoped color customization
- Support for child frames
- Unsafe ImString/ImStr creation functions for advanced users:
ImString::from_utf8_unchecked
(renamed fromImString::from_bytes_unchecked
)ImString::from_utf8_with_nul_unchecked
ImStr::from_utf8_with_nul_unchecked
(renamed fromImStr::from_bytes_unchecked
)
- Button, selectable, histogram, plotlines, and progress bar accept size with
Into<ImVec2>
ImString::new
always succeeds and any interior NULs truncate the string. Breaking change- All builder constructor functions (e.g. Window::new) now take
&Ui
reference to tie the lifetime of the builder to it. - Bumped minimum Rust version to 1.17 because some dependencies require it.
- Upgrade to glium 0.17
ImString::from_string_unchecked
(please useImString::new
)ImString::from_bytes_unchecked
(renamed toImString::from_utf8_unchecked
)ImStr::from_bytes_unchecked
(renamed toImStr::from_utf8_with_nul_unchecked
)
- Histogram, plotlines, progressbar builders were not tied to the
&Ui
lifetime, so it was possible to misuse them.
0.0.14 - 2017-06-18
- ImString owned type for strings
- Experimental support for gfx-rs in imgui-sys
- Experimental renderer for gfx-rs
- ImStr is now "a dear imgui -compatible string slice". This change significantly affects how strings are handled.
- Upgrade to imgui/cimgui 1.50
- Upgrade to bitflags 0.9
- String pointer compilation problems on ARM
0.0.13 - 2017-04-25
- Make the crates publishable again after the Glium renderer separation
0.0.12 - 2017-04-25 [YANKED]
- Support for progress bar
- Support for push/pop item width
- Support for ID stack manipulation (integer values)
- Support for 2-4 -element int sliders
- Support for 2-4 -element float sliders
ImVec4::zero()
Into
array and tuple conversions for ImVec2 and ImVec4- gfx 0.15 support in imgui-sys
- gfx 0.15 renderer implementation
- imgui-sys no longer includes glium support by default
- Move Glium renderer to a separate crate
Window::always_vertical_scollbar
(typo)igPushStyleVavrVec
(typo)ImGuiInputTextFlags::with
ImGuiTreeNodeFlags::with
ImGuiWindowFlags::with
0.0.11 - 2017-02-15
ImVec2::zero()
- Support for buttons
- Support for closing current popup
Window::always_vertical_scrollbar
(fix typo)igPushStyleVarVec
(fix typo)
- Upgrade to bitflags 0.8
- Upgrade to glium 0.16
- Replace libc dependency with
std::os::raw
- Upgrade cimgui to include MinGW compilation fix
Window::always_vertical_scollbar
(typo)igPushStyleVavrVec
(typo)ImGuiInputTextFlags::with
ImGuiTreeNodeFlags::with
ImGuiWindowFlags::with
0.0.10 - 2016-08-09
- Upgrade to glium 0.15
- Examples use std::time instead of the deprecated time crate
0.0.9 - 2016-07-07
- Support for columns, combo, listbox
- Support for plothistogram, plotlines
- Support for color edit widgets
- Support for int and float inputs
- Support for int and float array inputs
- Support for popups
- Support for selectable
- Better support for hidpi environments
- ImStr::as_ptr is now part of the public API
- Upgrade to bitflags 0.7
- Upgrade to imgui/cimgui 1.49
- Several imgui_sys structs have changed
- CollapsingHeader API has changed
- New window flags are supported
0.0.8 - 2016-04-15
- Add a change log
- Upgrade to glium 0.14
0.0.7 - 2016-03-26
- Upgrade to imgui/cimgui 1.47
- Fix Glium rendering error when more than one texture is used (issue #17)
0.0.6 - 2016-01-12
- Relicensed to dual MIT/Apache-2.0
- Upgrade to glium 0.13
- Upgrade to imgui/cimgui 1.46
0.0.5 - 2015-11-30
- Upgrade to glium 0.12
- Upgrade to libc 0.2
0.0.4 - 2015-10-26
- Upgrade to glium 0.10
- Lots of other changes
0.0.3 - 2015-09-27
- Upgrade to glium 0.9
- Lots of other changes
0.0.2 - 2015-08-31
- Lots of changes
- Initial release with cimgui/imgui 1.44, glium 0.9