mirror of
https://github.com/wavetermdev/backup.git
synced 2026-08-05 13:57:07 -07:00
mostly fix physical focus indicator for code editor
This commit is contained in:
+1
-1
@@ -585,7 +585,7 @@ class LineCmd extends React.Component<
|
||||
screen.setContentHeight(lineutil.getRendererContext(line), height);
|
||||
},
|
||||
onFocusChanged: (focus: boolean) => {
|
||||
screen.setTermFocus(line.linenum, focus);
|
||||
screen.setLineFocus(line.linenum, focus);
|
||||
},
|
||||
dataHandler: (data: string, model: RendererModel) => {
|
||||
cmd.handleDataFromRenderer(data, model);
|
||||
|
||||
+5
-5
@@ -106,7 +106,7 @@ type LineContainerModel = {
|
||||
getFocusType: () => FocusTypeStrs;
|
||||
getSelectedLine: () => number;
|
||||
getCmd: (line: LineType) => Cmd;
|
||||
setTermFocus: (lineNum: number, focus: boolean) => void;
|
||||
setLineFocus: (lineNum: number, focus: boolean) => void;
|
||||
getUsedRows: (context: RendererContext, line: LineType, cmd: Cmd, width: number) => number;
|
||||
getContentHeight: (context: RendererContext) => number;
|
||||
setContentHeight: (context: RendererContext, height: number) => void;
|
||||
@@ -685,8 +685,8 @@ class Screen {
|
||||
this.renderers[lineId] = renderer;
|
||||
}
|
||||
|
||||
setTermFocus(lineNum: number, focus: boolean): void {
|
||||
// console.log("SW setTermFocus", lineNum, focus);
|
||||
setLineFocus(lineNum: number, focus: boolean): void {
|
||||
// console.log("SW setLineFocus", lineNum, focus);
|
||||
mobx.action(() => this.termLineNumFocus.set(focus ? lineNum : 0))();
|
||||
if (focus && this.selectedLine.get() != lineNum) {
|
||||
GlobalCommandRunner.screenSelectLine(String(lineNum), "cmd");
|
||||
@@ -763,7 +763,7 @@ class Screen {
|
||||
termOpts: cmd.getTermOpts(),
|
||||
winSize: { height: 0, width: width },
|
||||
dataHandler: cmd.handleData.bind(cmd),
|
||||
focusHandler: (focus: boolean) => this.setTermFocus(line.linenum, focus),
|
||||
focusHandler: (focus: boolean) => this.setLineFocus(line.linenum, focus),
|
||||
isRunning: cmd.isRunning(),
|
||||
customKeyHandler: this.termCustomKeyHandler.bind(this),
|
||||
fontSize: GlobalModel.termFontSize.get(),
|
||||
@@ -1743,7 +1743,7 @@ class SpecialHistoryViewLineContainer {
|
||||
return this.cmd;
|
||||
}
|
||||
|
||||
setTermFocus(lineNum: number, focus: boolean): void {
|
||||
setLineFocus(lineNum: number, focus: boolean): void {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -286,6 +286,7 @@ class SimpleBlobRenderer extends React.Component<
|
||||
scrollToBringIntoViewport={this.props.scrollToBringIntoViewport}
|
||||
isSelected={this.props.isSelected}
|
||||
shouldFocus={this.props.shouldFocus}
|
||||
rendererApi={model.api}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -413,6 +413,7 @@ type SimpleBlobRendererComponent = React.ComponentType<{
|
||||
readOnly?: boolean;
|
||||
notFound?: boolean;
|
||||
isSelected?: boolean;
|
||||
rendererApi?: RendererModelContainerApi;
|
||||
shouldFocus?: boolean;
|
||||
cmdstr?: string;
|
||||
cwd?: string;
|
||||
|
||||
+11
-1
@@ -1,5 +1,5 @@
|
||||
import * as React from "react";
|
||||
import { RendererContext, RendererOpts, LineStateType } from "../types";
|
||||
import { RendererContext, RendererOpts, LineStateType, RendererModelContainerApi } from "../types";
|
||||
import Editor from "@monaco-editor/react";
|
||||
import { GlobalModel, GlobalCommandRunner } from "../model";
|
||||
import loader from "@monaco-editor/loader";
|
||||
@@ -27,6 +27,7 @@ class SourceCodeRenderer extends React.Component<
|
||||
lineState: LineStateType;
|
||||
isSelected: boolean;
|
||||
shouldFocus: boolean;
|
||||
rendererApi: RendererModelContainerApi;
|
||||
},
|
||||
{
|
||||
code: string;
|
||||
@@ -137,6 +138,15 @@ class SourceCodeRenderer extends React.Component<
|
||||
});
|
||||
if (this.props.shouldFocus) {
|
||||
this.monacoEditor.focus();
|
||||
this.props.rendererApi.onFocusChanged(true);
|
||||
}
|
||||
if (this.monacoEditor.onDidFocusEditorWidget) {
|
||||
this.monacoEditor.onDidFocusEditorWidget(() => {
|
||||
this.props.rendererApi.onFocusChanged(true);
|
||||
});
|
||||
this.monacoEditor.onDidBlurEditorWidget(() => {
|
||||
this.props.rendererApi.onFocusChanged(false);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user