0.37.0 - Colored emojis! 🚀
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 can now render any glyph that is supported on your system, including colored emojis and non-Latin scripts.
To enable this, the integration has to use one of two APIs:
Context::add_glyph_rasterizer(GlyphRasterizer): aGlyphRasterizerrenders a single glyph.eframeuses this on web to render individual glyphs to an off-screen canvas #8490, #8545.Context::add_font_provider(Arc<dyn FontProvider>): lets egui find and load whole fonts at runtime. Nativeeframeuses this through the newegui_system_font_providercrate, which lists system fonts withfontique#8512.
We've added a new CompletionPopup widget that adds autocomplete to a TextEdit. You can use it e.g. to add emoji selection like in discord:
https://github.com/user-attachments/assets/f688eca0-cedf-4d17-99b6-5158cccfdbda
This release adds a theme plugin system #8153 by @AdrienZianne. Enable the new experimental feature flag, and there will be a new StyleProvider trait, which can be used to customize visuals for a widget based on the provided classes.
/// Implement the trait for each Widget you'd like to customize
impl StyleProvider<ButtonStyle> for MyTheme {
fn style(&mut self, args: &StyleArgs<'_>) -> ButtonStyle {
// You could construct ButtonStyle from scratch, or extend eguis built in style:
let mut style: ButtonStyle = DefaultStyle.style(args);
if args.has_class("primary") {
style.atom_layout.frame.fill = hex_color!("#FF0000");
}
style
}
}
/// Register all your custom style providers
fn init(ctx: &Context) {
ctx.add_widget_theme::<ButtonStyle>(MyTheme);
ctx.add_widget_theme::<CheckboxStyle>(MyTheme);
// ...
}
Reading an integration test to understand what its doing can be challenging, so we've added a egui_kittest/video feature that records a mp4 video from it, using ffmpeg! Enable it and pass EGUI_KITTEST_RECORD=1 or EGUI_KITTEST_RECORD=open, and a video of the test will be recorded. This is an example from one of our more complex rerun integration tests:
https://github.com/user-attachments/assets/6c8e2b15-4316-42a1-b18a-2f2fb6864db9
-
Better popup, menu, modal and panel trees #8581.
-
AccessKit support on panel resize handles #8578 by @YuEfSaEDU.
-
WidgetTypeis replaced withaccesskit::Role(re-exported asegui::Role) #8555. -
New
Response::accessible_name,Ui::label_inputs_by/Ui::name_inputs, andArea::role#8604, #8608, #8612. -
Invisible widgets are now hidden from the accessibility tree #8621.
-
Improved arrow key navigation within menus #8548 by @pederbe
https://github.com/user-attachments/assets/ab5270f1-2221-4c69-9398-50cadbc2bb41
- Paste images from the clipboard:
Event::PasteImage#8472 by @BernardDGS. Alignedcontainer, e.g. for centering a group of widgets #8540CompletionPopupfor code completion over aTextEdit#8529RangeSlider#8580 by @gavrelina- Atoms:
AtomLayoutis split intoWidgetAtomandContainerAtom#8222. - Some style tweaks: roomier buttons and a larger corner radius #8617, #8445.
- Nicer kinetic scrolling with rubber-banding on overshoot #8662, #8663
default_fontsis no longer a default feature #8583.ViewportCommand::Screenshotnow uses a callback #8489.Id::new,AsIdandFrom<&str> for Idare all deprecated #8534, #8586.- New:
Id::unique,IdSaltSet,IdSaltMap#8534, #8590. Panelconstructors takeimpl AsIdSalt#8592.
- Add
epaint::RoundedRectprimitive #8440 by @emilk - Add
BandShape#8476 by @emilk - Allow transforming after shapes were tessellated and rounded #8587 by @lucasmerlin
- Add
AtomLayoutStyle#8465 by @lucasmerlin - Add
AtomKind::Paint#8524 by @lucasmerlin - StyleProvider for TextEdit and DragValue #8455 by @lucasmerlin
- Add
WidgetText::concatfor joining differently styledRichTexts #8538 by @emilk - Add
RichText::color_overrideto read the explicit text color #8564 by @pederbe - Add
CollapsingHeader::customfor collapsing headers with a custom header UI #8549 by @Its-Just-Nans - Add
MenuConfig::submenu_gapto override the hardcoded gap between a menu and its submenus #8338 by @kiwirm - Allow explicit popup sizing passes #8407 by @yay
- Add
Context::root_uiandContext::run_pass#8535 by @emilk - Add
Context::set_repaint_observer#8644 by @syl20bnr - Add
Plugin::on_exit#8527 by @lucasmerlin - Add
Response::container_hovered,container_clicked,container_context_menu, etc #8537 by @emilk - Make
Areas::set_statepublic #8645 by @syl20bnr - IdTypeMap: add iterator iter_temp_by_type (analogous to remove_by_type) #8672 by @the-maddin
- Add
Keys specific to Windows & Mac keyboards #8373 by @ans1ble - Add
KeyboardShortcut::conflicts_with_text_editing#8536 by @emilk - Add
MouseWheelSourceandInputState::scroll_source()#8665 by @emilk - Add option
scroll_zoomsfor mouse wheel to zoom instead of scroll inside aScenecontainer #7891 by @Tristan117 - Add double-click-and-drag and triple-click-and-drag text selection #8370 by @mudbungie
- Support AccessKit
SetValueandReplaceSelectedTextinTextEdit#8701 by @Elitelord - Improve the fallback syntax highlighter in
egui_extras#8708 by @emilk
- Make
Context::add_glyph_rasterizeridempotent #8600 by @emilk - Apply
set_fonts/add_fontright away when no font is loaded yet, or no text has been laid out this pass #8602, #8609 by @emilk - Name a
Ui,Area,PopuporTooltipin the accessibility tree #8607 by @emilk - Fail kittest tests when an input widget has no accessible name (read-only text fields are exempt) #8589, #8611 by @emilk
- Clarify what
Idto pass inaccessibility_parent#8582 by @lucasmerlin - Bump accesskit{,_consumer,_winit} to latest versions #8496 by @alice
- Rename
Ui::idtoUi::scope_idand clarify its docstring #8542 by @emilk - Use
Ui::unique_idforWidgetRect::parent_id#8543 by @emilk - Build
ComboBoxfrom atoms, and takeimpl IntoAtoms#8618 by @emilk - Round the corners of the color picker #8439 by @emilk
- Deprecate
global_theme_preference_switchin favor ofglobal_theme_preference_buttons#8505 by @emilk - Feat: add more documentation on
Image::texture_options#8357 by @Its-Just-Nans - Support the X11/Wayland PRIMARY selection #8428 by @hallyhaa
- Make
DroppedFile::web_file(and itsweb-sysdependency) opt-in #8669 by @DouglasDwyer - Keep
egui::ContextSend + Syncwith wasm threads #8638 by @teolines - Enable
clippy::std_instead_of_allocin core egui crates #8702 by @emilk
- Remove the
Fontborrow-bag; put its methods onFontsImpl#8504 by @emilk - Remove the
AsIdtrait #8584 by @emilk
- Fix changing widget IDs and false-positive ID change warnings across passes #8316 by @vlansco
- Warn again when automatic widget IDs shift between passes #8670 by @emilk
- Ensure nested
AtomLayouts have unique ids #8556 by @lucasmerlin - Remove unfocusable widgets from the widget cache #8653 by @ori-sky
- Fix AccessKit
ScrollIntoViewfor aUiwithUiBuilder::sense#8646 by @GavinPizza - Fix popups immediately closing on mouse button release #7624 by @vladbat00
- Show menu without a click if another menu is open #7802 by @mkeeter
- Respect the menu style config in sub menus #8572 by @lucasmerlin
- Paint
SubMenuButtonarrow as a triangle instead of a glyph #8525 by @lucasmerlin - Show tooltips of container responses when hovering their children #7909 by @optozorax
- Enable mouse wheel scrolling while dragging inside a
ScrollArea#7919 by @rustbasic - Fix #8495: Match scrollbar interaction rect to drawn bar rect (remove dead zone) #8635 by @dajiaohuang
- Fix scroll modifiers getting stuck when
TouchPhase::Endnever arrives #8636 by @SulimanAbdulrazzaq - Fix NaN panic in
Scenewith zeroscene_rectand unbounded zoom #8622 by @emilk - Fix: Panel/Scene clip rect should respect parent #8562 by @DouglasDwyer
- Fix : an issue where double-clicks were judged as triple-clicks #7915 by @rustbasic
- Fix
TextEditlayout shift with custom margin; unclippedTextEditgrows to fit text #8628 by @emilk - Fix: TextFormat::valign not applied correctly with custom line_height #8030 by @rustbasic
- Don't start a CJK row with full-width closing punctuation #8658 by @Zaneris
- Fix
DragValuereporting changes while typing withupdate_while_editing(false)#8627 by @SulimanAbdulrazzaq - Fix color picker RGB drift when editing alpha #8483 by @ishuowang
- Preserve drop-zone frame styling when idle #8633 by @pederbe
- Keep a
Window's position after a restart #8637 by @teolines - Fix burst of extra repaints before request_repaint_after deadlines #8595 by @xmakro
- Preserve safe area insets when appending input #8484 by @ishuowang
- Avoid cross-viewport GalleyCache eviction #8528 by @rustbasic
0.36.2 - `TextEdit::event_filter` and bugfixes
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.
- Fallback
window_title_frametowindow_framewhen unspecified #8400 by @rustbasic - Don't revert external changes to a focused
DragValue#8403 by @teddytennant
- Match image file extensions case-insensitively #8430 by @emilk
- Fix rendering of thin, angled rectangles #8482 by @emilk
- Fix zero-duration value animations returning the previous value #8469 by @cuishuang
- Fix panic in hit-test when a widget rect contains a NaN #8479 by @emilk
- Properly respect
min_sizeinTextEdit#8420 by @lucasmerlin
0.36.1 - `Sense::drag()` bugfix
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.
- Fix
Sense::dragdetecting drags when clicking widget above it #8396 by @lucasmerlin
0.36.0 - Improved mobile keyboard support
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.
Autocomplete, autocorrect and IMEs now work correctly on iOS and android (on eframe web)!
https://github.com/user-attachments/assets/b0aa1084-0755-4e47-a0b3-0ce6890aca85
- via #8045 by @umajho (and @rustbasic who helped a lot with testing)
You can now reopen closed panels by dragging the handle:
https://github.com/user-attachments/assets/e02895c4-248e-4e22-9694-bdfcd9839bfd
Previously, when switching themes, the window chrome (OS titlebar), stayed in the OS theme. Now, it syncs with the app theme:
https://github.com/user-attachments/assets/6b393057-fdfc-431b-b997-744bc183a8ac
- Add
BoxedWidget: dynamically dispatched widgets #8378 by @emilk - Add
WidgetText::size#8377 by @emilk - Add
LayoutJob::clear#8376 by @emilk - Sync window theme with egui theme #8299 by @lucasmerlin
- Add
egui::Window::title_frame#8353 by @Its-Just-Nans - Add
extra_text_line_spacingto control vertical spacing between text lines #8040 by @rustbasic - Add drag-to-open for collapsible panels #8363 by @emilk
- Rerun
sizing_passwhen reopening popup #8315 by @yay - Update MSRV from 1.92 to 1.95 #8348 by @emilk
- Treat a press that leaves a widget as a drag #8365 by @emilk
- Remove
ModifiersfromRawInputand make it aegui::Event#8336 by @lucasmerlin - Remove
clip_rect_margin#8366 by @emilk
- Improve backtrace trimming for cranelift #8294 by @emilk
- Prevent accidentally dropping
TexturesDelta#8356 by @lucasmerlin - Make non-interactive tooltips not interactable #8362 by @lucasmerlin
- Panels: Take separator line width into account #8367 by @emilk
- Fix TextEdit hint text not following horizontal_align/vertical_align #8332 by @thedavidweng
- Fix ScrollArea failure by handling horizontal and vertical scrolling separately in the missing place #8275 by @rustbasic
- Fix window with a
Gridbeing widenable but not shrinkable again #8386 by @emilk
0.35.0 - Inspection, egui_mcp, classes and improved IME
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.
- New egui_mcp crate based on eguis new inspection protocol
- Set classes on your
Uis to modify widget behavior based on surrounding context - Improved IME
This release includes a new inspection protocol for egui. It allows reading the accesskit tree of a running app, as well as sending events to control it. It's implemented via a new InspectionPlugin in the egui_inspection crate. Eframe includes a new inspection feature. When enabled, you can enable inspection by launching the app with EGUI_INSPECTION=1. This will cause the app to listen on port 5719.
The first inspection protocol consumer is egui_mcp. It's a mcp server that allows your agent to see and use egui apps. It can be used to have the agent use the app, reproduce bugs and verify its changes. Install it via cargo install --git https://github.com/rerun-io/kittest_inspector egui_mcp and then add it to your agent via claude mcp add egui egui-mcp.
There is also a plan of adding a general inspection gui using the same protocol, that can e.g. be used to step through kittest tests frame by frame.
Here is claude using the mcp to try some of the egui demos (sped up by a lot, claude is slow):
https://github.com/user-attachments/assets/c3dd0456-acfc-428c-8efe-f4a244c9e3ba
- Add
egui_inspectionprotocol and plugin #8234 by @lucasmerlin
As part of css like styling, we've added classes to egui. You can already use them to e.g. modify widget behavior or styling based on surrounding context. Add classes to the container:
ui.scope_builder(UiBuilder::new().with_class("my_container"), |ui| {
...
});
In your widget, check if we're in my_container, to e.g. change sizes or colors:
let in_container = ui.stack().iter().any(|s| s.classes.has("my_container"));
Today this only works for custom widgets and ui code, but the next step will be a styling system that allows you to modify built in widget styling based on these classes.
- Add
ClassestoUiBuilderand some Widgets #7843 by @AdrienZianne
IME visuals received an overhaul, they are now indicated by an underline and properly show the cursor during composition:
https://github.com/user-attachments/assets/487c7e7c-ef6d-4a86-8dbc-8c71871b4470
- Add
ClassestoUiBuilderand some Widgets #7843 by @AdrienZianne - Drag-to-close panels #8182 by @emilk
- Add
AtomKind::Layout, for nestingAtomLayout#8219 by @lucasmerlin - Add
AtomLayout::direction#8221 by @lucasmerlin - Make the size of tabs and thin space configurable #8070 by @emilk
- Add
subpixel_binningtoTextOptionsandFontTweak#8072 by @emilk - Allow
AtomsinUi::small_button#8159 by @lucasmerlin - Atom support for
egui::WindowTitlebar #8154 by @lucasmerlin - Add
AsIdandIdSalt#8184 by @emilk - Add Context::set_cursor_image for OS-level custom cursors #8155 by @all3f0r1
- Add
ViewportBuilder::with_monitor+ViewportCommand::SetMonitor#8140 by @Le-Syl21 - Add modifier keys to
egui::Key#8127 by @Le-Syl21 - Expose interactive rects from the last pass #8211 by @psyche314
- Add
AtomLayout::selectablefor opt-in text selection #8224 by @akagifreeez - Add
LayoutJob::format_at_byte#8244 by @emilk - Add
atoms()helpers to getAtomsfrom widgets #8128 by @Nashvill375
- Improve IME handling, add public method
owns_ime_eventsonMemory#7983 by @umajho - Use
harfrustfor better kerning and ligatures #8031 by @gcailly - Rework
Windowmargins and setclip_rect_marginto zero #7725 by @emilk - Slide panels when animating them #8175 by @emilk
- Slow down animation time from 0.1s to 0.2s #8176 by @emilk
- Smoother CollapsingHeader animation #8177 by @emilk
- Drag-to-scroll: now only on touch screens #8181 by @emilk
Window: move only by dragging title bar #8183 by @emilk- Rename
Panelmethods #8192 by @emilk - Panels: double-click resize edge to toggle #8193 by @emilk
- Rename
AlphaFromCoveragetoFontColorTransferFunction#8201 by @emilk - Smoother collapsed-panel animation #8202 by @emilk
- Improve
Debug-formatting ofIdin debug-builds #8190 by @emilk - Use strongly typed
CharIndexandByteIndex+ bug fixes #8245 by @emilk - Allow downscaling image in
GetScreenshotinspection request #8248 by @lucasmerlin - Announce pressed state of selectable buttons to screen readers #8130 by @antoinecellerier
- Pre-populate font variation axes in the
FontTweakUI #8258 by @emilk - Make font hinting target configurable via
FontTweak#8262 by @emilk
- Remove everything that was marked
#[deprecated]#8105 by @emilk - Remove 64-bit atomics in main crate #8037 by @kay-lambdadelta
- Remove
impl Into<f32>arguments #8194 by @emilk
- Don't hide whitespaces in centered and right aligned text edits #8102 by @lucasmerlin
- Don't allow resizing past minimum content size #8152 by @lucasmerlin
- Fix resizing of
Grid#8170 by @lucasmerlin - Fix glyph caching on font variations #8189 by @emilk
Panel: never overflow available width, normax_width#8198 by @emilk- Fixes color picker hue drift at low alpha values #8208 by @aedm
- Fix: ScrollArea layout jitter with floating bars and zoom levels #7944 by @rustbasic
- Fix #2142 - lost_focus not firing after a mid-frame focus transfer #8210 by @ufoscout
- Fix label selection in deferred viewports #8242 by @yay
0.34.3: wgpu surface lifecycle fixes
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.
- Fix random hangs by improving
wgpu::Surfacelifecycle handling #8171 by @grtlr - Fix
ScrollArea::scroll_to_*calls whenstick_to_bottomis Active #8033 by @AmmarAbouZor
0.34.2: Text layout and selection fixes
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.
- Fix wrong color of last glyph of selected text #8075 by @emilk
- Fix text selection of centered and right-aligned text #8076 by @emilk
- Fix
Context::is_pointer_over_eguiandContext::egui_wants_pointer_input#8081 by @emilk - Fix centered & right aligned
TextEdit#8082 by @lucasmerlin
- Optimize text selection performance for large documents #7917 by @rustbasic
0.34.1: Enable WebGL fallback in eframe
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.
0.34.0: More `Ui`, less `Context`
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.
- Sharper text unlocked by switching font rendering crate to
skrifa - Fade out edges of
ScrollAreas - Use
Uias the main entrypoint
The font rendering backend was switched from ab_glyph to skrifa + vello_cpu. This enabled us support font hinting and variations. It also paves the way for more font improvements in the future, like support for color emojis and adding helpers for variations like RichText::bold.
Font hinting makes text more clear (look at the =):
https://github.com/user-attachments/assets/ea9151ec-869f-4c05-ab59-836114683417
We now support setting variable font parameters:
https://github.com/user-attachments/assets/0febde1c-ebf6-4d85-8f96-86ec0f934ecf
(Unfortunately there is currently a bug with variations, meaning changing them live like this won't work in practise. There is a draft PR to fix it, but it didn't make the release)
- Replace ab_glyph with Skrifa + vello_cpu; enable font hinting #7694 by @valadaptive
- Add font variations API #7859 by @valadaptive
egui has long had a confusing overlap in responsibilities between Context and Ui. In particular, you could add panels to either one (or both!). In this release, we switch from having Context be the main entrypoint, and instead provide whole-app Ui. In egui we've replaced Context::run with Context::run_ui, and changed viewports to be given a &mut Ui instead of Context. In eframe we've deprecated App::update replaced it with App::ui (which provides a &mut Ui instead of a &Context).
In addition to this, Ui now derefs to Context, so all code like ui.ctx().input(…) can now be written ui.input(…). This means you are much less likely to have to use naked Contexts. Context can still be useful though, since they implement Clone and can be sent to other threads so you can call .request_repaint on them.
- Add
Context::run_ui#7736 by @emilk - Add
Deref<Target = Context>forUi#7770 by @emilk - Replace
App::updatewithfn logicandfn ui#7775 by @emilk - Rename
Context::styletoglobal_style; avoid confusion w/Ui::style#7772 by @emilk - Rename functions in
Contextto avoid confusion #7773 by @emilk - Viewports: give the caller a
Uiinstead ofContext#7779 by @emilk
As part of the above work, we have unified the panel API. SidePanel and TopBottomPanel are deprecated, replaced by a single Panel. Furthermore, it is now deprecated to use panels directly on Context. Use the show_inside functions instead, acting on Uis.
This unification and simplification will make it easier to maintain and improve panels going forward.
- Add
Panelto replaceSidePanelandTopBottomPanel#5659 by @sharky98 - Deprecate using
Paneldirectly on aContext#7781 by @emilk - Deprecate
CentralPanel::show#7783 by @emilk - Deprecate
Context::used_sizeandContext::available_rect#7788 by @emilk
- Add
is_scrolling/is_smooth_scrollingutil, checking for active scroll action #7669 by @IsseW - Allow multiple atoms in
Button::shortcut_textandright_text#7696 by @emilk - Add
ScrollArea::content_margin#7722 by @emilk - Per-widget style #7667 by @AdrienZianne
- Plugin: export
TypedPluginGuardandTypedPluginHandle#7780 by @apekros - Add
ViewportInfo::occludedandvisible#7948 by @emilk - Add
Atomprefix/suffix support toDragValue#7949 by @lucasmerlin ⚠️ Atom improvements:Atom::id,align,closure,max_size#7958 by @lucasmerlin- Add
DebugOptions::warn_if_rect_changes_id#7984 by @emilk TextEditAtomprefix/suffix #7587 by @lucasmerlin- Add
Button::left_text#7955 by @rustbasic - Add
Response::parent_id#8010 by @lucasmerlin - Add
Context::text_edit_focused#8014 by @emilk - Add
Context::time#8017 by @emilk - Add
Ui::is_tooltip#8016 by @emilk - Add
UiStack::bg_color#8020 by @emilk - Make
egui::IdSetpublic #8019 by @lucasmerlin - Add raw key methods to TypeIdMap #8007 by @AlexanderSchuetz97
- Remove
accesskitfeature and always depend onaccesskit#7701 by @emilk - Update MSRV from 1.88 to 1.92 #7793 by @JasperBRiedel
- Improve modifier handling when scrolling #7678 by @emilk
- Apply preferred font weight when loading variable fonts #7790 by @pmnxis
- Make scroll bars and resize splitters visible to accesskit #7804 by @emilk
- Allow moving existing widgets to the top of interaction stack #7805 by @emilk
- Slightly change interact behavior around thin splitters #7806 by @emilk
- Move window resize interaction to be over contents #7807 by @emilk
- Don't expand widgets on hover #7808 by @emilk
- Make
FrameCache::getreturn a reference instead of cloning the cached value #7834 by @KonaeAkira - Update selected dependencies #7920 by @oscargus
- Make
Galley::pos_from_layout_cursorpub#7864 by @dionb - Update accesskit to 0.24.0 (and related deps) #7850 by @delan
- Quit on Ctrl-Q #7985 by @emilk
- Fade out the edges of
ScrollAreas#8018 by @emilk
- Fix: ensure
CentralPanel::show_insideallocates space in parent #7778 by @emilk - Heed constrain rect when auto-positioning windows #7786 by @emilk
- Fix jitter when hovering edge of scroll area close to resize splitter #7803 by @emilk
- Don't focus Areas, Windows and ScrollAreas #7827 by @lucasmerlin
- Fix backspacing leaving last character in IME prediction not removed on macOS native and Safari #7810 by @umajho
- Implemented distance threshold for double/triple clicks #7817 by @bl4ze4447
- Fix
CentralPanel::show_inside_dynto roundpanel_rect#7868 by @ripopov - Stop ctrl+arrow etc from moving focus #7897 by @emilk
- Fix scroll area not consuming scroll events #7904 by @lucasmerlin
- Pass in an explicit id in
UiBuilder, to avoid wrapping passed in ids with Id::new() #7925 by @lucasmerlin - Fix crash when dragging a DragValue through small floats #7939 by @Fyrecean
- Fix emoji icon font #7940 by @Jhynjhiruu
- Fixes the overly aggressive overflow elision in
truncate()and similar for os scaling other than 100% #7867 by @RndUsr123 - Fix text color when selecting newline character #7951 by @emilk
- Fix: repaint on drag-and-drop files #7953 by @emilk
- Fix instable IDs following animated panels #7994 by @emilk
- Enables every combination of
TextEditandLayoutJobalignments #7831 by @RndUsr123 - Fix
horizontal_wrappingrow height after usingtext_edit_multiline#8000 by @optozorax - Fix menu keyboard toggle for open submenus #7957 by @fjkorf
- Fix:
Visuals::interact_cursorsupport inButton#7986 by @mango766
0.33.3 - Improve kittest and text selection
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.
- Treat
.as a word-splitter in text navigation #7741 by @emilk - Change text color of selected text #7691 by @emilk
- Enforce consistent snapshot updates #7744 by @lucasmerlin
kittest: add drag-and-drop helpers #7690 by @emilk
- Bump
ehttpto 0.6.0 #7757 by @jprochazk