From c8ebe36d7862a7b37f881ac6edb9070ec2837547 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Fri, 8 Aug 2025 23:51:15 +0200 Subject: [PATCH] Added focus cursor in input --- src/elements/div.rs | 4 ++-- src/elements/flex.rs | 8 ++++---- src/elements/input.rs | 12 +++++++----- src/elements/paginator.rs | 4 ++-- src/widget.rs | 4 ++-- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/elements/div.rs b/src/elements/div.rs index 13a341a..3752349 100644 --- a/src/elements/div.rs +++ b/src/elements/div.rs @@ -36,7 +36,7 @@ impl Element for Div { fn after_render( &mut self, 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 renderer = DivRenderer(&mut transform); @@ -45,7 +45,7 @@ impl Element for Div { scope.set_parent_size(renderer.0.width, renderer.0.height); 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); diff --git a/src/elements/flex.rs b/src/elements/flex.rs index 6c74bb3..32acaab 100644 --- a/src/elements/flex.rs +++ b/src/elements/flex.rs @@ -55,7 +55,7 @@ impl Element for FlexRow { fn after_render( &mut self, 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 transform_before = transform.clone(); @@ -66,7 +66,7 @@ impl Element for FlexRow { let mut renderer = RowRenderer(&mut transform, self.gap, &mut v); 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_transform_raw(transform_before); @@ -100,7 +100,7 @@ impl Element for FlexCol { fn after_render( &mut self, 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 transform_before = transform.clone(); @@ -111,7 +111,7 @@ impl Element for FlexCol { let mut renderer = ColumnRenderer(&mut transform, self.gap, &mut v); 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_transform_raw(transform_before); diff --git a/src/elements/input.rs b/src/elements/input.rs index 768337c..fe6ace5 100644 --- a/src/elements/input.rs +++ b/src/elements/input.rs @@ -14,14 +14,16 @@ impl Element for Input { fn render( &mut self, scope: &mut crate::prelude::RenderScope, - _: &crate::render_scope::RenderContext, + render_context: &crate::render_scope::RenderContext, ) { let s = self.state.get(); scope.draw_text(0, 0, &s); - if let Some(c) = s.chars().nth(self.cursor) { - scope.draw_text_inverted(self.cursor as u16, 0, &c.to_string()); - } else { - scope.draw_text_inverted(s.len() as u16, 0, " "); + if render_context.is_focused() { + if let Some(c) = s.chars().nth(self.cursor) { + scope.draw_text_inverted(self.cursor as u16, 0, &c.to_string()); + } else { + scope.draw_text_inverted(s.len() as u16, 0, " "); + } } } diff --git a/src/elements/paginator.rs b/src/elements/paginator.rs index aeab8d2..0a3b4cf 100644 --- a/src/elements/paginator.rs +++ b/src/elements/paginator.rs @@ -37,7 +37,7 @@ impl Element for Paginator { fn after_render( &mut self, 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) { let mut transform = scope.get_transform().clone(); @@ -45,7 +45,7 @@ impl Element for Paginator { let (w, h) = scope.get_parent_size(); 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); self.size = (renderer.0.width, renderer.0.height); diff --git a/src/widget.rs b/src/widget.rs index cd53615..fa595fa 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -31,11 +31,11 @@ pub type BoxedComponent = Box; pub trait Element: Send + Sync { /// Called to perform rendering for the element. #[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. #[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. #[allow(unused)]