Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bevy 0.12 #118

Merged
merged 8 commits into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
527 changes: 348 additions & 179 deletions Cargo.lock

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "bevy_cosmic_edit"
version = "0.14.0"
version = "0.15.0"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "Bevy cosmic-text multiline text input"
Expand All @@ -23,7 +23,7 @@ opt-level = 3
opt-level = 'z'

[dependencies]
bevy = { version = "0.11", default-features = false, features = [
bevy = { version = "0.12", default-features = false, features = [
"bevy_asset",
"bevy_core_pipeline",
"bevy_render",
Expand All @@ -35,7 +35,7 @@ bevy = { version = "0.11", default-features = false, features = [
"png",
"x11",
] }
cosmic-text = { version = "0.9" }
cosmic-text = { version = "0.10" }
# TODO: move crossbeam to wasm32, once input.rs has separate wasm copy/paste fn
crossbeam-channel = "0.5.8"
image = "0.24.6"
Expand All @@ -46,7 +46,7 @@ arboard = "3.2.0"

[target.'cfg(target_arch = "wasm32")'.dependencies]
js-sys = "0.3.61"
wasm-bindgen = "0.2.87"
wasm-bindgen = "0.2.88"
wasm-bindgen-futures = "0.4.37"
web-sys = { version = "0.3.64", features = ["Clipboard", "Navigator", "Window"] }

Expand Down
6 changes: 3 additions & 3 deletions examples/bevy_api_testing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ fn ev_test(
mut evr_out: EventReader<TextHoverOut>,
mut evr_type: EventReader<CosmicTextChanged>,
) {
for _ev in evr_on.iter() {
for _ev in evr_on.read() {
println!("IN");
}
for _ev in evr_out.iter() {
for _ev in evr_out.read() {
println!("OUT");
}
for _ev in evr_type.iter() {
for _ev in evr_type.read() {
println!("TYPE");
}
}
Expand Down
2 changes: 1 addition & 1 deletion examples/login.rs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ fn change_active_editor_ui(
}

fn print_changed_input(mut evr_type: EventReader<CosmicTextChanged>) {
for ev in evr_type.iter() {
for ev in evr_type.read() {
println!("Changed: {}", ev.0 .1);
}
}
Expand Down
7 changes: 4 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ RUSTFLAGS=--cfg=web_sys_unstable_apis cargo r --target wasm32-unknown-unknown --

## Compatibility

| bevy | bevy_cosmic_edit |
| ---- | ---------------- |
| 0.11 | 0.8 - latest |
| bevy | bevy_cosmic_edit |
| ------ | ---------------- |
| 0.12.0 | 0.15 - latest |
| 0.11.* | 0.8 - 0.14 |


## License
Expand Down
7 changes: 3 additions & 4 deletions src/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ pub(crate) fn input_mouse(
return;
}

for ev in scroll_evr.iter() {
for ev in scroll_evr.read() {
match ev.unit {
MouseScrollUnit::Line => {
editor.0.action(
Expand Down Expand Up @@ -366,9 +366,8 @@ pub(crate) fn input_kb(
editor.0.set_select_opt(None);
}
}
#[cfg(target_arch = "wasm32")]
editor.0.action(&mut font_system.0, Action::Backspace);
*is_deleting = true;
editor.0.action(&mut font_system.0, Action::Backspace);
}

if keys.just_released(KeyCode::Back) {
Expand Down Expand Up @@ -522,7 +521,7 @@ pub(crate) fn input_kb(
}

if !(is_clipboard || is_return || readonly) {
for char_ev in char_evr.iter() {
for char_ev in char_evr.read() {
is_edit = true;
if *is_deleting {
editor.0.action(&mut font_system.0, Action::Backspace);
Expand Down
1 change: 0 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,6 @@ mod tests {
app.insert_resource(input);
let mouse_input: Input<MouseButton> = Input::<MouseButton>::default();
app.insert_resource(mouse_input);
app.add_asset::<Image>();

app.add_event::<ReceivedCharacter>();

Expand Down
45 changes: 28 additions & 17 deletions src/render.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
use std::time::Duration;

use bevy::{
asset::HandleId,
prelude::*,
render::{render_resource::Extent3d, texture::DEFAULT_IMAGE_HANDLE},
render::render_resource::Extent3d,
utils::HashMap,
window::{PrimaryWindow, WindowScaleFactorChanged},
};
Expand Down Expand Up @@ -149,7 +148,7 @@ pub(crate) fn render_texture(
if let Some(bg_image) = background_image.0.clone() {
if let Some(image) = images.get(&bg_image) {
let mut dynamic_image = image.clone().try_into_dynamic().unwrap();
if image.size().x != size.0.x || image.size().y != size.0.y {
if image.size().x != size.0.x as u32 || image.size().y != size.0.y as u32 {
dynamic_image = dynamic_image.resize_to_fill(
size.0.x as u32,
size.0.y as u32,
Expand Down Expand Up @@ -220,15 +219,7 @@ pub(crate) fn new_image_from_default(
mut images: ResMut<Assets<Image>>,
) {
for mut canvas in query.iter_mut() {
if let Some(prev_image) = images.get_mut(&canvas) {
if *canvas == DEFAULT_IMAGE_HANDLE.typed() {
let prev_image = prev_image.clone();
let handle_id: HandleId = HandleId::random::<Image>();
let new_handle: Handle<Image> = Handle::weak(handle_id);
let new_handle = images.set(new_handle, prev_image);
*canvas = new_handle;
}
}
*canvas = images.add(Image::default());
}
}

Expand Down Expand Up @@ -472,13 +463,33 @@ pub(crate) fn hide_inactive_or_readonly_cursor(

pub(crate) fn set_initial_scale(
window_q: Query<&Window, With<PrimaryWindow>>,
mut metrics_q: Query<&mut CosmicMetrics, Added<CosmicMetrics>>,
mut cosmic_query: Query<
(
Option<&mut CosmicEditor>,
&mut CosmicMetrics,
Option<&mut XOffset>,
),
Added<CosmicMetrics>,
>,
mut font_system: ResMut<CosmicFontSystem>,
) {
let scale = window_q.single().scale_factor() as f32;

for mut metrics in metrics_q.iter_mut() {
if metrics.scale_factor == DEFAULT_SCALE_PLACEHOLDER {
metrics.scale_factor = scale;
for (editor, mut metrics, x_offset) in &mut cosmic_query.iter_mut() {
if metrics.scale_factor != DEFAULT_SCALE_PLACEHOLDER {
continue;
}

let font_system = &mut font_system.0;
metrics.scale_factor = scale;
let metrics = Metrics::new(metrics.font_size, metrics.line_height).scale(scale);

if let Some(mut editor) = editor {
editor.0.buffer_mut().set_metrics(font_system, metrics);
editor.0.buffer_mut().set_redraw(true);
}
if let Some(mut x_offset) = x_offset {
*x_offset = XOffset(None);
}
}
}
Expand All @@ -489,7 +500,7 @@ pub(crate) fn on_scale_factor_change(
mut font_system: ResMut<CosmicFontSystem>,
) {
if !scale_factor_changed.is_empty() {
let new_scale_factor = scale_factor_changed.iter().last().unwrap().scale_factor as f32;
let new_scale_factor = scale_factor_changed.read().last().unwrap().scale_factor as f32;
for (mut editor, metrics, mut x_offset) in &mut cosmic_query.iter_mut() {
let font_system = &mut font_system.0;
let metrics =
Expand Down