actually use the text library for text editing (fully working I think but code isn't cleanest)

This commit is contained in:
2025-09-15 14:34:57 -04:00
parent e9853120ce
commit 9d659b6afd
8 changed files with 278 additions and 163 deletions

View File

@@ -1,7 +1,7 @@
use std::sync::Arc;
use app::App;
use cosmic_text::Family;
use cosmic_text::{Family, Motion};
use render::Renderer;
use senses::*;
use ui::prelude::*;
@@ -27,7 +27,7 @@ pub struct Client {
input: Input,
ui: Ui<Client>,
info: WidgetId<Text>,
selected: Option<WidgetId<Text>>,
selected: Option<WidgetId<TextEdit>>,
}
impl Client {
@@ -127,10 +127,10 @@ impl Client {
let texts = Span::empty(Dir::DOWN).add(&mut ui);
let text_edit_scroll = (
texts,
text("add")
text_edit("add")
.font_size(30)
.id_on(PRESS_START, |id, client: &mut Client, ctx| {
client.ui[id].select(ctx.cursor, ctx.size);
client.ui.text(id).select(ctx.cursor, ctx.size);
client.selected = Some(id.clone());
})
.pad(30),
@@ -208,17 +208,17 @@ impl Client {
if let Some(sel) = &self.selected
&& event.state.is_pressed()
{
let w = &mut self.ui[sel];
let w = &mut self.ui.text(sel);
match &event.logical_key {
Key::Named(named) => match named {
NamedKey::Backspace => w.backspace(),
NamedKey::Delete => w.delete(),
NamedKey::Space => w.insert(" "),
NamedKey::Enter => w.insert("\n"),
NamedKey::ArrowRight => w.move_cursor(Dir::RIGHT),
NamedKey::ArrowLeft => w.move_cursor(Dir::LEFT),
NamedKey::ArrowUp => w.move_cursor(Dir::UP),
NamedKey::ArrowDown => w.move_cursor(Dir::DOWN),
NamedKey::Enter => w.newline(),
NamedKey::ArrowRight => w.motion(Motion::Right),
NamedKey::ArrowLeft => w.motion(Motion::Left),
NamedKey::ArrowUp => w.motion(Motion::Up),
NamedKey::ArrowDown => w.motion(Motion::Down),
NamedKey::Escape => {
w.deselect();
self.selected = None;