Added focus cursor in input
This commit is contained in:
+2
-2
@@ -36,7 +36,7 @@ impl Element for Div {
|
|||||||
fn after_render(
|
fn after_render(
|
||||||
&mut self,
|
&mut self,
|
||||||
scope: &mut crate::render_scope::RenderScope,
|
scope: &mut crate::render_scope::RenderScope,
|
||||||
ctx: &crate::render_scope::RenderContext,
|
render_context: &crate::render_scope::RenderContext,
|
||||||
) {
|
) {
|
||||||
let mut transform = scope.get_transform().clone();
|
let mut transform = scope.get_transform().clone();
|
||||||
let mut renderer = DivRenderer(&mut transform);
|
let mut renderer = DivRenderer(&mut transform);
|
||||||
@@ -45,7 +45,7 @@ impl Element for Div {
|
|||||||
scope.set_parent_size(renderer.0.width, renderer.0.height);
|
scope.set_parent_size(renderer.0.width, renderer.0.height);
|
||||||
|
|
||||||
for widget in &self.children {
|
for widget in &self.children {
|
||||||
scope.render_widget(&mut renderer, ctx.get_context(), widget);
|
scope.render_widget(&mut renderer, render_context.get_context(), widget);
|
||||||
}
|
}
|
||||||
scope.set_parent_size(w, h);
|
scope.set_parent_size(w, h);
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ impl Element for FlexRow {
|
|||||||
fn after_render(
|
fn after_render(
|
||||||
&mut self,
|
&mut self,
|
||||||
scope: &mut crate::render_scope::RenderScope,
|
scope: &mut crate::render_scope::RenderScope,
|
||||||
ctx: &crate::render_scope::RenderContext,
|
render_context: &crate::render_scope::RenderContext,
|
||||||
) {
|
) {
|
||||||
let mut transform = scope.get_transform().clone();
|
let mut transform = scope.get_transform().clone();
|
||||||
let transform_before = transform.clone();
|
let transform_before = transform.clone();
|
||||||
@@ -66,7 +66,7 @@ impl Element for FlexRow {
|
|||||||
let mut renderer = RowRenderer(&mut transform, self.gap, &mut v);
|
let mut renderer = RowRenderer(&mut transform, self.gap, &mut v);
|
||||||
|
|
||||||
for widget in &self.children {
|
for widget in &self.children {
|
||||||
scope.render_widget(&mut renderer, ctx.get_context(), widget);
|
scope.render_widget(&mut renderer, render_context.get_context(), widget);
|
||||||
}
|
}
|
||||||
scope.set_parent_size(w, h);
|
scope.set_parent_size(w, h);
|
||||||
scope.set_transform_raw(transform_before);
|
scope.set_transform_raw(transform_before);
|
||||||
@@ -100,7 +100,7 @@ impl Element for FlexCol {
|
|||||||
fn after_render(
|
fn after_render(
|
||||||
&mut self,
|
&mut self,
|
||||||
scope: &mut crate::render_scope::RenderScope,
|
scope: &mut crate::render_scope::RenderScope,
|
||||||
ctx: &crate::render_scope::RenderContext,
|
render_context: &crate::render_scope::RenderContext,
|
||||||
) {
|
) {
|
||||||
let mut transform = scope.get_transform().clone();
|
let mut transform = scope.get_transform().clone();
|
||||||
let transform_before = transform.clone();
|
let transform_before = transform.clone();
|
||||||
@@ -111,7 +111,7 @@ impl Element for FlexCol {
|
|||||||
let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v);
|
let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v);
|
||||||
|
|
||||||
for widget in &self.children {
|
for widget in &self.children {
|
||||||
scope.render_widget(&mut renderer, ctx.get_context(), widget);
|
scope.render_widget(&mut renderer, render_context.get_context(), widget);
|
||||||
}
|
}
|
||||||
scope.set_parent_size(w, h);
|
scope.set_parent_size(w, h);
|
||||||
scope.set_transform_raw(transform_before);
|
scope.set_transform_raw(transform_before);
|
||||||
|
|||||||
@@ -14,16 +14,18 @@ impl Element for Input {
|
|||||||
fn render(
|
fn render(
|
||||||
&mut self,
|
&mut self,
|
||||||
scope: &mut crate::prelude::RenderScope,
|
scope: &mut crate::prelude::RenderScope,
|
||||||
_: &crate::render_scope::RenderContext,
|
render_context: &crate::render_scope::RenderContext,
|
||||||
) {
|
) {
|
||||||
let s = self.state.get();
|
let s = self.state.get();
|
||||||
scope.draw_text(0, 0, &s);
|
scope.draw_text(0, 0, &s);
|
||||||
|
if render_context.is_focused() {
|
||||||
if let Some(c) = s.chars().nth(self.cursor) {
|
if let Some(c) = s.chars().nth(self.cursor) {
|
||||||
scope.draw_text_inverted(self.cursor as u16, 0, &c.to_string());
|
scope.draw_text_inverted(self.cursor as u16, 0, &c.to_string());
|
||||||
} else {
|
} else {
|
||||||
scope.draw_text_inverted(s.len() as u16, 0, " ");
|
scope.draw_text_inverted(s.len() as u16, 0, " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn event(&mut self, event: &dyn crate::prelude::Event) {
|
fn event(&mut self, event: &dyn crate::prelude::Event) {
|
||||||
if let Some(crossterm::event::Event::Key(KeyEvent {
|
if let Some(crossterm::event::Event::Key(KeyEvent {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ impl Element for Paginator {
|
|||||||
fn after_render(
|
fn after_render(
|
||||||
&mut self,
|
&mut self,
|
||||||
scope: &mut crate::render_scope::RenderScope,
|
scope: &mut crate::render_scope::RenderScope,
|
||||||
ctx: &crate::render_scope::RenderContext,
|
render_context: &crate::render_scope::RenderContext,
|
||||||
) {
|
) {
|
||||||
if let Some(widget) = self.children.get(self.index) {
|
if let Some(widget) = self.children.get(self.index) {
|
||||||
let mut transform = scope.get_transform().clone();
|
let mut transform = scope.get_transform().clone();
|
||||||
@@ -45,7 +45,7 @@ impl Element for Paginator {
|
|||||||
let (w, h) = scope.get_parent_size();
|
let (w, h) = scope.get_parent_size();
|
||||||
scope.set_parent_size(renderer.0.width, renderer.0.height);
|
scope.set_parent_size(renderer.0.width, renderer.0.height);
|
||||||
|
|
||||||
scope.render_widget(&mut renderer, ctx.get_context(), widget);
|
scope.render_widget(&mut renderer, render_context.get_context(), widget);
|
||||||
|
|
||||||
scope.set_parent_size(w, h);
|
scope.set_parent_size(w, h);
|
||||||
self.size = (renderer.0.width, renderer.0.height);
|
self.size = (renderer.0.width, renderer.0.height);
|
||||||
|
|||||||
+2
-2
@@ -31,11 +31,11 @@ pub type BoxedComponent = Box<dyn Component + Send + Sync>;
|
|||||||
pub trait Element: Send + Sync {
|
pub trait Element: Send + Sync {
|
||||||
/// Called to perform rendering for the element.
|
/// Called to perform rendering for the element.
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
fn render(&mut self, scope: &mut RenderScope, ctx: &crate::render_scope::RenderContext) {}
|
fn render(&mut self, scope: &mut RenderScope, render_context: &crate::render_scope::RenderContext) {}
|
||||||
|
|
||||||
/// Called after rendering, for follow-up logic or cleanup.
|
/// Called after rendering, for follow-up logic or cleanup.
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
fn after_render(&mut self, scope: &mut RenderScope, ctx: &crate::render_scope::RenderContext) {}
|
fn after_render(&mut self, scope: &mut RenderScope, render_context: &crate::render_scope::RenderContext) {}
|
||||||
|
|
||||||
/// Called to draw child widgets, if any.
|
/// Called to draw child widgets, if any.
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
|
|||||||
Reference in New Issue
Block a user