mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
This provides a better estimate of a typical frametime in reactive mode. From the docstring of `stable_dt`: Time since last frame (in seconds), but gracefully handles the first frame after sleeping in reactive mode. In reactive mode (available in e.g. `eframe`), `egui` only updates when there is new input or something animating. This can lead to large gaps of time (sleep), leading to large [`Self::unstable_dt`]. If `egui` requested a repaint the previous frame, then `egui` will use `stable_dt = unstable_dt;`, but if `egui` did not not request a repaint last frame, then `egui` will assume `unstable_dt` is too large, and will use `stable_dt = predicted_dt;`. This means that for the first frame after a sleep, `stable_dt` will be a prediction of the delta-time until the next frame, and in all other situations this will be an accurate measurement of time passed since the previous frame. Note that a frame can still stall for various reasons, so `stable_dt` can still be unusually large in some situations. When animating something, it is recommended that you use something like `stable_dt.min(0.1)` - this will give you smooth animations when the framerate is good (even in reactive mode), but will avoid large jumps when framerate is bad, and will effectively slow down the animation when FPS drops below 10.
38 KiB
38 KiB
egui changelog
All notable changes to the egui crate will be documented in this file.
NOTE: epaint, eframe, egui-winit, egui_glium, and egui_glow have their own changelogs!
Unreleased
Added ⭐
- Added
*_released&*_clickedmethods forPointerState(#1582). - Optimized painting of filled circles (e.g. for scatter plots) by 10x or more (#1616).
- Added
InputState::stable_dt: a more stable estimate for the delta-time in reactive mode (#1625).
Fixed 🐛
- Fixed
ImageButton's changing background padding on hover (#1595). - Fix dead-lock when alt-tabbing while also showing a tooltip (#1618).
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 pe 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).
- Fix a lot of broken/missing doclinks (#1419).
- Fixed
Ui::add_visiblesometimes leaving theUiin a disabled state (#1436). - Add 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 ⭐
- Add 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 ⭐
- Add 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.- Add
ui.add_enabled(bool, widget)to easily add a possibly disabled widget. - Add
ui.add_enabled_ui(bool, |ui| …)to create a possibly disabled UI section. - Add feature
"serialize"separatedly from"persistence". - Add
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.- Add
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 usingScollArea::auto_shrink.- By default,
Slider'sclamp_to_rangeis set to true. - Rename
TextEdit::enabledtoTextEdit::interactive. ui.label(and friends) now takeimpl ToStringas argument instead ofimpl Into<Label>.
Fixed 🐛
- Fix wrongly sized multiline
TextEditin justified layouts. - Fix clip rectangle of windows that don't fit the central area.
- Show tooltips above widgets on touch screens.
- Fix 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 🐛
- Fix window resize bug introduced in
0.14.1.
0.14.1 - 2021-08-28 - Layout bug fixes
Added ⭐
- Add
Ui::horizontal_top.
Fixed 🐛
- Fix
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.- Fix 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.
- Add
show_backgroundandshow_axesmethods toPlot.
- Progress bar.
Grid::num_columns: allow the last column to take up the rest of the space of the parentUi.- Add 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 🐛
- Fix custom font definitions getting replaced when
pixels_per_pointis changed. - Fix
lost_focusforTextEdit. - Clicking the edge of a menu button will now properly open the menu.
- Fix hover detection close to an
Area. - Fix case where
Plot'smin_auto_boundscould be ignored after the first call toPlot::ui. - Fix 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:
- Add right and bottom panels (
SidePanel::rightandPanel::bottom). - Panels can now be resized.
- Add an option to overwrite frame of a
Panel.
- Add right and bottom panels (
- Improve accessibility / screen reader.
- Add
ScrollArea::show_rowsfor efficient scrolling of huge UI:s. - Add
ScrollArea::enable_scrollingto allow freezing scrolling when editing TextEdit widgets within it - Add
Ui::set_visibleas a way to hide widgets. - Add
Style::override_text_styleto easily change the text style of everything in aUi(or globally). - You can now change
TextStyleon checkboxes, radio buttons andSelectableLabel. - Add support for cint under
cintfeature. - Add features
extra_assertsandextra_debug_assertsto enable additional checks. TextEditnow supports edits on a generic buffer usingTextBuffer.- Add
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 🐛
- Fix uneven lettering on non-integral device scales ("extortion lettering").
- Fix 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 ⭐
- Add 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()). - Add
Response::request_focusandResponse::surrender_focus. - Add
TextEdit::code_editor(VERY basic). - Pan and zoom plots.
- Add plot legends.
- Users can now store custom state in
egui::Memory. - Add
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. - Add (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. - Rename
ui.wraptoui.scope.
Fixed 🐛
- Fix defocus-bug on touch screens.
- Fix 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
- Add the option to restrict the dragging bounds of
WindowandAreato a specified area usingdrag_bounds(rect). - Add support for small and raised text.
- Add
ui.set_row_height. - Add
DebugOptions::show_widgetsto debug layouting by hovering widgets. - Add
ComboBoxto more easily customize combo boxes. - Add
Slider::newandDragValue::newto replace old type-specific constructors. - Add
TextEdit::passwordto hide input characters.
Changed 🔧
ui.advance_cursoris now calledui.add_space.kb_focusis now just calledfocus.
Fixed 🐛
- Fix some bugs related to centered layouts.
- Fixed secondary-click to open a menu.
- Fix panic for zero-range sliders and zero-speed drag values.
- Fix false id clash error for wrapping text.
- Fix bug that would close a popup (e.g. the color picker) when clicking inside of it.
Deprecated ☢️
- Deprectated
combo_box_with_labelin favor of newComboBox. - Deprectated type-specific constructors for
SliderandDragValue(Slider::f32,DragValue::usizeetc).
0.10.0 - 2021-02-28 - Plot and polish
Added ⭐
- Add
egui::plot::Plotto plot some 2D data. - Add
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.- Add
Response::changed()to query if e.g. a slider was dragged, text was entered or a checkbox was clicked. - Add 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 ⭐
- Add support for secondary and middle mouse buttons.
- Add
Labelmethods for code, strong, strikethrough, underline and italics. - Add
ui.group(|ui| { … })to visually group some widgets within a frame. - Add
Uihelpers for doing manual layout (ui.put,ui.allocate_ui_at_rectand more). - Add
ui.set_enabled(false)to disable all widgets in aUi(grayed out and non-interactive). - Add
TextEdit::hint_textfor showing a weak hint text when empty. egui::popup::popup_below_widget: show a popup area below another widget.- Add
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. - Add
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!
- Rename
PaintCmdtoShape. - Replace tuple
(Rect, Shape)with tuple-structClippedShape. - Rename 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 ⭐
- Add
ui.scroll_to_cursorandresponse.scroll_to_me(#81 by lucaspoffo). - Add
window.id(…)andarea.id(…)for overriding the defaultId.
Changed 🔧
- Renamed
SrgbatoColor32. - All color contructions 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. - Add
egui::math::Rot2: rotation helper. Responsenow contains theIdof the widget it pertains to.ui.allocate_responsethat allocates space and checks for interactions.- Add
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.- Rename
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).- Add
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.
- Add 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 🐛
- Fix 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