1
0
Fork 0
forked from wry/wry

Merge pull request #842 from mahkoh/jorth/egui-34

egui: upgrade to 0.34
This commit is contained in:
mahkoh 2026-03-30 14:04:52 +02:00 committed by GitHub
commit 24293a53e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 351 additions and 218 deletions

206
Cargo.lock generated
View file

@ -3,21 +3,14 @@
version = 4
[[package]]
name = "ab_glyph"
version = "0.2.32"
name = "accesskit"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2"
checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser",
"uuid",
]
[[package]]
name = "ab_glyph_rasterizer"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
[[package]]
name = "addr2line"
version = "0.25.1"
@ -203,6 +196,20 @@ name = "bytemuck"
version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
dependencies = [
"bytemuck_derive",
]
[[package]]
name = "bytemuck_derive"
version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "byteorder"
@ -300,6 +307,15 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
[[package]]
name = "color"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a18ef4657441fb193b65f34dc39b3781f0dfec23d3bd94d0eeb4e88cde421edb"
dependencies = [
"bytemuck",
]
[[package]]
name = "colorchoice"
version = "1.0.5"
@ -383,19 +399,20 @@ dependencies = [
[[package]]
name = "ecolor"
version = "0.33.3"
version = "0.34.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e"
checksum = "137c0ce4ce4152ff7e223a7ce22ee1057cdff61fce0a45c32459c3ccec64868d"
dependencies = [
"emath",
]
[[package]]
name = "egui"
version = "0.33.3"
version = "0.34.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3"
checksum = "f34aaf627da598dfadd64b0fee6101d22e9c451d1e5348157312720b7f459f0f"
dependencies = [
"accesskit",
"ahash",
"bitflags",
"emath",
@ -409,9 +426,9 @@ dependencies = [
[[package]]
name = "egui_tiles"
version = "0.14.1"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ef184e589f0a80560bd3b63017634642d1ba112a8a8d9b29341f7cafd04601f"
checksum = "08e570b77f6cce3292eba4aee9b9c08cf11dfc68430f4dc9613d939628498647"
dependencies = [
"ahash",
"egui",
@ -427,24 +444,28 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "emath"
version = "0.33.3"
version = "0.34.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32"
checksum = "0a05cd8bdf3b598488c627ca97c7fe8909448ffa26278dd3c7e535cdb554d721"
[[package]]
name = "epaint"
version = "0.33.3"
version = "0.34.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62"
checksum = "04f3017dd67f147a697ee0c8484fb568fd9553e2a0c114be5020dbbc11962841"
dependencies = [
"ab_glyph",
"ahash",
"ecolor",
"emath",
"font-types",
"log",
"nohash-hasher",
"parking_lot",
"profiling",
"self_cell",
"skrifa",
"smallvec",
"vello_cpu",
]
[[package]]
@ -469,6 +490,15 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31ae425815400e5ed474178a7a22e275a9687086a12ca63ec793ff292d8fdae8"
[[package]]
name = "euclid"
version = "0.22.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
dependencies = [
"num-traits",
]
[[package]]
name = "fastrand"
version = "2.3.0"
@ -484,6 +514,15 @@ dependencies = [
"simd-adler32",
]
[[package]]
name = "fearless_simd"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903"
dependencies = [
"bytemuck",
]
[[package]]
name = "find-msvc-tools"
version = "0.1.9"
@ -506,6 +545,21 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "foldhash"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
name = "font-types"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73829a7b5c91198af28a99159b7ae4afbb252fb906159ff7f189f3a2ceaa3df2"
dependencies = [
"bytemuck",
]
[[package]]
name = "futures-core"
version = "0.3.32"
@ -618,7 +672,7 @@ version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [
"foldhash",
"foldhash 0.1.5",
]
[[package]]
@ -626,6 +680,9 @@ name = "hashbrown"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
dependencies = [
"foldhash 0.2.0",
]
[[package]]
name = "heck"
@ -867,6 +924,17 @@ dependencies = [
"syn 2.0.117",
]
[[package]]
name = "kurbo"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb"
dependencies = [
"arrayvec",
"euclid",
"smallvec",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
@ -928,6 +996,12 @@ dependencies = [
"syn 2.0.117",
]
[[package]]
name = "linebender_resource_handle"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4"
[[package]]
name = "linux-raw-sys"
version = "0.12.1"
@ -1039,15 +1113,6 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "owned_ttf_parser"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b"
dependencies = [
"ttf-parser",
]
[[package]]
name = "parking_lot"
version = "0.12.5"
@ -1071,6 +1136,19 @@ dependencies = [
"windows-link",
]
[[package]]
name = "peniko"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a"
dependencies = [
"bytemuck",
"color",
"kurbo",
"linebender_resource_handle",
"smallvec",
]
[[package]]
name = "phf"
version = "0.13.1"
@ -1267,6 +1345,16 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
[[package]]
name = "read-fonts"
version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5"
dependencies = [
"bytemuck",
"font-types",
]
[[package]]
name = "redox_syscall"
version = "0.5.18"
@ -1392,6 +1480,12 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "self_cell"
version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
[[package]]
name = "semver"
version = "1.0.27"
@ -1484,6 +1578,16 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e"
[[package]]
name = "skrifa"
version = "0.40.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac"
dependencies = [
"bytemuck",
"read-fonts",
]
[[package]]
name = "slab"
version = "0.4.12"
@ -1649,12 +1753,6 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "ttf-parser"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
[[package]]
name = "uapi"
version = "0.2.13"
@ -1717,6 +1815,38 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
version = "1.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
[[package]]
name = "vello_common"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b"
dependencies = [
"bytemuck",
"fearless_simd",
"hashbrown 0.16.1",
"log",
"peniko",
"skrifa",
"smallvec",
]
[[package]]
name = "vello_cpu"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc"
dependencies = [
"bytemuck",
"hashbrown 0.16.1",
"vello_common",
]
[[package]]
name = "version_check"
version = "0.9.5"

View file

@ -68,8 +68,8 @@ opera = "1.0.1"
with_builtin_macros = "0.1.0"
blake3 = "1.8.2"
run-on-drop = "1.0.0"
egui = { version = "0.33.3", default-features = false }
egui_tiles = { version = "0.14.1", default-features = false }
egui = { version = "0.34.1", default-features = false }
egui_tiles = { version = "0.15.0", default-features = false }
[build-dependencies]
repc = "0.1.1"
@ -100,26 +100,38 @@ debug = "line-tables-only"
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."ab_glyph"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."ab_glyph_rasterizer"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."owned_ttf_parser"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."ttf-parser"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."ecolor"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."font-types"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."skrifa"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."read-fonts"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."vello_cpu"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."vello_common"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."peniko"]
opt-level = 3
debug = "line-tables-only"
[profile.dev.package."kurbo"]
opt-level = 3
debug = "line-tables-only"
[features]
rc_tracking = []
it = []

View file

@ -25,10 +25,9 @@ use {
},
},
egui::{
Align, CentralPanel, Checkbox, Color32, ComboBox, Context, CursorIcon, DragValue, Frame,
Grid, InnerResponse, Label, Layout, Response, Rgba, RichText, ScrollArea, Sense, SidePanel,
Stroke, TextBuffer, TextEdit, Ui, UiBuilder, Visuals, Widget, WidgetText, emath::Numeric,
vec2,
Align, CentralPanel, Checkbox, Color32, ComboBox, CursorIcon, DragValue, Frame, Grid, Id,
InnerResponse, Label, Layout, Panel, Response, Rgba, RichText, ScrollArea, Sense, Stroke,
TextBuffer, TextEdit, Ui, UiBuilder, Visuals, Widget, WidgetText, emath::Numeric, vec2,
},
egui_tiles::{ResizeState, TabState, Tile, TileId, Tiles, Tree},
linearize::{Linearize, LinearizeExt},
@ -248,7 +247,7 @@ impl egui_tiles::Behavior<Pane> for CcBehavior<'_> {
});
ui.separator();
show_errors(ui, &mut pane.ps);
ui.scope_builder(UiBuilder::new().id(("pane", pane.id)), |ui| {
ui.scope_builder(UiBuilder::new().id(Id::new(("pane", pane.id))), |ui| {
ScrollArea::vertical().show(ui, |ui| {
ui.allocate_space(vec2(ui.available_width(), 0.0));
pane.show(self, ui);
@ -297,7 +296,7 @@ impl egui_tiles::Behavior<Pane> for CcBehavior<'_> {
fn on_tab_button(
&mut self,
_tiles: &Tiles<Pane>,
_tiles: &mut Tiles<Pane>,
tile_id: TileId,
button_response: Response,
) -> Response {
@ -338,16 +337,16 @@ impl EggWindowOwner for ControlCenterInner {
self.close();
}
fn render(self: Rc<Self>, ctx: &Context) {
fn render(self: Rc<Self>, ui: &mut Ui) {
let settings = &mut *self.tree.borrow_mut();
SidePanel::left("sidebar").show(ctx, |ui| self.show_sidebar(&mut settings.tree, ui));
Panel::left("sidebar").show_inside(ui, |ui| self.show_sidebar(&mut settings.tree, ui));
CentralPanel::default()
.frame(
Frame::central_panel(&ctx.style())
Frame::central_panel(&ui.global_style())
.outer_margin(0.0)
.inner_margin(0.0),
)
.show(ctx, |ui| {
.show_inside(ui, |ui| {
let tree = &mut settings.tree;
let mut behavior = CcBehavior {
cc: &self,
@ -358,11 +357,11 @@ impl EggWindowOwner for ControlCenterInner {
if let Some(close) = behavior.close {
tree.set_visible(close, false);
tree.remove_recursively(close);
ui.ctx().request_repaint();
ui.request_repaint();
}
if let Some(ty) = behavior.open {
self.open(tree, ty);
ui.ctx().request_repaint();
ui.request_repaint();
}
});
}
@ -515,7 +514,7 @@ fn show_errors(ui: &mut Ui, pane: &mut PaneState) {
}
if let Some(idx) = to_remove {
pane.errors.remove(idx);
ui.ctx().request_repaint();
ui.request_repaint();
}
ui.separator();
}

View file

@ -22,10 +22,7 @@ use {
text::LayoutJob,
},
linearize::Linearize,
std::{
any::Any,
rc::{Rc, Weak},
},
std::rc::{Rc, Weak},
};
pub enum ClientCrit {
@ -456,8 +453,4 @@ impl CacheTrait for ClientWindowMatchersCache {
fn len(&self) -> usize {
self.matchers.len()
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}

View file

@ -34,7 +34,7 @@ impl CompositorPane {
row(ui, "Repository", |ui| {
let url = "https://github.com/mahkoh/jay";
if ui.link(url).clicked() {
ui.ctx().open_url(OpenUrl::new_tab(url));
ui.open_url(OpenUrl::new_tab(url));
}
});
label(ui, "Version", VERSION);
@ -66,7 +66,7 @@ impl CompositorPane {
.on_hover_text_at_pointer("Copy to clipboard")
.clicked()
{
ui.ctx().copy_text(path);
ui.copy_text(path);
}
});
}

View file

@ -526,118 +526,121 @@ fn show_keymap(
map: Option<&Rc<KbvmMap>>,
set_map: impl Fn(&Rc<KbvmMap>),
) {
ui.scope_builder(UiBuilder::new().id(("keymap-settings", ks.seed)), |ui| {
ui.add_enabled_ui(map.is_some(), |ui| {
if ui.button("Copy Keymap").clicked()
&& let Some(map) = map
{
ui.ctx().copy_text(map.map_text.clone());
}
});
let backup = |ks: &mut KeymapState| {
ks.backup(map);
};
if ui.button("Load Default Keymap").clicked() {
backup(ks);
set_map(&state.default_keymap);
}
ui.horizontal(|ui| {
ui.scope_builder(
UiBuilder::new().id(Id::new(("keymap-settings", ks.seed))),
|ui| {
ui.add_enabled_ui(map.is_some(), |ui| {
if ui.button("Backup Keymap").clicked() {
ks.backup = None;
backup(ks);
if ui.button("Copy Keymap").clicked()
&& let Some(map) = map
{
ui.copy_text(map.map_text.clone());
}
});
if let Some(backup) = &ks.backup
&& ui.button("Restore Keymap").clicked()
{
set_map(backup);
ks.backup = None;
}
});
let mut label = "Load Keymap from Clipboard".to_string();
if *paste_requested == Some(ui.id()) {
label.push_str(" ");
label.push_str(ICON_PENDING);
}
let button = ui.button(label);
if button.clicked() {
*paste_requested = Some(ui.id());
button.request_focus();
ui.ctx().send_viewport_cmd(ViewportCommand::RequestPaste);
} else if *paste_requested == Some(ui.id()) && button.has_focus() {
ui.input(|e| {
let map = e
.events
.iter()
.filter_map(|e| match e {
Event::Paste(s) => Some(s),
_ => None,
})
.next();
let Some(map) = map else {
return;
};
*paste_requested = None;
let map = match state.kb_ctx.parse_keymap(map.as_bytes()) {
Ok(m) => m,
Err(e) => {
let error = format!("Could not parse keymap: {}", ErrorFmt(e));
ps.errors.push(error);
return;
}
};
let backup = |ks: &mut KeymapState| {
ks.backup(map);
};
if ui.button("Load Default Keymap").clicked() {
backup(ks);
set_map(&map);
set_map(&state.default_keymap);
}
ui.horizontal(|ui| {
ui.add_enabled_ui(map.is_some(), |ui| {
if ui.button("Backup Keymap").clicked() {
ks.backup = None;
backup(ks);
}
});
if let Some(backup) = &ks.backup
&& ui.button("Restore Keymap").clicked()
{
set_map(backup);
ks.backup = None;
}
});
} else if *paste_requested == Some(ui.id()) {
*paste_requested = None;
}
ui.collapsing("Create Keymap from Names", |ui| {
grid(ui, ("keymap-from-names", ui.id()), |ui| {
let defaulted =
|ui: &mut Ui, name: &str, default: &mut bool, text: &mut dyn TextBuffer| {
let ui = &mut *ui.row();
grid_label(ui, name);
ui.add_enabled_ui(!*default, |ui| {
text_edit(ui, text);
});
ui.checkbox(default, "Default");
let mut label = "Load Keymap from Clipboard".to_string();
if *paste_requested == Some(ui.id()) {
label.push_str(" ");
label.push_str(ICON_PENDING);
}
let button = ui.button(label);
if button.clicked() {
*paste_requested = Some(ui.id());
button.request_focus();
ui.send_viewport_cmd(ViewportCommand::RequestPaste);
} else if *paste_requested == Some(ui.id()) && button.has_focus() {
ui.input(|e| {
let map = e
.events
.iter()
.filter_map(|e| match e {
Event::Paste(s) => Some(s),
_ => None,
})
.next();
let Some(map) = map else {
return;
};
let required = |ui: &mut Ui, name, text| {
let ui = &mut *ui.row();
grid_label(ui, name);
text_edit(ui, text);
};
defaulted(ui, "Rules", &mut ks.rules_default, &mut ks.rules);
defaulted(ui, "Model", &mut ks.model_default, &mut ks.model);
required(ui, "Layouts", &mut ks.layouts);
required(ui, "Variants", &mut ks.variants);
required(ui, "Options", &mut ks.options);
});
if ui.button("Load").clicked() {
'set_map: {
let map = state.kb_ctx.keymap_from_rmlvo(
(!ks.rules_default).then_some(&ks.rules),
(!ks.model_default).then_some(&ks.model),
Some(&ks.layouts),
Some(&ks.variants),
Some(&ks.options),
);
let map = match map {
Ok(map) => map,
*paste_requested = None;
let map = match state.kb_ctx.parse_keymap(map.as_bytes()) {
Ok(m) => m,
Err(e) => {
let error = format!("Could not parse keymap: {}", ErrorFmt(e));
ps.errors.push(error);
break 'set_map;
return;
}
};
backup(ks);
set_map(&map);
}
});
} else if *paste_requested == Some(ui.id()) {
*paste_requested = None;
}
});
});
ui.collapsing("Create Keymap from Names", |ui| {
grid(ui, ("keymap-from-names", ui.id()), |ui| {
let defaulted =
|ui: &mut Ui, name: &str, default: &mut bool, text: &mut dyn TextBuffer| {
let ui = &mut *ui.row();
grid_label(ui, name);
ui.add_enabled_ui(!*default, |ui| {
text_edit(ui, text);
});
ui.checkbox(default, "Default");
};
let required = |ui: &mut Ui, name, text| {
let ui = &mut *ui.row();
grid_label(ui, name);
text_edit(ui, text);
};
defaulted(ui, "Rules", &mut ks.rules_default, &mut ks.rules);
defaulted(ui, "Model", &mut ks.model_default, &mut ks.model);
required(ui, "Layouts", &mut ks.layouts);
required(ui, "Variants", &mut ks.variants);
required(ui, "Options", &mut ks.options);
});
if ui.button("Load").clicked() {
'set_map: {
let map = state.kb_ctx.keymap_from_rmlvo(
(!ks.rules_default).then_some(&ks.rules),
(!ks.model_default).then_some(&ks.model),
Some(&ks.layouts),
Some(&ks.variants),
Some(&ks.options),
);
let map = match map {
Ok(map) => map,
Err(e) => {
let error = format!("Could not parse keymap: {}", ErrorFmt(e));
ps.errors.push(error);
break 'set_map;
}
};
backup(ks);
set_map(&map);
}
}
});
},
);
}
fn matrix<T, const W: usize>(

View file

@ -262,33 +262,36 @@ impl OutputsPane {
impl OutputsPaneInner {
fn show_main_area(&mut self, ps: &mut PaneState, ui: &mut Ui) {
ui.scope_builder(UiBuilder::new().id(("main_area", self.seed)), |ui| {
self.show_settings_bar(ps, ui);
ScrollArea::vertical().show(ui, |ui| {
match self.ui.view {
View::Connectors => self.show_connectors(ui),
View::Settings => self.show_settings(ui),
}
ui.allocate_space(ui.available_size());
});
});
ui.scope_builder(
UiBuilder::new().id(Id::new(("main_area", self.seed))),
|ui| {
self.show_settings_bar(ps, ui);
ScrollArea::vertical().show(ui, |ui| {
match self.ui.view {
View::Connectors => self.show_connectors(ui),
View::Settings => self.show_settings(ui),
}
ui.allocate_space(ui.available_size());
});
},
);
}
fn show_settings_bar(&mut self, ps: &mut PaneState, ui: &mut Ui) {
ui.horizontal_wrapped(|ui| {
if ui.button("Connectors").clicked() {
self.ui.view = View::Connectors;
ui.ctx().request_repaint();
ui.request_repaint();
}
if ui.button("Settings").clicked() {
self.ui.view = View::Settings;
ui.ctx().request_repaint();
ui.request_repaint();
}
if ui
.checkbox(&mut self.ui.zoom_to_fit, "Zoom To Fit")
.changed()
{
ui.ctx().request_repaint();
ui.request_repaint();
}
{
let mut reset = !self.in_transaction.get();
@ -405,7 +408,7 @@ impl OutputsPaneInner {
}
if changed {
ui.ctx().request_repaint();
ui.request_repaint();
}
}
@ -492,7 +495,7 @@ impl OutputsPaneInner {
self.ui.scale = new_scale;
origin.x = new_ox;
origin.y = new_oy;
ui.ctx().request_repaint();
ui.request_repaint();
}
}
heads.sort_by_key(|h| *h.z);
@ -616,7 +619,7 @@ impl OutputsPaneInner {
if response.has_focus() {
let mut dx = 0;
let mut dy = 0;
ui.ctx().input(|i| {
ui.input(|i| {
if i.key_pressed(Key::ArrowUp) {
dy -= 1;
}
@ -639,14 +642,14 @@ impl OutputsPaneInner {
let pos = (x, y);
if effective!(&*head.m, head.changed_state).position != pos {
modify!(&*head.m, head.changed_state).position = pos;
ui.ctx().request_repaint();
ui.request_repaint();
}
}
}
}
}
if let Some(pos) = response.hover_pos() {
let scroll = ui.ctx().input(|i| i.smooth_scroll_delta);
let scroll = ui.input(|i| i.smooth_scroll_delta);
let mut new = scale;
if scroll.y != 0.0 {
interacted!();
@ -659,16 +662,13 @@ impl OutputsPaneInner {
new = new.max(0.01);
if new != scale {
self.ui.scale = new;
ui.ctx().request_repaint();
ui.request_repaint();
let relative_pos = pos - clip_rect.min;
let real_pos = (relative_pos + *origin) / scale;
*origin = real_pos * new - relative_pos;
}
}
if ui
.ctx()
.input(|i| i.pointer.button_pressed(PointerButton::Primary))
{
if ui.input(|i| i.pointer.button_pressed(PointerButton::Primary)) {
self.ui.focus += 1;
if let Some(pos) = response.hover_pos() {
interacted!();
@ -678,7 +678,7 @@ impl OutputsPaneInner {
*head.z = self.ui.next_z;
self.ui.next_z += 1;
*head.focus = self.ui.focus;
ui.ctx().request_repaint();
ui.request_repaint();
break;
}
}
@ -708,9 +708,9 @@ impl OutputsPaneInner {
if let Some(origin_drag) = &mut self.ui.origin_drag {
*origin_drag -= drag_delta;
self.ui.origin = *origin_drag;
ui.ctx().request_repaint();
ui.request_repaint();
}
let snap = self.settings.snap_to_neighbor ^ ui.ctx().input(|i| i.modifiers.shift);
let snap = self.settings.snap_to_neighbor ^ ui.input(|i| i.modifiers.shift);
let mut head_positions = vec![];
struct HeadPosition {
name: HeadName,
@ -781,7 +781,7 @@ impl OutputsPaneInner {
let pos = (x_int, y_int);
if effective!(&*head.m, head.changed_state).position != pos {
modify!(&*head.m, head.changed_state).position = pos;
ui.ctx().request_repaint();
ui.request_repaint();
}
*head.drag_pos = Some((x, y));
}
@ -793,7 +793,7 @@ impl OutputsPaneInner {
*head.drag_pos = None;
}
}
ui.ctx().memory_mut(|mem| {
ui.memory_mut(|mem| {
mem.set_focus_lock_filter(
response.id,
EventFilter {

View file

@ -52,7 +52,7 @@ impl ControlCenterInner {
|ui| {
ui.add_space(6.0);
if ui.button("Close").clicked() {
ui.ctx().send_viewport_cmd(ViewportCommand::Close);
ui.send_viewport_cmd(ViewportCommand::Close);
}
ui.separator();
ScrollArea::vertical().show(ui, |ui| {
@ -86,7 +86,7 @@ impl ControlCenterInner {
}
};
self.open(tree, ty);
ui.ctx().request_repaint();
ui.request_repaint();
}
}
ui.add_space(3.0);

View file

@ -42,7 +42,7 @@ impl VirtualOutputsPane {
ui.text_edit_singleline(&mut self.new);
if ui.button("Add").clicked() {
s.virtual_outputs.get_or_create(s, &self.new);
ui.ctx().request_repaint();
ui.request_repaint();
}
});
}

View file

@ -25,7 +25,6 @@ use {
},
linearize::Linearize,
std::{
any::Any,
mem,
rc::{Rc, Weak},
},
@ -453,10 +452,6 @@ impl CacheTrait for WindowPropertyListeners {
fn len(&self) -> usize {
self.listeners.len()
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
fn show_content_types(ui: &mut Ui, ct: &mut ContentType) -> bool {

View file

@ -70,8 +70,8 @@ use {
},
egui::{
CursorIcon, Event, FontData, FontDefinitions, FontFamily, FullOutput, Key, Modifiers,
MouseWheelUnit, OutputCommand, PlatformOutput, PointerButton, Pos2, RawInput, Vec2,
ViewportCommand, ViewportEvent, ViewportId, ViewportInfo, pos2, vec2,
MouseWheelUnit, OutputCommand, PlatformOutput, PointerButton, Pos2, RawInput, TouchPhase,
Vec2, ViewportCommand, ViewportEvent, ViewportId, ViewportInfo, pos2, vec2,
},
futures_util::{FutureExt, select},
isnt::std_1::primitive::{IsntCharExt, IsntSliceExt, IsntStrExt},
@ -195,7 +195,7 @@ pub struct EggWindow {
pub trait EggWindowOwner {
fn close(&self);
fn render(self: Rc<Self>, ctx: &egui::Context);
fn render(self: Rc<Self>, ui: &mut egui::Ui);
}
struct EggWindowInner {
@ -768,8 +768,8 @@ impl EggWindowInner {
.raw_input
.take()
.unwrap_or_else(|| self.default_raw_input());
let full_output = self.egui.run(raw_input, |ctx| {
owner.clone().render(ctx);
let full_output = self.egui.run_ui(raw_input, |ui| {
owner.clone().render(ui);
});
let FullOutput {
platform_output,
@ -1098,6 +1098,7 @@ impl UsrWlPointerOwner for EggSeatInner {
window.event(Event::MouseWheel {
unit,
delta,
phase: TouchPhase::Move,
modifiers: self.kb_modifiers.get(),
});
}