Update egui-group to 0.28, ||, ^0 - #97
Closed
renovate[bot] wants to merge 1 commit into
Closed
Conversation
Contributor
Author
|
Contributor
Author
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.28→0.28, ||, ^00.29→0.29, ||, ^00.30→0.30, ||, ^00.31→0.31, ||, ^00.32→0.32, ||, ^00.33→0.33, ||, ^00.34→0.34, ||, ^00.35→0.35, ||, ^00.28→0.28, ||, ^00.29→0.29, ||, ^00.30→0.30, ||, ^00.31→0.31, ||, ^00.32→0.32, ||, ^00.33→0.33, ||, ^00.34→0.34, ||, ^00.35→0.35, ||, ^0Release Notes
emilk/egui (emath028)
v0.36.1Compare Source
Nothing new
v0.36.0Compare Source
Nothing new
v0.35.0Compare Source
Nothing new
v0.34.3Compare Source
Nothing new
v0.34.2Compare Source
Nothing new
v0.34.1Compare Source
Nothing new
v0.34.0Compare Source
Nothing new
v0.33.3Compare Source
Nothing new
v0.33.2Compare Source
v0.33.0Compare Source
emath::fast_midpoint#7435 by @emilkOrderedFloathash performance #7512 by @valadaptivev0.32.3: - Fix tooltips for ellided textCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
egui
TextEdit's in RTL layouts #5547 by @zakarumychMesh::add_rect_with_uv#7511 by @valadaptiveegui_extras
FileLoaderandEhttpLoader#7515 by @emilkv0.32.2: - Ui::place, Harness::mask and more bug fixesCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
Add
Ui::placeUi::placeis similar toUi::put, but it doesn't update the currentUis cursor. This is very useful when using the newAtoms or making badge-like widgets.The following breaks with
Ui::putbut works just fine withUi::place:Add
Harness::maskHarness::maskallows for simple masking ofRects you don't want to be visible in snapshot test images. The rect will be masked with a ugly color to make it obvious whats going on:egui
Ui::place, to place widgets without changing the cursor #7359 by @lucasmerlinSubMenushould not display when ui is disabled #7428 by @ozwaldorfegui_extras
forget_imageis called while loading #7380 by @VanadiaeImageLoader,FileLoader,EhttpLoader#7494 by @lucasmerlinegui_kittest
epaint
Unsorted commits
v0.32.1: - Misc bug fixesCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
egui changelog
⭐ Added
ComboBox::popup_style#7360 by @lucasmerlin🐛 Fixed
Popupnot closing #7383 by @lucasmerlinWidgetText::Textignoring fallback font and overrides #7361 by @lucasmerlinoverride_text_colorpriority #7439 by @YgorSouzaeframe changelog
popstateevent listener #7403 by @irevoireegui_kittest changelog
UPDATE_SNAPSHOTS: only update if we didn't pass the test #7455 by @emilkv0.32.0: - Atoms, popups, and better SVG supportCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
egui 0.32.0 changelog
This is a big egui release, with several exciting new features!
Let's dive in!
⚛️ Atoms
egui::Atomis the new, indivisible building block of egui (hence the name).It lets you mix images and text in many places where you would previously only be able to add text.
Atoms is the first step towards a more powerful layout engine in egui - more to come!
Right now an
Atomis anenumthat can be eitherWidgetText,Image, orCustom.The new
AtomLayoutcan be used within widgets to do basic layout.The initial implementation is as minimal as possible, doing just enough to implement what
Buttoncould do before.There is a new
IntoAtomstrait that works with tuples ofAtoms. Each atom can be customized with theAtomExttraitwhich works on everything that implements
Into<Atom>, so e.g.RichTextorImage.So to create a
Buttonwith text and image you can now do:Anywhere you see
impl IntoAtomsyou can add any number of images and text, in any order.As of 0.32, we have ported the
Button,Checkbox,RadioButtonto use atoms(meaning they support adding Atoms and are built on top of
AtomLayout).The
Buttonimplementation is not only more powerful now, but also much simpler, removing ~130 lines of layout math.In combination with
ui.read_response, custom widgets are really simple now, here is a minimal button implementation:You can even use
Atom::customto add custom content to Widgets. Here is a button in a button:Screen.Recording.2025-07-10.at.13.10.52.mov
Currently, you need to use
atom_uito get aAtomResponsewhich will have theRectto use, but in the futurethis could be streamlined, e.g. by adding a
AtomKind::Callbackor by passing the Rects back withegui::Response.Basing our widgets on
AtomLayoutalso allowed us to improveResponse::intrinsic_size, which will now report thecorrect size even if widgets are truncated.
intrinsic_sizeis the size that a non-wrapped, non-truncated,non-justified version of the widget would have, and can be useful in advanced layout
calculations like egui_flex.
Details
AtomLayout, abstracting layouting within widgets #5830 by @lucasmerlinGalley::intrinsic_sizeand use it inAtomLayout#7146 by @lucasmerlin❕ Improved popups, tooltips, and menus
Introduces a new
egui::Popupapi. Checkout the new demo on https://egui.rs:Screen.Recording.2025-07-10.at.11.47.22.mov
We introduced a new
RectAlignhelper to align a rect relative to an other rect. ThePopupwill by default try to find the bestRectAlignbased on the source widgets position (previously submenus would annoyingly overlap if at the edge of the window):Screen.Recording.2025-07-10.at.11.36.29.mov
Tooltipandmenuhave been rewritten based on the newPopupapi. They are now compatible with each other, meaning you can just show aui.menu_button()in anyPopupto get a sub menu. There are now customizableMenuButtonandSubMenuButtonstructs, to help with customizing your menu buttons. This means menus now also supportPopupCloseBehaviorso you can remove yourclose_menucalls from your click handlers!The old tooltip and popup apis have been ported to the new api so there should be very little breaking changes. The old menu is still around but deprecated.
ui.menu_buttonetc now open the new menu, if you can't update to the new one immediately you can use the old buttons from the deprecatedegui::menumenu.We also introduced
ui.close()which closes the nearest container. So you can now conveniently closeWindows,Collapsibles,Modals andPopups from within. To use this for your own containers, callUiBuilder::closableand then check for closing within that ui viaui.should_close().Details
PopupandTooltip, unifying the previous behaviours #5713 by @lucasmerlinUi::closeandResponse::should_close#5729 by @lucasmerlinegui::Popup#5716 by @lucasmerlinPopupAPI for the color picker button #7137 by @lucasmerlinMemory::keep_popup_openisn't called #5814 by @juancampaMemory::popupAPI in favor of newPopupAPI #7317 by @emilk▲ Improved SVG support
You can render SVG in egui with
(Requires the use of
egui_extras, with thesvgfeature enabled and a call toinstall_image_loaders).Previously this would sometimes result in a blurry SVG, epecially if the
Imagewas set to be dynamically scale based on the size of theUithat contained it. Now SVG:s are always pixel-perfect, for truly scalable graphics.Details
Image::paint_atpixel-perfect crisp for SVG images #7078 by @emilk✨ Crisper graphics
Non-SVG icons are also rendered better, and text sharpness has been improved, especially in light mode.
Details
Migration guide
We have some silently breaking changes (code compiles fine but behavior changed) that require special care:
wgpu backend features
Menus close on click by default
ui.close_menu()calls from button click handlers since they are obsoletePopupCloseBehavior:SubMenuButton, but by default it should be passed to any submenus when usingMenuButton.Memory::is_popup_openapi now requires calls toMemory::keep_popup_openkeep_popup_openis not called.Popupapi which handles this for you.keep_popup_open:⭐ Other improvements
Label::show_tooltip_when_elided#5710 by @brycebergerUi::allocate_new_uiin favor ofUi::scope_builder#5764 by @lucasmerlinexpand_bgto customize size of text background #5365 by @MeGaGiGaGonTextBufferforlayouterinTextEditinstead of&str#5712 by @kernelkindSlider::update_while_editing(bool)API #5978 by @mbernatScene::drag_pan_buttonsoption. Allows specifying which pointer buttons pan the scene by dragging #5892 by @mitchmindtreeScene::senseto customize howSceneresponds to user input #5893 by @mitchmindtreeTextEditarrow navigation to handle Unicode graphemes #5812 by @MStarhaScrollAreaimprovements for user configurability #5443 by @MStarhaResponse::clicked_with_open_in_background#7093 by @emilkModifiers::matches_any#7123 by @emilkContext::format_modifiers#7125 by @emilkOperatingSystem::is_mac#7122 by @emilkContext::current_pass_index#7276 by @emilkContext::cumulative_frame_nr#7278 by @emilkVisuals::text_edit_bg_color#7283 by @emilkVisuals::weak_text_alphaandweak_text_color#7285 by @emilkegui::Sidesshrink_left/shrink_right#7295 by @lucasmerlin🔧 Changed
hint_textinWidgetInfo#5724 by @bircniDefaultforThemePreference#5702 by @MichaelGruppavailable_rectdocs with the new reality after #4590 #5701 by @podusowskiViewportpositioning #5715 by @aspiringLichSizeHint#7079 by @emilkInputOptions#7121 by @emilkButtoninherits thealt_textof theImagein it, if any #7136 by @emilkTooltipslightly #7151 by @emilkui.disable()to modify opacity #7282 by @emilkBitOrandBitOrAssignforRect#7319 by @lucasmerlin🔥 Removed
SelectableLabel#7277 by @lucasmerlin🐛 Fixed
Scene: makescene_rectfull size on reset #5801 by @graydenshandScene:TextEditselection when placed in aScene#5791 by @karhuScene: Set transform layer before calling user content #5884 by @mitchmindtreeTextShapeunderline width #5865 by @emilkconsume_key#7134 by @lucasmerlinemoji-icon-fontwith fix for fullwidth latin characters #7067 by @emilkScrollArea#5286 by @gilbertoalexsantosResponse::clicked_elsewherenot returningtruesometimes #5798 by @lucasmerlinDragValueexpansion when editing #5809 by @MStarhaDragValueeating focus, causing focus to reset #5826 by @KonaeAkiraavailable_space#6900 by @lucasmerlinleading_spacesometimes being ignored during paragraph splitting #7031 by @afishhhComboBox::from_id_source#7055 by @aelmizebend_passis called for all loaders #7072 by @emilkdebug_asserttriggered bymenu/intersect_ray#7299 by @emilkRect::areato return zero for negative rectangles #7305 by @emilk🚀 Performance
WidgetTextsmaller and faster #6903 by @lucasmerlineframe 0.32.0 changelog
⭐ Added
movable_by_window_backgroundoption to viewport #5412 by @jim-echas_shadowandwith_has_shadowto ViewportBuilder #6850 by @gaelanmcmillan🔧 Changed
should_propagate_eventand addshould_prevent_default#5779 by @th0rexViewportpositioning #5715 by @aspiringLichweb-sysmin version to0.3.73#5862 by @wareyaronto0.10.1#6861 by @torokati44accesskiton Android NativeActivity, makinghello_androidworking again #6855 by @podusowskiprefers-color-scheme: no-preference#7293 by @emilk🐛 Fixed
glowbackend #6893 by @wareyaNSImagefrom png data #7252 by @Wumpfv0.31.1: - TextEdit and egui_kittest fixesCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
egui
TextEdit::singleline#5640 by @IaVashikegui_extras
egui_kittest
epaint
v0.31.0: - Scene container, improved rendering qualityCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
Highlights ✨
Scene container
This release adds the
Scenecontainer to egui. It is a pannable, zoomable canvas that can containWidgets and childUis.This will make it easier to e.g. implement a graph editor.
Clearer, pixel perfect rendering
The tessellator has been updated for improved rendering quality and better performance. It will produce fewer vertices
and shapes will have less overdraw. We've also defined what
CornerRadius(previouslyRounding) means.We've also added a tessellator test to the demo app, where you can play around with different
values to see what's produced:
tessellator-test.mp4
Check the PR for more details.
CornerRadius,Margin,Shadowsize reductionIn order to pave the path for more complex and customizable styling solutions, we've reduced the size of
CornerRadius,MarginandShadowvalues toi8andu8.Migration guide
StrokeKindto all yourPainter::rectcalls #5648StrokeKind::defaultwas removed, since the 'normal' value depends on the context #5658StrokeKind::Insidewhen drawing rectanglesStrokeKind::Middlewhen drawing open pathsRoundingtoCornerRadius#5673CornerRadius,MarginandShadowhave been updated to usei8andu8#5563, #5567, #5568as i8/as u8oras _if you want Rust to infer the typef32value is bigger than127it will be clamped to127RectShapeparameters changed #5565Framenow takes theStrokewidth into account for its sizing, so check all views of your app to make sure they still look right.Read the PR for more info.
⭐ Added
egui::Scenefor panning/zooming aUi#5505 by @grtlrOutputCommandfor copying text and opening URL:s #5532 by @emilkContext::copy_image#5533 by @emilkWidgetType::ImageandImage::alt_text#5534 by @lucasmerlinepaint::Brushfor controllingRectShapetexturing #5565 by @emilknohash_hasher::IsEnabledforId#5628 by @emilk!,{,}#5548 by @Its-Just-NansRectShape::stroke_kindto control if stroke is inside/outside/centered #5647 by @emilk🔧 Changed
Framenow includes stroke width as part of padding #5575 by @emilkRoundingtoCornerRadius#5673 by @emilkStrokeKindwhen painting rectangles with strokes #5648 by @emilk🔥 Removed
egui::special_emojis::TWITTER#5622 by @emilkStrokeKind::default#5658 by @emilk🐛 Fixed
profilingcrate #5494 by @lucasmerlinArea::compare_order()#5569 by @HactarCE🚀 Performance
u8inCornerRadius, and introduceCornerRadiusF32#5563 by @emilkMarginusingi8to reduce its size #5567 by @emilkShadowby usingi8/u8instead off32#5568 by @emilkResponseandSense#5556 by @polwelv0.30.0: - egui_kittest and modalsCompare Source
egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native.
Try it now: https://www.egui.rs/
egui development is sponsored by Rerun, a startup building an SDK for visualizing streams of multimodal data.
egui_kittestThis release welcomes a new crate to the family: egui_kittest.
egui_kittestis a testing framework for egui, allowing you to test both automation (simulated clicks and other events),and also do screenshot testing (useful for regression tests).
egui_kittestis built usingkittest, which is a general GUI testing framework that aims to work with any Rust GUI (not just egui!).kittestuses the accessibility libraryAccessKitfor automatation and to query the widget tree.kittestandegui_kittestare written by @lucasmerlin.Here's a quick example of how to use
egui_kittestto test a checkbox:egui changelog
✨ Highlights
Modal, a popup that blocks input to the rest of the application (#5358 by @lucasmerlin)⭐ Added
ModalandMemory::set_modal_layer#5358 by @lucasmerlinUiBuilder::layer_idand removelayer_idfromUi::new#5195 by @emilkTextEdit#5203 by @bircniResponse::intrinsic_sizeforTextEdit#5266 by @lucasmerlinMultiTouchInfo#5247 by @lucasmerlinContext::add_font#5228 by @frederik-uniBox<str>forWidgetText,RichText#5309 by @dimtpapWindow::scroll_bar_visibility#5231 by @ZeenobitComboBox::close_behavior#5305 by @avalschpainter.line()#5291 by @bircniButton::image_tint_follows_text_color#5430 by @emilkContext::layer_transform_to_global&layer_transform_from_global#5465 by @emilk🔧 Changed
Arcto reduce memory consumption #5276 by @StarStarJegui::util::cachetoegui::cache; addFramePublisher#5426 by @emilkOrder::PanelResizeLine#5455 by @emilkprofilingcrate to support more profiler backends #5150 by @teddemunnik🐛 Fixed
ScrollAreadragConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.