Skip to content
Snippets Groups Projects
Unverified Commit 3126966e authored by databasedav's avatar databasedav Committed by GitHub
Browse files

add component hook for unfocusing widget on despawn (#159)


* cosmic buffer on remove unfocus hook

* fmt

---------

Co-authored-by: default avatarDimchikkk <111751109+Dimchikkk@users.noreply.github.com>
parent be91ed15
No related branches found
No related tags found
No related merge requests found
use crate::*;
use bevy::{prelude::*, window::PrimaryWindow};
use bevy::{
ecs::component::{ComponentHooks, StorageType},
prelude::*,
window::PrimaryWindow,
};
use cosmic_text::{Attrs, AttrsOwned, Buffer, Edit, FontSystem, Metrics, Shaping};
/// Set of all buffer setup functions. Runs in [`First`]
......@@ -55,9 +59,25 @@ impl BufferExtras for Buffer {
}
/// Component wrapper for [`Buffer`]
#[derive(Component, Deref, DerefMut)]
#[derive(Deref, DerefMut)]
pub struct CosmicBuffer(pub Buffer);
impl Component for CosmicBuffer {
const STORAGE_TYPE: StorageType = StorageType::Table;
fn register_component_hooks(hooks: &mut ComponentHooks) {
hooks.on_remove(|mut world, entity, _| {
if let Some(mut focused_widget) = world.get_resource_mut::<FocusedWidget>() {
if let Some(focused) = focused_widget.0 {
if focused == entity {
focused_widget.0 = None;
}
}
}
});
}
}
impl Default for CosmicBuffer {
fn default() -> Self {
CosmicBuffer(Buffer::new_empty(Metrics::new(20., 20.)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment