mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-17 07:03:25 +00:00
fix(tui): always position cursor for IME
# Conflicts: # packages/coding-agent/CHANGELOG.md
This commit is contained in:
parent
cd43b8a9ca
commit
673916f63c
7 changed files with 87 additions and 11 deletions
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- Added `showHardwareCursor` getter and setter to control cursor visibility while keeping IME positioning active. ([#800](https://github.com/badlogic/pi-mono/pull/800) by [@ghoulr](https://github.com/ghoulr))
|
||||
|
||||
## [0.48.0] - 2026-01-16
|
||||
|
||||
### Added
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ export class TUI extends Container {
|
|||
private hardwareCursorRow = 0; // Actual terminal cursor row (may differ due to IME positioning)
|
||||
private inputBuffer = ""; // Buffer for parsing terminal responses
|
||||
private cellSizeQueryPending = false;
|
||||
private useHardwareCursor = process.env.PI_HARDWARE_CURSOR === "1";
|
||||
private showHardwareCursor = process.env.PI_HARDWARE_CURSOR === "1";
|
||||
|
||||
// Overlay stack for modal components rendered on top of base content
|
||||
private overlayStack: {
|
||||
|
|
@ -218,9 +218,25 @@ export class TUI extends Container {
|
|||
hidden: boolean;
|
||||
}[] = [];
|
||||
|
||||
constructor(terminal: Terminal) {
|
||||
constructor(terminal: Terminal, showHardwareCursor?: boolean) {
|
||||
super();
|
||||
this.terminal = terminal;
|
||||
if (showHardwareCursor !== undefined) {
|
||||
this.showHardwareCursor = showHardwareCursor;
|
||||
}
|
||||
}
|
||||
|
||||
getShowHardwareCursor(): boolean {
|
||||
return this.showHardwareCursor;
|
||||
}
|
||||
|
||||
setShowHardwareCursor(enabled: boolean): void {
|
||||
if (this.showHardwareCursor === enabled) return;
|
||||
this.showHardwareCursor = enabled;
|
||||
if (!enabled) {
|
||||
this.terminal.hideCursor();
|
||||
}
|
||||
this.requestRender();
|
||||
}
|
||||
|
||||
setFocus(component: Component | null): void {
|
||||
|
|
@ -982,12 +998,6 @@ export class TUI extends Container {
|
|||
* @param totalLines Total number of rendered lines
|
||||
*/
|
||||
private positionHardwareCursor(cursorPos: { row: number; col: number } | null, totalLines: number): void {
|
||||
// PI_HARDWARE_CURSOR=1 enables hardware cursor (disabled by default due to terminal compatibility issues)
|
||||
if (!this.useHardwareCursor) {
|
||||
this.terminal.hideCursor();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!cursorPos || totalLines <= 0) {
|
||||
this.terminal.hideCursor();
|
||||
return;
|
||||
|
|
@ -1013,6 +1023,10 @@ export class TUI extends Container {
|
|||
}
|
||||
|
||||
this.hardwareCursorRow = targetRow;
|
||||
this.terminal.showCursor();
|
||||
if (this.showHardwareCursor) {
|
||||
this.terminal.showCursor();
|
||||
} else {
|
||||
this.terminal.hideCursor();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue