egui: upgrade to 0.34
This commit is contained in:
parent
915c93336a
commit
da2d00f404
11 changed files with 351 additions and 218 deletions
206
Cargo.lock
generated
206
Cargo.lock
generated
|
|
@ -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"
|
||||
|
|
|
|||
48
Cargo.toml
48
Cargo.toml
|
|
@ -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 = []
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>(
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue