Update accesskit and accesskit_winit. (#3475)

* Update accesskit and accesskit_winit.

* Remove duplicated `libgtk-3-dev`

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
Nolan Darilek 2023-11-10 04:32:30 -06:00 committed by GitHub
parent 7169f28ddf
commit d0ff09ac20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 77 additions and 47 deletions

View File

@ -96,7 +96,7 @@ jobs:
toolchain: 1.70.0 toolchain: 1.70.0
targets: wasm32-unknown-unknown targets: wasm32-unknown-unknown
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev - run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev
- name: Set up cargo cache - name: Set up cargo cache
uses: Swatinem/rust-cache@v2 uses: Swatinem/rust-cache@v2

87
Cargo.lock generated
View File

@ -20,9 +20,9 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
[[package]] [[package]]
name = "accesskit" name = "accesskit"
version = "0.11.2" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8" checksum = "b0cc53b7e5d8f45ebe687178cf91af0f45fdba6e78fedf94f0269c5be5b9f296"
dependencies = [ dependencies = [
"enumn", "enumn",
"serde", "serde",
@ -30,18 +30,18 @@ dependencies = [
[[package]] [[package]]
name = "accesskit_consumer" name = "accesskit_consumer"
version = "0.15.2" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04bb4d9e4772fe0d47df57d0d5dbe5d85dd05e2f37ae1ddb6b105e76be58fb00" checksum = "39dfcfd32eb0c1b525daaf4b02adcd2fa529c22cd713491e15bf002a01a714f5"
dependencies = [ dependencies = [
"accesskit", "accesskit",
] ]
[[package]] [[package]]
name = "accesskit_macos" name = "accesskit_macos"
version = "0.9.0" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "134d0acf6acb667c89d3332999b1a5df4edbc8d6113910f392ebb73f2b03bb56" checksum = "89c7e8406319ac3149d7b59983637984f0864bbf738319b1c443976268b6426c"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"accesskit_consumer", "accesskit_consumer",
@ -51,38 +51,40 @@ dependencies = [
[[package]] [[package]]
name = "accesskit_unix" name = "accesskit_unix"
version = "0.5.2" version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e084cb5168790c0c112626175412dc5ad127083441a8248ae49ddf6725519e83" checksum = "0b0c84552a7995c981d5f22e2d4b24ba9a55718bb12fba883506d6d7344acaf1"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"accesskit_consumer", "accesskit_consumer",
"async-channel", "async-channel",
"async-once-cell",
"atspi", "atspi",
"futures-lite", "futures-lite",
"once_cell",
"serde", "serde",
"zbus", "zbus",
] ]
[[package]] [[package]]
name = "accesskit_windows" name = "accesskit_windows"
version = "0.14.3" version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9eac0a7f2d7cd7a93b938af401d3d8e8b7094217989a7c25c55a953023436e31" checksum = "314d4a797fc82d182b04f4f0665a368924fb556ad9557fccd2d39d38dc8c1c1b"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"accesskit_consumer", "accesskit_consumer",
"arrayvec",
"once_cell", "once_cell",
"paste", "paste",
"static_assertions",
"windows 0.48.0", "windows 0.48.0",
] ]
[[package]] [[package]]
name = "accesskit_winit" name = "accesskit_winit"
version = "0.14.4" version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "825d23acee1bd6d25cbaa3ca6ed6e73faf24122a774ec33d52c5c86c6ab423c0" checksum = "88e39fcec2e10971e188730b7a76bab60647dacc973d4591855ebebcadfaa738"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"accesskit_macos", "accesskit_macos",
@ -299,6 +301,12 @@ dependencies = [
"event-listener 2.5.3", "event-listener 2.5.3",
] ]
[[package]]
name = "async-once-cell"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb"
[[package]] [[package]]
name = "async-process" name = "async-process"
version = "1.8.0" version = "1.8.0"
@ -383,29 +391,50 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]] [[package]]
name = "atspi" name = "atspi"
version = "0.10.1" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "674e7a3376837b2e7d12d34d58ac47073c491dc3bf6f71a7adaf687d4d817faa" checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca"
dependencies = [ dependencies = [
"async-recursion", "atspi-common",
"async-trait", "atspi-connection",
"atspi-macros", "atspi-proxies",
"enumflags2",
"futures-lite",
"serde",
"tracing",
"zbus",
"zbus_names",
] ]
[[package]] [[package]]
name = "atspi-macros" name = "atspi-common"
version = "0.2.0" version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fb4870a32c0eaa17e35bca0e6b16020635157121fb7d45593d242c295bc768" checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5"
dependencies = [ dependencies = [
"quote", "enumflags2",
"syn 1.0.109", "serde",
"static_assertions",
"zbus",
"zbus_names",
"zvariant",
]
[[package]]
name = "atspi-connection"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939"
dependencies = [
"atspi-common",
"atspi-proxies",
"futures-lite",
"zbus",
]
[[package]]
name = "atspi-proxies"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52"
dependencies = [
"atspi-common",
"serde",
"zbus",
] ]
[[package]] [[package]]

View File

@ -66,7 +66,7 @@ winit = { version = "0.28", default-features = false }
#! ### Optional dependencies #! ### Optional dependencies
# feature accesskit # feature accesskit
accesskit_winit = { version = "0.14.0", optional = true } accesskit_winit = { version = "0.15.0", optional = true }
## Enable this when generating docs. ## Enable this when generating docs.
document-features = { version = "0.2", optional = true } document-features = { version = "0.2", optional = true }

View File

