mirror of
https://github.com/Noratrieb/game-wip-dontplay.git
synced 2026-01-14 19:55:02 +01:00
51 KiB
51 KiB
egui changelog
All notable changes to the egui crate will be documented in this file.
NOTE: epaint, eframe, egui-winit, egui_glium, egui_glow and egui-wgpu have their own changelogs!
Unreleased
- Add
char_limittoTextEditsingleline mode to limit the amount of characters - ⚠️ BREAKING:
Plot::link_axisandPlot::link_cursornow take the name of the group (#2410).
0.21.0 - 2023-02-08 - Deadlock fix and style customizability
- ⚠️ BREAKING:
egui::Contextnow use closures for locking (#2625):ctx.input().key_pressed(Key::A)->ctx.input(|i| i.key_pressed(Key::A))ui.memory().toggle_popup(popup_id)->ui.memory_mut(|mem| mem.toggle_popup(popup_id))
Added ⭐
- Add
Response::drag_started_byandResponse::drag_released_byfor convenience, similar todraggedanddragged_by(#2507). - Add
PointerState::*_pressedto check if the given button was pressed in this frame (#2507). Event::Keynow has arepeatfield that is set totrueif the event was the result of a key-repeat (#2435).- Add
Slider::drag_value_speed, which lets you ask for finer precision when dragging the slider value rather than the actual slider. - Add
Memory::any_popup_open, which returns true if any popup is currently open (#2464). - Add
Plot::clamp_gridto only show grid where there is data (#2480). - Add
ScrollArea::drag_to_scrollif you want to turn off that feature. - Add
Response::on_hover_and_drag_cursor. - Add
Window::default_open(#2539). - Add
ProgressBar::fillif you want to set the fill color manually. (#2618). - Add
Button::roundingto enable round buttons (#2616). - Add
WidgetVisuals::optional_bg_color- set it toColor32::TRANSPARENTto hide button backgrounds (#2621). - Add
Context::screen_rectandContext::set_cursor_icon(#2625). - You can turn off the vertical line left of indented regions with
Visuals::indent_has_left_vline(#2636). - Add
Response.highlightto highlight a widget (#2632). - Add
Separator::growandSeparator::shrink(#2665). - Add
Slider::trailing_fillfor trailing color behind the circle like aProgressBar(#2660).
Changed 🔧
- Improved plot grid appearance (#2412).
- Improved the algorithm for picking the number of decimals to show when hovering values in the
Plot. - Default
ComboBoxis now controlled withSpacing::combo_width(#2621). DragValueandSlidernow use the proportional font (#2638).ScrollAreais less aggressive about clipping its contents (#2665).- Updated to be compatible with a major breaking change in AccessKit that drastically reduces memory usage when accessibility is enabled (#2678).
- Improve
DragValuebehavior (#2649, #2650, #2688, #2638).
Fixed 🐛
- Trigger
PointerEvent::Releasedfor drags (#2507). - Expose
TextEdit's multiline flag to AccessKit (#2448). - Don't render
\r(Carriage Return) (#2452). - The
button_paddingstyle option works closer as expected with image+text buttons now (#2510). - Menus are now moved to fit on the screen.
- Fix
Window::pivotcausing windows to move around (#2694).
0.20.1 - 2022-12-11 - Fix key-repeat
Changed 🔧
InputState: all press functions again include key repeats (like in egui 0.19) (#2429).- Improve the look of thin white lines (#2437).
Fixed 🐛
- Fix key-repeats for
TextEdit,Sliders, etc (#2429).
0.20.0 - 2022-12-08 - AccessKit, prettier text, overlapping widgets
- MSRV (Minimum Supported Rust Version) is now
1.65.0(#2314). - ⚠️ BREAKING: egui now expects integrations to do all color blending in gamma space (#2071).
- ⚠️ BREAKING: if you have overlapping interactive widgets, only the top widget (last added) will be interactive (#2244).
Added ⭐
- Added helper functions for animating panels that collapse/expand (#2190).
- Added
Context::os/Context::set_osto query/set what operating system egui believes it is running on (#2202). - Added
Button::shortcut_textfor showing keyboard shortcuts in menu buttons (#2202). - Added
egui::KeyboardShortcutfor showing keyboard shortcuts in menu buttons (#2202). - Texture loading now takes a
TexureOptionswith minification and magnification filters (#2224). - Added
Key::MinusandKey::Equals(#2239). - Added
egui::gui_zoommodule with helpers for scaling the whole GUI of an app (#2239). - You can now put one interactive widget on top of another, and only one will get interaction at a time (#2244).
- Added
spacing.menu_marginfor customizing menu spacing (#2036) - Added possibility to enable text wrap for the selected text of
egui::ComboBox(#2272) - Added
Area::constrainandWindow::constrainwhich constrains area to the screen bounds (#2270). - Added
Area::pivotandWindow::pivotwhich controls what part of the window to position (#2303). - Added support for thin space.
- Added optional integration with AccessKit for implementing platform accessibility APIs (#2294).
- Added
panel_fill,window_fillandwindow_stroketoVisualsfor your theming pleasure (#2406). - Plots:
Changed 🔧
- Panels always have a separator line, but no stroke on other sides. Their spacing has also changed slightly (#2261).
- Tooltips are only shown when mouse pointer is still (#2263).
- Make it slightly easier to click buttons (#2304).
egui::colorhas been renamedegui::ecolor(#2399).
Fixed 🐛
- ⚠️ BREAKING: Fix text being too small (#2069).
- Improve mixed CJK/Latin line-breaking (#1986).
- Improved text rendering (#2071).
- Constrain menu popups to the screen (#2191).
- Less jitter when calling
Context::set_pixels_per_point(#2239). - Fixed popups and color edit going outside the screen.
- Fixed keyboard support in
DragValue(#2342). - If you nest
ScrollAreasinside each other, the inner area will now move its scroll bar so it is always visible (#2371). - Ignore key-repeats for
input.key_pressed(#2334, #2389). - Fixed issue with calling
set_pixels_per_pointeach frame (#2352). - Fix bug in
ScrollArea::show_rows(#2258). - Fix bug in
plot::Line::fill(#2275). - Only emit
changedevents inradio_valueandselectable_valueif the value actually changed (#2343). - Fixed sizing bug in
Grid(#2384). ComboBox::widthnow correctly sets the outer width (#2406).
0.19.0 - 2022-08-20
Added ⭐
- Added
*_released&*_clickedmethods forPointerState(#1582). - Added
PointerButton::Extra1andPointerButton::Extra2(#1592). - Added
egui::hex_color!to createColor32's from hex strings under thecolor-hexfeature (#1596). - Optimized painting of filled circles (e.g. for scatter plots) by 10x or more (#1616).
- Added opt-in feature
deadlock_detectionto detect double-lock of mutexes on the same thread (#1619). - Added
InputState::stable_dt: a more stable estimate for the delta-time in reactive mode (#1625). - You can now specify a texture filter for your textures (#1636).
- Added functions keys in
egui::Key(#1665). - Added support for using
PaintCallbackshapes with the WGPU backend (#1684). - Added
Context::request_repaint_after(#1694). ctrl-hnow acts like backspace inTextEdit(#1812).- Added
custom_formattermethod forSliderandDragValue(#1851). - Added
RawInput::has_focuswhich backends can set to indicate whether the UI as a whole has the keyboard focus (#1859). - Added
PointerState::button_double_clicked()andPointerState::button_triple_clicked()(#1906). - Added
custom_formatter,binary,octal, andhexadecimaltoDragValueandSlider(#1953)
Changed 🔧
- MSRV (Minimum Supported Rust Version) is now
1.61.0(#1846). PaintCallbackshapes now require the whole callback to be put in anArc<dyn Any>with the value being a backend-specific callback type (#1684).- Replaced
needs_repaintinFullOutputwithrepaint_after. Used to force repaint after the set duration in reactive mode (#1694). Layout::left_to_rightandLayout::right_to_leftnow takes the vertical align as an argument. Previous default wasAlign::Center.- Improved ergonomics of adding plot items. All plot items that take a series of 2D coordinates can now be created directly from
Vec<[f64; 2]>. TheValueandValuestypes were removed in favor ofPlotPointandPlotPointsrespectively (#1816). TextBufferno longer needs to implementAsRef<str>(#1824).
Fixed 🐛
- Fixed
Response::changedforui.toggle_value(#1573). - Fixed
ImageButton's changing background padding on hover (#1595). - Fixed
Plotauto-bounds bug (#1599). - Fixed dead-lock when alt-tabbing while also showing a tooltip (#1618).
- Fixed
ScrollAreascrolling when editing an unrelatedTextEdit(#1779). - Fixed
Slidernot always generating events on change (#1854). - Fixed jitter of anchored windows for the first frame (#1856).
- Fixed focus behavior when pressing Tab in a UI with no focused widget (#1861).
- Fixed automatic plot bounds (#1865).
0.18.1 - 2022-05-01
- Change
Shape::Callbackfrom&dyn Anyto&mut dyn Anyto support more backends.
0.18.0 - 2022-04-30
Added ⭐
- Added
Shape::Callbackfor backend-specific painting, with an example (#1351). - Added
Frame::canvas(#1362). Context::request_repaintwill now wake up UI thread, if integrations has calledContext::set_request_repaint_callback(#1366).- Added
Plot::allow_scroll,Plot::allow_zoomno longer affects scrolling (#1382). - Added
Ui::push_idto resolve id clashes (#1374). - Added
ComboBox::icon(#1405). - Added
Ui::scroll_with_delta. - Added
Frame::outer_margin. - Added
Painter::hlineandPainter::vline. - Added
Linkandui.link(#1506). - Added triple-click support; triple-clicking a TextEdit field will select the whole paragraph (#1512).
- Added
Plot::x_grid_spacerandPlot::y_grid_spacerfor custom grid spacing (#1180). - Added
Ui::spinner()shortcut method (#1494). - Added
CursorIcons for resizing columns, rows, and the eight cardinal directions. - Added
Ui::toggle_value. - Added ability to add any widgets to the header of a collapsing region (#1538).
Changed 🔧
- MSRV (Minimum Supported Rust Version) is now
1.60.0(#1467). ClippedMeshhas been replaced withClippedPrimitive(#1351).- Renamed
Frame::margintoFrame::inner_margin. - Renamed
AlphaImagetoFontImageto discourage any other use for it (#1412). - Warnings will be painted on screen when there is an
Idclash forGrid,PlotorScrollArea(#1452). CheckboxandRadioButtonwith an empty label ("") will now take up much less space (#1456).- Replaced
Memory::top_most_layerwith more flexibleMemory::layer_ids. - Renamed the feature
convert_bytemucktobytemuck(#1467). - Renamed the feature
serializetoserde(#1467). - Renamed
Painter::sub_regiontoPainter::with_clip_rect.
Fixed 🐛
- Fixed
ComboBoxes always being rendered left-aligned (#1304). - Fixed ui code that could lead to a deadlock (#1380).
- Text is darker and more readable in bright mode (#1412).
- Fixed a lot of broken/missing doclinks (#1419).
- Fixed
Ui::add_visiblesometimes leaving theUiin a disabled state (#1436). - Added line breaking rules for Japanese text (#1498).
Deprecated ☢️
- Deprecated
CollapsingHeader::selectable(#1538).
Removed 🔥
- Removed the
single_threaded/multi_threadedflags - egui is now always thread-safe (#1390).
Contributors 🙏
- 4JX
- AlexxxRu
- ascclemens
- awaken1ng
- bigfarts
- bobyclaws
- Bromeon
- cloudhead
- collin-kemper
- cpterry
- dbuch
- DusterTheFirst
- Edgeworth
- elwerene
- follower
- Friz64
- Hunter522
- Jake-Shadle
- jean-airoldie
- JelNiSlaw
- juancampa
- LU15W1R7H
- mbillingr
- nicklasmoeller
- rukai
- tami5
- Titaniumtown
- trevyn
- waynr
- zam-5
0.17.0 - 2022-02-22 - Improved font selection and image handling
Added ⭐
- Much improved font selection (#1154):
- You can now select any font size and family using
RichText::sizeamdRichText::familyand the newFontId. - Easily change text styles with
Style::text_styles. - Added
Ui::text_style_height. - Added
TextStyle::resolve. - Made the v-align and scale of user fonts tweakable (#1241).
- You can now select any font size and family using
- Plot:
- Added
Plot::x_axis_formatterandPlot::y_axis_formatterfor custom axis labels (#1130). - Added
Plot::allow_boxed_zoom(),Plot::boxed_zoom_pointer()for boxed zooming on plots (#1188). - Added plot pointer coordinates with
Plot::coordinates_formatter(#1235). - Added linked axis support for plots via
plot::LinkedAxisGroup(#1184).
- Added
Context::load_textureto convert an image into a texture which can be displayed using e.g.ui.image(texture, size)(#1110).Ui::input_mutto modify how subsequent widgets see theInputStateand a convenience methodInputState::consume_keyfor shortcuts or hotkeys (#1212).- Added
Ui::add_visibleandUi::add_visible_ui. - Added
CollapsingHeader::iconto override the default open/close icon using a custom function. (1147). - Added
ui.data(),ctx.data(),ctx.options()andctx.tessellation_options()(#1175). - Added
Response::on_hover_text_at_pointeras a convenience akin toResponse::on_hover_text(1179). - Opt-in dependency on
tracingcrate for logging warnings (#1192). - Added
ui.weak(text). - Added
Slider::step_by(1225). - Added
Context::move_to_topandContext::top_most_layerfor managing the layer on the top (#1242). - Support a subset of macOS' emacs input field keybindings in
TextEdit(#1243). - Added ability to scroll an UI into view without specifying an alignment (1247).
- Added
Ui::scroll_to_rect(1252).
Changed 🔧
- ⚠️
Context::inputandUi::inputnow locks a mutex. This can lead to a dead-lock is used in anif letbinding!if let Some(pos) = ui.input().pointer.latest_pos()and similar must now be rewritten on two lines.- Search for this problem in your code using the regex
if let .*input.
- Better contrast in the default light mode style (#1238).
- Renamed
CtxReftoContext(#1050). Contextcan now be cloned and stored between frames (#1050).- Renamed
Ui::visibletoUi::is_visible. - Split
Event::TextintoEvent::TextandEvent::Paste(#1058). - Replaced
Style::body_text_stylewith more genericStyle::text_styles(#1154). TextStyleis no longerCopy(#1154).- Replaced
TextEdit::text_stylewithTextEdit::font(#1154). Plot::highlightnow takes aboolargument (#1159).ScrollArea::shownow returns aScrollAreaOutput, so you might need to add.innerafter the call to it (#1166).- Replaced
corner_radius: f32withrounding: Rounding, allowing per-corner rounding settings (#1206). - Replaced Frame's
margin: Vec2withmargin: Margin, allowing for different margins on opposing sides (#1219). - Renamed
Plot::custom_label_functoPlot::label_formatter(#1235). Areas::layer_id_atignores non-interatable layers (i.e. Tooltips) (#1240).ScrollAreas will not shrink below a certain minimum size, set bymin_scrolled_width/min_scrolled_height(1255).- For integrations:
Outputhas now been renamedPlatformOutputandContext::runnow returns the newFullOutput(#1292).FontImagehas been replaced byTexturesDelta(found inFullOutput), describing what textures were loaded and freed each frame (#1110).- The painter must support partial texture updates (#1149).
- Added
RawInput::max_texture_sidewhich should be filled in with e.g.GL_MAX_TEXTURE_SIZE(#1154).
Fixed 🐛
- Plot
Orientationwas not public, although fields using this type were (#1130). - Context menus now respects the theme (#1043).
- Calling
Context::set_pixels_per_pointbefore the first frame will now work. - Tooltips that don't fit the window don't flicker anymore (#1240).
- Scroll areas now follow text cursor (#1252).
- Slider: correctly respond with drag and focus events when interacting with the value directly (1270).
Contributors 🙏
- 4JX
- 55nknown
- AlanRace
- AlexxxRu
- awaken1ng
- BctfN0HUK7Yg
- Bromeon
- cat-state
- danielkeller
- dvec
- Friz64
- Gordon01
- HackerFoo
- juancampa
- justinj
- lampsitter
- LordMZTE
- manuel-i
- Mingun
- niklaskorz
- nongiach
- parasyte
- psiphi75
- s-nie
- t18b219k
- terhechte
- xudesheng
- yusdacra
0.16.1 - 2021-12-31 - Add back CtxRef::begin_frame,end_frame
Added ⭐
- Added back
CtxRef::begin_frame,end_frameas an alternative toCtxRef::run.
0.16.0 - 2021-12-29 - Context menus and rich text
Added ⭐
- Added context menus: See
Ui::menu_buttonandResponse::context_menu(#543). - Most widgets containing text (
Label,Buttonetc) now supports rich text (#855). - Plots:
- You can now read and write the cursor of a
TextEdit(#848). - When using a custom font you can now specify a font index (#873).
- Added vertical sliders with
Slider::new(…).vertical()(#875). - Added
Button::image_and_text(#832). - Added
CollapsingHeader::opento control if it is open or collapsed (#1006). - Added
egui::widgets::color_picker::color_picker_color32to show the color picker.
Changed 🔧
- MSRV (Minimum Supported Rust Version) is now
1.56.0. ui.add(Button::new("…").text_color(…))is nowui.button(RichText::new("…").color(…))(same forLabel)(#855).- Plots now provide a
showmethod that has to be used to add items to and show the plot (#766). menu::menu(ui, ...)is nowui.menu_button(...)(#543)- Replaced
CtxRef::begin_frameandend_framewithCtxRef::run(#872). - Replaced
scroll_deltaandzoom_deltainRawInputwithEvent::ScrollandEvent::Zoom. - Unified the four
Memorydata buckets (data,data_temp,id_dataandid_data_temp) into a singleMemory::data, with a new interface (#836). - Replaced
Ui::__testwithegui::__run_test_ui(#872).
Fixed 🐛
- Fixed
ComboBoxand other popups getting clipped to parent window (#885). - The color picker is now better at keeping the same hue even when saturation goes to zero (#886).
Removed 🔥
- Removed
egui::math(useegui::emathinstead). - Removed
egui::paint(useegui::epaintinstead).
Contributors 🙏
- 5225225: #849.
- aevyrie: #966.
- B-Reif: #875.
- Bromeon: #863, #918.
- d10sfan: #832.
- EmbersArc: #766, #892.
- Hperigo: #905.
- isegal: #934.
- mankinskin: #543.
- niladic: #499, #863.
- singalen: #973.
- sumibi-yakitori: #830, #870.
- t18b219k: #868, #888.
0.15.0 - 2021-10-24 - Syntax highlighting and hscroll
Added ⭐
- Added horizontal scrolling support to
ScrollAreaandWindow(opt-in). TextEdit::layouter: Add custom text layout for e.g. syntax highlighting or WYSIWYG.Fonts::layout_job: New text layout engine allowing mixing fonts, colors and styles, with underlining and strikethrough.- Added
ui.add_enabled(bool, widget)to easily add a possibly disabled widget. - Added
ui.add_enabled_ui(bool, |ui| …)to create a possibly disabled UI section. - Added feature
"serialize"separately from"persistence". - Added
egui::widgets::global_dark_light_mode_buttonsto easily add buttons for switching the egui theme. TextEditcan now be used to show text which can be selected and copied, but not edited.- Added
Memory::cachesfor caching things from one frame to the next.
Changed 🔧
- Change the default monospace font to Hack.
- Label text will now be centered, right-aligned and/or justified based on the layout of the
Uiit is in. Hyperlinkwill now word-wrap just like aLabel.- All
Uis must now have a finitemax_rect.- Deprecated:
max_rect_finite,available_size_before_wrap_finiteandavailable_rect_before_wrap_finite.
- Deprecated:
Painter/Fonts: text layout now expect a color when creating aGalley. You may override that color withPainter::galley_with_color.- MSRV (Minimum Supported Rust Version) is now
1.54.0. - By default,
DragValues no longer show a tooltip when hovered. Change withStyle::explanation_tooltips. - Smaller and nicer color picker.
ScrollAreawill auto-shrink to content size unless told otherwise usingScrollArea::auto_shrink.- By default,
Slider'sclamp_to_rangeis set to true. - Renamed
TextEdit::enabledtoTextEdit::interactive. ui.label(and friends) now takeimpl ToStringas argument instead ofimpl Into<Label>.
Fixed 🐛
- Fixed wrongly sized multiline
TextEditin justified layouts. - Fixed clip rectangle of windows that don't fit the central area.
- Show tooltips above widgets on touch screens.
- Fixed popups sometimes getting clipped by panels.
Removed 🔥
- Replace
Button::enabledwithui.add_enabled.
Contributors 🙏
- AlexApps99
- baysmith
- bpostlethwaite
- cwfitzgerald
- DrOptix
- JerzySpendel
- NiceneNerd
- parasyte
- spersson
- Stock84-dev
- sumibi-yakitori
- t18b219k
- TobTobXX
- zu1k
0.14.2 - 2021-08-28 - Window resize fix
Fixed 🐛
- Fixed window resize bug introduced in
0.14.1.
0.14.1 - 2021-08-28 - Layout bug fixes
Added ⭐
- Added
Ui::horizontal_top.
Fixed 🐛
- Fixed
set_width/set_min_width/set_height/set_min_height/expand_to_include_x/expand_to_include_y. - Make minimum grid column width propagate properly.
- Make sure
TextEditcontents expand to fill width if applicable. ProgressBar: add a minimum width and fix for having it in an infinite layout.- Fixed sometimes not being able to click inside a combo box or popup menu.
0.14.0 - 2021-08-24 - Ui panels and bug fixes
Added ⭐
- Panels can now be added to any
Ui. - Plot:
- Line styles.
- Added
show_backgroundandshow_axesmethods toPlot.
- Progress bar.
Grid::num_columns: allow the last column to take up the rest of the space of the parentUi.- Added an API for dropping files into egui (see
RawInput). CollapsingHeadercan now optionally be selectable.
Changed 🔧
- A single-line
TextEditwill now clip text that doesn't fit in it, and scroll. - Return closure return value from
Area::show,ComboBox::show_ui,ComboBox::combo_box_with_label,Window::show,popup::*,menu::menu. - Only move/resize windows with primary mouse button.
- Tooltips are now moved to not cover the widget they are attached to.
Fixed 🐛
- Fixed custom font definitions getting replaced when
pixels_per_pointis changed. - Fixed
lost_focusforTextEdit. - Clicking the edge of a menu button will now properly open the menu.
- Fixed hover detection close to an
Area. - Fixed case where
Plot'smin_auto_boundscould be ignored after the first call toPlot::ui. - Fixed slow startup when using large font files.
Contributors 🙏
0.13.1 - 2021-06-28 - Plot fixes
Added ⭐
- Plot: you can now set the stroke of a
HLine/VLine.
Changed 🔧
Plot::newnow takes anid_source: impl Hashinstead of aname: impl ToString. Functionally it is the same.
0.13.0 - 2021-06-24 - Better panels, plots and new visual style
Added ⭐
- Plot:
- Panels:
- Added right and bottom panels (
SidePanel::rightandPanel::bottom). - Panels can now be resized.
- Added an option to overwrite frame of a
Panel.
- Added right and bottom panels (
- Improve accessibility / screen reader.
- Added
ScrollArea::show_rowsfor efficient scrolling of huge UI:s. - Added
ScrollArea::enable_scrollingto allow freezing scrolling when editing TextEdit widgets within it - Added
Ui::set_visibleas a way to hide widgets. - Added
Style::override_text_styleto easily change the text style of everything in aUi(or globally). - You can now change
TextStyleon checkboxes, radio buttons andSelectableLabel. - Added support for cint under
cintfeature. - Added features
extra_assertsandextra_debug_assertsto enable additional checks. TextEditnow supports edits on a generic buffer usingTextBuffer.- Added
Context::set_debug_on_hoverandegui::trace!(ui)
Changed 🔧
- Minimum Rust version is now 1.51 (used to be 1.52)
- Tweaked the default visuals style.
- Plot: Renamed
CurvetoLine. TopPanel::topis nowTopBottomPanel::top.SidePanel::leftno longet takes the default width by argument, but by a builder call.SidePanel::leftis resizable by default.
Fixed 🐛
- Fixed uneven lettering on non-integral device scales ("extortion lettering").
- Fixed invisible scroll bar when native window is too narrow for egui.
0.12.0 - 2021-05-10 - Multitouch, user memory, window pivots, and improved plots
Added ⭐
- Added anchors to windows and areas so you can put a window in e.g. the top right corner.
- Make labels interactive with
Label::sense(Sense::click()). - Added
Response::request_focusandResponse::surrender_focus. - Added
TextEdit::code_editor(VERY basic). - Pan and zoom plots.
- Add plot legends.
- Users can now store custom state in
egui::Memory. - Added
Response::on_disabled_hover_textto show tooltip for disabled widgets. - Zoom input: ctrl-scroll and (on
eframeweb) trackpad-pinch gesture. - Support for raw multi touch events,
enabling zoom, rotate, and more. Works with
eframeweb on mobile devices, and should work withegui_gliumfor certain touch devices/screens. - Added (optional) compatibility with mint.
Changed 🔧
- Make
Memory::has_focuspublic (again). Plotmust now be given a name that is unique within its scope.- Tab only selects labels if the
screen_readeroption is turned on. - Renamed
ui.wraptoui.scope.
Fixed 🐛
- Fixed defocus-bug on touch screens.
- Fixed bug with the layout of wide
DragValues.
Removed 🔥
- Moved experimental markup language to
egui_demo_lib
0.11.0 - 2021-04-05 - Optimization, screen reader & new layout logic
Added ⭐
- You can now give focus to any clickable widget with tab/shift-tab.
- Use space or enter to click the selected widget.
- Use arrow keys to adjust sliders and
DragValues.
- egui will now output events when widgets gain keyboard focus.
- This can be hooked up to a screen reader to aid the visually impaired
- Added the option to restrict the dragging bounds of
WindowandAreato a specified area usingdrag_bounds(rect). - Added support for small and raised text.
- Added
ui.set_row_height. - Added
DebugOptions::show_widgetsto debug layouting by hovering widgets. - Added
ComboBoxto more easily customize combo boxes. - Added
Slider::newandDragValue::newto replace old type-specific constructors. - Added
TextEdit::passwordto hide input characters.
Changed 🔧
ui.advance_cursoris now calledui.add_space.kb_focusis now just calledfocus.
Fixed 🐛
- Fixed some bugs related to centered layouts.
- Fixed secondary-click to open a menu.
- Fix panic for zero-range sliders and zero-speed drag values.
- Fixed false id clash error for wrapping text.
- Fixed bug that would close a popup (e.g. the color picker) when clicking inside of it.
Deprecated ☢️
- Deprecated
combo_box_with_labelin favor of newComboBox. - Deprecated type-specific constructors for
SliderandDragValue(Slider::f32,DragValue::usizeetc).
0.10.0 - 2021-02-28 - Plot and polish
Added ⭐
- Added
egui::plot::Plotto plot some 2D data. - Added
Ui::hyperlink_to(label, url). - Sliders can now have a value prefix and suffix (e.g. the suffix
"°"works like a unit). Context::set_pixels_per_pointto control the scale of the UI.- Added
Response::changed()to query if e.g. a slider was dragged, text was entered or a checkbox was clicked. - Added support for all integers in
DragValueandSlider(except 128-bit).
Changed 🔧
- Improve the positioning of tooltips.
- Only show tooltips if mouse is still.
Sliderwill now show the value display by default, unless turned off with.show_value(false).- The
Slidervalue is now aDragValuewhich when dragged can pick values outside of the slider range (unlessclamp_to_rangeis set).
0.9.0 - 2021-02-07 - Light Mode and much more
Added ⭐
- Added support for secondary and middle mouse buttons.
- Added
Labelmethods for code, strong, strikethrough, underline and italics. - Added
ui.group(|ui| { … })to visually group some widgets within a frame. - Added
Uihelpers for doing manual layout (ui.put,ui.allocate_ui_at_rectand more). - Added
ui.set_enabled(false)to disable all widgets in aUi(grayed out and non-interactive). - Added
TextEdit::hint_textfor showing a weak hint text when empty. egui::popup::popup_below_widget: show a popup area below another widget.- Added
Slider::clamp_to_range(bool): if set, clamp the incoming and outgoing values to the slider range. - Add:
ui.spacing(),ui.spacing_mut(),ui.visuals(),ui.visuals_mut(). - Add:
ctx.set_visuals(). - You can now control text wrapping with
Style::wrap. - Added
Grid::max_col_width.
Changed 🔧
- Text will now wrap at newlines, spaces, dashes, punctuation or in the middle of a words if necessary, in that order of priority.
- Widgets will now always line break at
\ncharacters. - Widgets will now more intelligently choose whether or not to wrap text.
mousehas been renamedpointereverywhere (to make it clear it includes touches too).- Most parts of
Responseare now methods, soif ui.button("…").clicked {is nowif ui.button("…").clicked() {. Response::activeis now gone. You can useresponse.dragged()orresponse.clicked()instead.- Backend: pointer (mouse/touch) position and buttons are now passed to egui in the event stream.
DragValue::rangeis now calledclamp_rangeand also clamps incoming values.- Renamed
TrianglestoMesh. - The tessellator now wraps the clip rectangle and mesh in
struct ClippedMesh(Rect, Mesh). Mesh::split_to_u16now returns a 16-bit indexedMesh16.
Fixed 🐛
- It is now possible to click widgets even when FPS is very low.
- Tessellator: handle sharp path corners better (switch to bevel instead of miter joints for > 90°).
0.8.0 - 2021-01-17 - Grid layout & new visual style
Added ⭐
- Added a simple grid layout (
Grid). - Added
ui.allocate_at_leastandui.allocate_exact_size. - Added function
InputState::key_down. - Added
Window::current_posto position a window.
Changed 🔧
- New simpler and sleeker look!
- Renamed
PaintCmdtoShape. - Replace tuple
(Rect, Shape)with tuple-structClippedShape. - Renamed feature
"serde"to"persistence". - Break out the modules
mathandpaintinto separate cratesemathandepaint.
Fixed 🐛
- Fixed a bug that would sometimes trigger a "Mismatching panels" panic in debug builds.
ImageandImageButtonwill no longer stretch to fill a justified layout.
0.7.0 - 2021-01-04
Added ⭐
- Added
ui.scroll_to_cursorandresponse.scroll_to_me(#81 by lucaspoffo). - Added
window.id(…)andarea.id(…)for overriding the defaultId.
Changed 🔧
- Renamed
SrgbatoColor32. - All color constructors now starts with
from_, e.g.Color32::from_rgb. - Renamed
FontFamily::VariableWidthtoFontFamily::Proportional. - Removed
pixels_per_pointfromFontDefinitions.
Fixed 🐛
RepaintSignalnow implementsSyncso it can be sent to a background thread.TextEditwidgets are now slightly larger to accommodate their frames.
Deprecated ☢️
- Deprecated
color::srgba.
0.6.0 - 2020-12-26
Added ⭐
- Turn off
Windowtitle bars withwindow.title_bar(false). ImageButton-ui.add(ImageButton::new(…)).ui.vertical_centeredandui.vertical_centered_justified.ui.allocate_painterhelper.- Mouse-over explanation to duplicate ID warning.
- You can now easily constrain egui to a portion of the screen using
RawInput::screen_rect. - You can now control the minimum and maixumum number of decimals to show in a
SliderorDragValue. - Added
egui::math::Rot2: rotation helper. Responsenow contains theIdof the widget it pertains to.ui.allocate_responsethat allocates space and checks for interactions.- Added
response.interact(sense), e.g. to check for clicks on labels.
Changed 🔧
ui.allocate_spacenow returns an(Id, Rect)tuple.Arc<Context>has been replaced withCtxRefeverywhere.- Slight tweak of the default
Styleand font sizes. SidePanel::leftandTopPanel::topnow takesimpl Hashas first argument.- A
Windowmay now cover an existingCentralPanel. ui.imagenow takesimpl Into<Vec2>as asizeargument.- Made some more fields of
RawInputoptional. SliderandDragValueuses fewer decimals by default. See the full precision by hovering over the value.egui::App: addedfn name(&self)andfn clear_color(&self).- Combo boxes has scroll bars when needed.
- Expand
Window+Resizecontainers to be large enough for last frames content ui.columns: Columns now defaults to justified top-to-down layouts.- Renamed
Sense::nothing()toSense::hover(). - Replaced
parking_lotdependency withatomic_refcellby default.
Fixed 🐛
- The background for
CentralPanelwill now cover unused space too. ui.columns: Improve allocated size estimation.
Deprecated ☢️
RawInput::screen_size- useRawInput::screen_rectinstead.- left/centered/right column functions on
Ui. ui.interact_hoverandui.hovered.
0.5.0 - 2020-12-13
Added ⭐
- Emoji support: 1216 different emojis that work in any text.
- The Demo app comes with a Font Book to explore the available glyphs.
ui.horizontal_wrapped(|ui| …): Add widgets on a row but wrap atmax_size.ui.horizontal_wrapped_for_text: Likeui.horizontal_wrapped, but with spacing made for embedding text.ui.horizontal_for_text: Likeui.horizontal, but with spacing made for embedding text.egui::Layoutnow supports justified layouts where contents is also centered, right-aligned, etc.ui.allocate_ui(size, |ui| …): Easily create a child-Uiof a given size.SelectableLabel(ui.selectable_labelandui.selectable_value): A text-button that can be selected.ui.small_button: A smaller button that looks good embedded in text.ui.drag_angle_tau: For those who want to specify angles as fractions of τ (a full turn).- Added
Resize::id_sourceandScrollArea::id_sourceto let the user avoid Id clashes.
Changed 🔧
- New default font: Ubuntu-Light.
- Make it simpler to override fonts in
FontDefinitions. - Remove minimum button width.
- Refactor
egui::Layoutsubstantially, changing its interface. - Calling
on_hover_text/on_hover_uimultiple times will stack tooltips underneath the previous ones. - Text wrapping on labels, buttons, checkboxes and radio buttons is now based on the layout.
Removed 🔥
- Removed the
label!macro.
0.4.0 - 2020-11-28
Added ⭐
TextEditimprovements:- Much improved text editing, with better navigation and selection.
- Move focus between
TextEditwidgets with tab and shift-tab. - Undo edtis in a
TextEdit. - You can now check if a
TextEditlost keyboard focus withresponse.lost_focus. - Added
ui.text_edit_singlelineandui.text_edit_multiline.
- You can now debug why your
Uiis unexpectedly wide withui.style_mut().debug.show_expand_width = true;
Changed 🔧
- Pressing enter in a single-line
TextEditwill now surrender keyboard focus for it. - You must now be explicit when creating a
TextEditif you want it to be singeline or multiline. - Improved automatic
Idgeneration, makingIdclashes less likely. - egui now requires modifier key state from the integration
- Added, renamed and removed some keys in the
Keyenum. - Fixed incorrect text wrapping width on radio buttons
Fixed 🐛
- Fixed bug where a lost widget could still retain keyboard focus.
0.3.0 - 2020-11-07
Added ⭐
- Panels: you can now create panels using
SidePanel,TopPanelandCentralPanel. - You can now override the default egui fonts.
- Added ability to override text color with
visuals.override_text_color. - The demo now includes a simple drag-and-drop example.
- The demo app now has a slider to scale all of egui.
Changed 🔧
ui.horizontal(…)etc returnsResponse.- Refactored the interface for
egui::app::App. - Windows are now constrained to the screen.
Context::begin_frame()no longer returns aUi. Instead put your widgets into aSidePanel,TopPanel,CentralPanel,WindoworArea.Context::end_frame()now returns shapes that need to be converted to triangles withContext::tessellate().- Anti-aliasing is now off by default in debug builds.
Removed 🔥
- You can no longer throw windows.
Fixed 🐛
- Fixed a bug where some regions would slowly grow for non-integral scales (
pixels_per_point).
0.2.0 - 2020-10-10
- Color picker
- Unicode characters in labels (limited by what the default font supports)
- Simple drop-down combo box menu
- Logarithmic sliders
- Optimization: coarse culling in the tessellator
- CHANGED: switch argument order of
ui.checkboxandui.radio
0.1.4 - 2020-09-08
This is when I started the CHANGELOG.md, after almost two years of development. Better late than never.
- Widgets: label, text button, hyperlink, checkbox, radio button, slider, draggable value, text editing
- Layouts: horizontal, vertical, columns
- Text input: very basic, multiline, copy/paste
- Windows: move, resize, name, minimize and close. Automatically sized and positioned.
- Regions: resizing, vertical scrolling, collapsing headers (sections)
- Rendering: Anti-aliased rendering of lines, circles, text and convex polygons.
- Tooltips on hover
Earlier:
- 2020-08-10: renamed the project to "egui"
- 2020-05-30: first release on crates.io (0.1.0)
- 2020-04-01: serious work starts (pandemic project)
- 2019-03-12: gave a talk about what would later become egui: https://www.youtube.com/watch?v=-pmwLHw5Gbs
- 2018-12-23: initial commit
- 2018-11-04: started tinkering on a train