| Message ID | 20260122041155.174721-1-sjg@u-boot.org |
|---|---|
| Headers |
Return-Path: <concept-bounces+u-boot-concept=u-boot.org@u-boot.org> X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055132; bh=M2wUUemdwYodPbRtP1uRW6wLONdcH7qbOJeg8S42ncA=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=OvGPiuvP4UeZYdYVJGWhYfg97N9B5brFnaTH0RWmQTF5EKUcoL2BnKL7hX06ymJbV W52dRgSGKktUmBrkZ4vHmA8fS2z3CquqgSTxkZPpPg1zncsYe9Gpqn/r+DKnT4b9x6 Dc1OcC0m8PeAovWYnNaBd2FQC0xgsZOgaUvi4uWHcFQzcb+IyWTHEevxaoOKfo3YeC vp+nWk2PdqREkS+8Vl7Txh4BTGxY7jaAYJwYnA8Q1hM8PGvxjkGzcUENgwAInEUwl9 K5pKsvl/cphnTSgc6NDxxeRDjZuXQZhrEmhd4kbXgWRDDH7on3l+Y/h0F7KuWkWLaW VI8N3JPIyIdzQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 395796962A for <u-boot-concept@u-boot.org>; Wed, 21 Jan 2026 21:12:12 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id F4Cl04dX3gLp for <u-boot-concept@u-boot.org>; Wed, 21 Jan 2026 21:12:12 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055132; bh=M2wUUemdwYodPbRtP1uRW6wLONdcH7qbOJeg8S42ncA=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=OvGPiuvP4UeZYdYVJGWhYfg97N9B5brFnaTH0RWmQTF5EKUcoL2BnKL7hX06ymJbV W52dRgSGKktUmBrkZ4vHmA8fS2z3CquqgSTxkZPpPg1zncsYe9Gpqn/r+DKnT4b9x6 Dc1OcC0m8PeAovWYnNaBd2FQC0xgsZOgaUvi4uWHcFQzcb+IyWTHEevxaoOKfo3YeC vp+nWk2PdqREkS+8Vl7Txh4BTGxY7jaAYJwYnA8Q1hM8PGvxjkGzcUENgwAInEUwl9 K5pKsvl/cphnTSgc6NDxxeRDjZuXQZhrEmhd4kbXgWRDDH7on3l+Y/h0F7KuWkWLaW VI8N3JPIyIdzQ== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 23EF169616 for <u-boot-concept@u-boot.org>; Wed, 21 Jan 2026 21:12:12 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055129; bh=jGGzZDBQKd/LZGUhULMub5j8M8qrMAHF3GngqtSsNm0=; h=From:To:Cc:Subject:Date:From; b=dwLAiiAsC+UgZ8LU0AOo3Ft+E1tbAnfbHxCO67zl9v87WG1+AyWRtA2SBdorbhfBU rqgfpS7abfmPiaEOT32wObw2QRDYe0Fui4dP5puqqRWNyaOy612i6h5ye9s2uWszyB zRcq44g9sLwzqJ7cqADp6dx8/8pRK6+0IeT68/Kj96AFh05+Vb8RC57xKq0UFdamyZ /Jsbp4ME9FmhvW8L+eudn08zh4MMiEWYJtyx7rN3bnyyw34hZWo1Yepnp6VdAQMl7s t0rV1utQT7rRVbuL3fxUNuGJpjTB+w6cu4WcCAnJ5bQ52i0l6E++QLm+k4uJHcybx4 tF0IfpK0ujofA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D095E694CC; Wed, 21 Jan 2026 21:12:09 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id 8cvuPacWflMK; Wed, 21 Jan 2026 21:12:09 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1769055125; bh=MMkf4spGvAr3WMtqpYesfgjnKwR8FQSRhkxyg3Fp6aI=; h=From:To:Cc:Subject:Date:From; b=ND/f2QS14AQi8XL15Frkb9WFg5hU4CD4rH9z/JRjV4BhTOxyFE8tLLlJyrPrW3HzG P22F9HJelpCiYIsAEEZeuKkuoeyZl8GlK1/DgTuczePoacYHGeyo+uRb7vWuF5hNuA Pv6ZDo/jP2wIrPLwjGMdcAin+U5W7o7blGNSdWLgpiFD2g+vBwqEkspQiOuiS2JYT4 L6WO4ZhapoYH5sPONF8ALR6OAFxPDccjBlisX9AuuRG4jdK/Lwf+PJOjTKAIDzOHbH YHpk3UIOFIpDFgkMrXgSwRZm/V2nKB1WeP0J+1c1n0Q9mzttMJjvK8IoDLzCnLl23p 083pxrclALvMA== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 7D27769486; Wed, 21 Jan 2026 21:12:05 -0700 (MST) From: Simon Glass <sjg@u-boot.org> To: U-Boot Concept <concept@u-boot.org> Date: Wed, 21 Jan 2026 21:11:28 -0700 Message-ID: <20260122041155.174721-1-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Message-ID-Hash: 5AWDFDT5RNEMERUKLMEZNZXKYMHPR2EZ X-Message-ID-Hash: 5AWDFDT5RNEMERUKLMEZNZXKYMHPR2EZ X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass <simon.glass@canonical.com> X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 00/16] expo: Add multiline editing support for textedit List-Id: Discussion and patches related to U-Boot Concept <concept.u-boot.org> Archived-At: <https://lists.u-boot.org/archives/list/concept@u-boot.org/message/5AWDFDT5RNEMERUKLMEZNZXKYMHPR2EZ/> List-Archive: <https://lists.u-boot.org/archives/list/concept@u-boot.org/> List-Help: <mailto:concept-request@u-boot.org?subject=help> List-Owner: <mailto:concept-owner@u-boot.org> List-Post: <mailto:concept@u-boot.org> List-Subscribe: <mailto:concept-join@u-boot.org> List-Unsubscribe: <mailto:concept-leave@u-boot.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit |
| Series |
expo: Add multiline editing support for textedit
|
|
Message
Simon Glass
Jan. 22, 2026, 4:11 a.m. UTC
From: Simon Glass <simon.glass@canonical.com>
This series enhances the expo text-input handling, particularly for the
textedit object which supports multi-line text.
The vidconsole uses a single shared context for cursor state, which causes
problems when text-input objects need their own cursor blinking. This series
adds dedicated vidconsole contexts for text input, then removes the old
entry save/restore mechanism which is no longer needed.
For multiline editing , this series adds support for navigating between
visual lines using Ctrl-P and Ctrl-N. The expo textedit uses text measurement
to position the cursor at the correct pixel location within multi-line text,
maintaining the horizontal position when moving between lines.
The series also fixes some bugs in text-input handling and adds some tests for
rendering and keypress-handling.
Simon Glass (16):
video: Update vidconsole_idle() to process all contexts
expo: Add tin parameter to scene_txtin_close()
test: expo: Use expo_enter_mode() in textline render test
expo: Use a dedicated vidconsole-context for text input
expo: Drop entry save/restore in textline rendering
video: Remove vidconsole_entry_save/restore()
test: video: Add tests for independent vidconsole contexts
expo: Fix text-input close on BKEY_SELECT
expo: Fix text-input buffer size for CLI editing
test: expo: Add open/close testing to expo_render_textedit
test: expo: Add keypress tests to expo_render_textedit
cli: Add multiline support to CLI line editing
video: Add len parameter to vidconsole_measure()
expo: support cursor positioning for multiline textedits
expo: Add visual line navigation for multi-line textedit
test: expo: Add more keypress tests for textedit
boot/scene.c | 7 +-
boot/scene_internal.h | 13 +-
boot/scene_txtin.c | 218 +++++++++++++++++++++++++-----
common/cli_readline.c | 17 +++
drivers/video/console_normal.c | 32 -----
drivers/video/console_truetype.c | 43 +-----
drivers/video/vidconsole-uclass.c | 50 ++-----
include/cli.h | 9 +-
include/expo.h | 4 +-
include/video_console.h | 56 +-------
test/boot/expo.c | 142 +++++++++++++++++++
test/dm/video.c | 109 +++++++++------
12 files changed, 458 insertions(+), 242 deletions(-)