@ -85,7 +85,7 @@ ahash = { version = "0.8.1", default-features = false, features = [
nohash-hasher = "0.2" nohash-hasher = "0.2"
#! ### Optional dependencies #! ### Optional dependencies
accesskit = { version = "0.11", optional = true } accesskit = { version = "0.12", optional = true }
backtrace = { version = "0.3", optional = true } backtrace = { version = "0.3", optional = true }

View File

@ -1291,7 +1291,6 @@ impl Context {
crate::profile_scope!("accesskit"); crate::profile_scope!("accesskit");
let state = self.frame_state_mut(|fs| fs.accesskit_state.take()); let state = self.frame_state_mut(|fs| fs.accesskit_state.take());
if let Some(state) = state { if let Some(state) = state {
let has_focus = self.input(|i| i.raw.focused);
let root_id = crate::accesskit_root_id().accesskit_id(); let root_id = crate::accesskit_root_id().accesskit_id();
let nodes = self.write(|ctx| { let nodes = self.write(|ctx| {
state state
@ -1305,13 +1304,13 @@ impl Context {
}) })
.collect() .collect()
}); });
let focus_id = self
.memory(|mem| mem.focus())
.map_or(root_id, |id| id.accesskit_id());
platform_output.accesskit_update = Some(accesskit::TreeUpdate { platform_output.accesskit_update = Some(accesskit::TreeUpdate {
nodes, nodes,
tree: Some(accesskit::Tree::new(root_id)), tree: Some(accesskit::Tree::new(root_id)),
focus: has_focus.then(|| { focus: focus_id,
let focus_id = self.memory(|mem| mem.focus());
focus_id.map_or(root_id, |id| id.accesskit_id())
}),
}); });
} }
} }
@ -1941,7 +1940,7 @@ impl Context {
NodeBuilder::new(Role::Window).build(&mut ctx.accesskit_node_classes), NodeBuilder::new(Role::Window).build(&mut ctx.accesskit_node_classes),
)], )],
tree: Some(Tree::new(root_id)), tree: Some(Tree::new(root_id)),
focus: None, focus: root_id,
}) })
} }
} }

View File

@ -72,7 +72,7 @@ impl Id {
#[cfg(feature = "accesskit")] #[cfg(feature = "accesskit")]
pub(crate) fn accesskit_id(&self) -> accesskit::NodeId { pub(crate) fn accesskit_id(&self) -> accesskit::NodeId {
std::num::NonZeroU64::new(self.0).unwrap().into() self.0.into()
} }
} }

View File

@ -620,20 +620,20 @@ impl Response {
info: crate::WidgetInfo, info: crate::WidgetInfo,
) { ) {
use crate::WidgetType; use crate::WidgetType;
use accesskit::{CheckedState, Role}; use accesskit::{Checked, Role};
self.fill_accesskit_node_common(builder); self.fill_accesskit_node_common(builder);
builder.set_role(match info.typ { builder.set_role(match info.typ {
WidgetType::Label => Role::StaticText, WidgetType::Label => Role::StaticText,
WidgetType::Link => Role::Link, WidgetType::Link => Role::Link,
WidgetType::TextEdit => Role::TextField, WidgetType::TextEdit => Role::TextInput,
WidgetType::Button | WidgetType::ImageButton | WidgetType::CollapsingHeader => { WidgetType::Button | WidgetType::ImageButton | WidgetType::CollapsingHeader => {
Role::Button Role::Button
} }
WidgetType::Checkbox => Role::CheckBox, WidgetType::Checkbox => Role::CheckBox,
WidgetType::RadioButton => Role::RadioButton, WidgetType::RadioButton => Role::RadioButton,
WidgetType::SelectableLabel => Role::ToggleButton, WidgetType::SelectableLabel => Role::ToggleButton,
WidgetType::ComboBox => Role::PopupButton, WidgetType::ComboBox => Role::ComboBox,
WidgetType::Slider => Role::Slider, WidgetType::Slider => Role::Slider,
WidgetType::DragValue => Role::SpinButton, WidgetType::DragValue => Role::SpinButton,
WidgetType::ColorButton => Role::ColorWell, WidgetType::ColorButton => Role::ColorWell,
@ -649,10 +649,10 @@ impl Response {
builder.set_numeric_value(value); builder.set_numeric_value(value);
} }
if let Some(selected) = info.selected { if let Some(selected) = info.selected {
builder.set_checked_state(if selected { builder.set_checked(if selected {
CheckedState::True Checked::True
} else { } else {
CheckedState::False Checked::False
}); });
} }
} }

View File

@ -1,5 +1,7 @@
use std::sync::Arc; use std::sync::Arc;
#[cfg(feature = "accesskit")]
use accesskit::Role;
use epaint::text::{cursor::*, Galley, LayoutJob}; use epaint::text::{cursor::*, Galley, LayoutJob};
use crate::{output::OutputEvent, *}; use crate::{output::OutputEvent, *};
@ -751,7 +753,7 @@ impl<'t> TextEdit<'t> {
builder.set_default_action_verb(accesskit::DefaultActionVerb::Focus); builder.set_default_action_verb(accesskit::DefaultActionVerb::Focus);
if self.multiline { if self.multiline {
builder.set_multiline(); builder.set_role(Role::MultilineTextInput);
} }
parent_id parent_id
@ -759,7 +761,7 @@ impl<'t> TextEdit<'t> {
if let Some(parent_id) = parent_id { if let Some(parent_id) = parent_id {
// drop ctx lock before further processing // drop ctx lock before further processing
use accesskit::{Role, TextDirection}; use accesskit::TextDirection;
ui.ctx().with_accessibility_parent(parent_id, || { ui.ctx().with_accessibility_parent(parent_id, || {
for (i, row) in galley.rows.iter().enumerate() { for (i, row) in galley.rows.iter().enumerate() {