mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 14:49:06 -04:00
Merge branch 'main' into accesskit-subtrees
This commit is contained in:
26
Cargo.lock
26
Cargo.lock
@@ -685,9 +685,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"
|
||||
@@ -1142,9 +1142,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",
|
||||
]
|
||||
@@ -2855,9 +2855,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"
|
||||
@@ -4475,30 +4475,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",
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -1198,10 +1198,9 @@ impl Prepared {
|
||||
// Clear scroll delta so no parent scroll will use it:
|
||||
ui.input_mut(|input| {
|
||||
if always_scroll_enabled_direction {
|
||||
input.smooth_scroll_delta()[0] = 0.0;
|
||||
input.smooth_scroll_delta()[1] = 0.0;
|
||||
input.smooth_scroll_delta = Vec2::ZERO;
|
||||
} else {
|
||||
input.smooth_scroll_delta()[d] = 0.0;
|
||||
input.smooth_scroll_delta[d] = 0.0;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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()),
|
||||
);
|
||||
|
||||
{
|
||||
|
||||
@@ -319,7 +319,9 @@ pub struct InputState {
|
||||
/// Which modifier keys are down at the start of the frame?
|
||||
pub modifiers: Modifiers,
|
||||
|
||||
// The keys that are currently being held down.
|
||||
/// The keys that are currently being held down.
|
||||
///
|
||||
/// Keys released this frame are NOT considered down.
|
||||
pub keys_down: HashSet<Key>,
|
||||
|
||||
/// In-order events received this frame
|
||||
@@ -765,6 +767,8 @@ impl InputState {
|
||||
}
|
||||
|
||||
/// Is the given key currently held down?
|
||||
///
|
||||
/// Keys released this frame are NOT considered down.
|
||||
pub fn key_down(&self, desired_key: Key) -> bool {
|
||||
self.keys_down.contains(&desired_key)
|
||||
}
|
||||
@@ -1020,6 +1024,7 @@ pub struct PointerState {
|
||||
/// Used for calculating velocity of pointer.
|
||||
pos_history: History<Pos2>,
|
||||
|
||||
/// Buttons currently down, excluding those released this frame.
|
||||
down: [bool; NUM_POINTER_BUTTONS],
|
||||
|
||||
/// Where did the current click/drag originate?
|
||||
@@ -1407,6 +1412,8 @@ impl PointerState {
|
||||
}
|
||||
|
||||
/// Is any pointer button currently down?
|
||||
///
|
||||
/// Buttons released this frame are NOT considered down.
|
||||
pub fn any_down(&self) -> bool {
|
||||
self.down.iter().any(|&down| down)
|
||||
}
|
||||
@@ -1462,6 +1469,8 @@ impl PointerState {
|
||||
}
|
||||
|
||||
/// Is this button currently down?
|
||||
///
|
||||
/// Buttons released this frame are NOT considered down.
|
||||
#[inline(always)]
|
||||
pub fn button_down(&self, button: PointerButton) -> bool {
|
||||
self.down[button as usize]
|
||||
@@ -1518,18 +1527,24 @@ impl PointerState {
|
||||
}
|
||||
|
||||
/// Is the primary button currently down?
|
||||
///
|
||||
/// Buttons released this frame are NOT considered down.
|
||||
#[inline(always)]
|
||||
pub fn primary_down(&self) -> bool {
|
||||
self.button_down(PointerButton::Primary)
|
||||
}
|
||||
|
||||
/// Is the secondary button currently down?
|
||||
///
|
||||
/// Buttons released this frame are NOT considered down.
|
||||
#[inline(always)]
|
||||
pub fn secondary_down(&self) -> bool {
|
||||
self.button_down(PointerButton::Secondary)
|
||||
}
|
||||
|
||||
/// Is the middle button currently down?
|
||||
///
|
||||
/// Buttons released this frame are NOT considered down.
|
||||
#[inline(always)]
|
||||
pub fn middle_down(&self) -> bool {
|
||||
self.button_down(PointerButton::Middle)
|
||||
|
||||
@@ -685,7 +685,7 @@ pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) {
|
||||
}
|
||||
|
||||
/// For use in tests; especially doctests.
|
||||
pub fn __run_test_ui(add_contents: impl Fn(&mut Ui)) {
|
||||
pub fn __run_test_ui(mut add_contents: impl FnMut(&mut Ui)) {
|
||||
let ctx = Context::default();
|
||||
ctx.set_fonts(FontDefinitions::empty()); // prevent fonts from being loaded (save CPU time)
|
||||
let _ = ctx.run_ui(Default::default(), |ui| {
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
{
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -54,8 +54,8 @@ impl UiBuilder {
|
||||
///
|
||||
/// This is a shortcut for `.id_salt(my_id).global_scope(true)`.
|
||||
#[inline]
|
||||
pub fn id(mut self, id: impl Hash) -> Self {
|
||||
self.id_salt = Some(Id::new(id));
|
||||
pub fn id(mut self, id: Id) -> Self {
|
||||
self.id_salt = Some(id);
|
||||
self.global_scope = true;
|
||||
self
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:604f716e687fc26abba92769fe2dae75d850b18598d2e8a9524451ab0f760251
|
||||
size 65403
|
||||
oid sha256:56b44d26946770c0878e11e3197633697ad339a7e8fcffe7279a6b4c45cd3582
|
||||
size 65384
|
||||
|
||||
@@ -721,11 +721,14 @@ impl<State> Harness<'_, State> {
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
// Close temp file so it isn't locked when `open` tries to launch it (on Windows)
|
||||
let path = temp_file.into_temp_path();
|
||||
|
||||
#[expect(clippy::print_stdout)]
|
||||
{
|
||||
println!("Wrote debug snapshot to: {}", path.display());
|
||||
}
|
||||
let result = open::that(path);
|
||||
let result = open::that(&path);
|
||||
if let Err(err) = result {
|
||||
#[expect(clippy::print_stderr)]
|
||||
{
|
||||
@@ -856,6 +859,7 @@ impl From<SnapshotResults> for Vec<SnapshotError> {
|
||||
}
|
||||
|
||||
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() {
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user