From 91a1e6f23e4cb52c2c01dd5d454f9854f03c793e Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 3 Feb 2026 11:05:37 +0100 Subject: [PATCH 1/6] Ignore that bincode is unmaintained --- deny.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/deny.toml b/deny.toml index 1b3bd8b12..e07d476fa 100644 --- a/deny.toml +++ b/deny.toml @@ -33,6 +33,7 @@ version = 2 ignore = [ "RUSTSEC-2024-0320", # unmaintained yaml-rust pulled in by syntect "RUSTSEC-2024-0436", # unmaintained paste pulled via metal/wgpu, see https://github.com/gfx-rs/metal-rs/issues/349 + "RUSTSEC-2025-0141", # https://rustsec.org/advisories/RUSTSEC-2025-0141 - bincode is unmaintained - https://git.sr.ht/~stygianentity/bincode/tree/v3.0/item/README.md ] [bans] From 67d87233fff7ea97b363c009c8212359f1d88cf6 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 3 Feb 2026 14:48:04 +0100 Subject: [PATCH 2/6] use #[track_caller] in kitdiff --- crates/egui_kittest/src/snapshot.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/egui_kittest/src/snapshot.rs b/crates/egui_kittest/src/snapshot.rs index 8134dbdf0..28b5ac986 100644 --- a/crates/egui_kittest/src/snapshot.rs +++ b/crates/egui_kittest/src/snapshot.rs @@ -859,6 +859,7 @@ impl From for Vec { } impl Drop for SnapshotResults { + #[track_caller] fn drop(&mut self) { // Don't panic if we are already panicking (the test probably failed for another reason) if std::thread::panicking() { From e33050f14bafbb7421c3fc2997d648b3c5ac7c16 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 4 Feb 2026 16:59:12 +0100 Subject: [PATCH 3/6] Update bytes crate --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a99c0d281..d774fa806 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -698,9 +698,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.8.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "calloop" From f1cde5aab495824da6cf8e9d3c4b87a8d007a6f1 Mon Sep 17 00:00:00 2001 From: Roman Popov Date: Wed, 4 Feb 2026 08:52:39 -0800 Subject: [PATCH 4/6] Fix `CentralPanel::show_inside_dyn` to round `panel_rect` (#7868) While using CentralPanel::show_inside_dyn inside egui_tiles I've noticed that sometimes it renders "Unaligned" message with certain tile positions. Match SidePanel behavior by calling round_ui() on the panel rect. image --------- Co-authored-by: Emil Ernerfeldt --- crates/egui/src/containers/panel.rs | 2 +- crates/egui/src/context.rs | 2 +- crates/egui/src/placer.rs | 2 ++ crates/egui_demo_lib/tests/snapshots/demos/Misc Demos.png | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/egui/src/containers/panel.rs b/crates/egui/src/containers/panel.rs index 6281e6b41..f2a4c3b67 100644 --- a/crates/egui/src/containers/panel.rs +++ b/crates/egui/src/containers/panel.rs @@ -1066,7 +1066,7 @@ impl CentralPanel { id, UiBuilder::new() .layer_id(LayerId::background()) - .max_rect(ctx.available_rect().round_ui()), + .max_rect(ctx.available_rect()), ); panel_ui.set_clip_rect(ctx.content_rect()); diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index e28048edf..2665d5edd 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -798,7 +798,7 @@ impl Context { Id::new((ctx.viewport_id(), "__top_ui")), UiBuilder::new() .layer_id(LayerId::background()) - .max_rect(ctx.available_rect().round_ui()), + .max_rect(ctx.available_rect()), ); { diff --git a/crates/egui/src/placer.rs b/crates/egui/src/placer.rs index b5f68f72d..8c54204b9 100644 --- a/crates/egui/src/placer.rs +++ b/crates/egui/src/placer.rs @@ -1,4 +1,5 @@ use crate::{Layout, Painter, Pos2, Rect, Region, Vec2, grid, vec2}; +use emath::GuiRounding as _; #[cfg(debug_assertions)] use crate::{Align2, Color32, Stroke}; @@ -92,6 +93,7 @@ impl Placer { } else { self.layout.available_rect_before_wrap(&self.region) } + .round_ui() } /// Amount of space available for a widget. diff --git a/crates/egui_demo_lib/tests/snapshots/demos/Misc Demos.png b/crates/egui_demo_lib/tests/snapshots/demos/Misc Demos.png index a12313e97..95c172d26 100644 --- a/crates/egui_demo_lib/tests/snapshots/demos/Misc Demos.png +++ b/crates/egui_demo_lib/tests/snapshots/demos/Misc Demos.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:604f716e687fc26abba92769fe2dae75d850b18598d2e8a9524451ab0f760251 -size 65403 +oid sha256:56b44d26946770c0878e11e3197633697ad339a7e8fcffe7279a6b4c45cd3582 +size 65384 From 3cd52881b4237ca362a21b2c975adde51a7df35a Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 10 Feb 2026 11:57:43 +0100 Subject: [PATCH 5/6] Update crate --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d774fa806..9173deaff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1155,9 +1155,9 @@ checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", ] @@ -2870,9 +2870,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-traits" @@ -4490,30 +4490,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", From 64a96ef3917d4e305a79fa5f460af5fc73eabcf8 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 10 Feb 2026 12:24:30 +0100 Subject: [PATCH 6/6] Stop ctrl+arrow etc from moving focus (#7897) Previously any pressing of arrow keys would move the focus, but now we check that there are no modifier keys pressed down --- crates/egui/src/memory/mod.rs | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/crates/egui/src/memory/mod.rs b/crates/egui/src/memory/mod.rs index 9c91c1322..fbc8e6f68 100644 --- a/crates/egui/src/memory/mod.rs +++ b/crates/egui/src/memory/mod.rs @@ -543,22 +543,19 @@ impl Focus { .. } = event && let Some(cardinality) = match key { - crate::Key::ArrowUp => Some(FocusDirection::Up), - crate::Key::ArrowRight => Some(FocusDirection::Right), - crate::Key::ArrowDown => Some(FocusDirection::Down), - crate::Key::ArrowLeft => Some(FocusDirection::Left), + crate::Key::ArrowUp if !modifiers.any() => Some(FocusDirection::Up), + crate::Key::ArrowRight if !modifiers.any() => Some(FocusDirection::Right), + crate::Key::ArrowDown if !modifiers.any() => Some(FocusDirection::Down), + crate::Key::ArrowLeft if !modifiers.any() => Some(FocusDirection::Left), - crate::Key::Tab => { - if modifiers.shift { - Some(FocusDirection::Previous) - } else { - Some(FocusDirection::Next) - } - } - crate::Key::Escape => { + crate::Key::Tab if !modifiers.any() => Some(FocusDirection::Next), + crate::Key::Tab if modifiers.shift_only() => Some(FocusDirection::Previous), + + crate::Key::Escape if !modifiers.any() => { self.focused_widget = None; Some(FocusDirection::None) } + _ => None, } {