actually use the text library for text editing (fully working I think but code isn't cleanest)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user