diff --git a/src/linecomps.tsx b/src/linecomps.tsx index 4bcd21b2..39e9d191 100644 --- a/src/linecomps.tsx +++ b/src/linecomps.tsx @@ -367,7 +367,7 @@ class LineCmd extends React.Component<{screen : LineContainerModel, line : LineT e.stopPropagation(); if (line != null) { mobx.action(() => { - GlobalModel.lineSettingsModal.set(line); + GlobalModel.lineSettingsModal.set(line.linenum); })(); } } @@ -411,7 +411,7 @@ class LineCmd extends React.Component<{screen : LineContainerModel, line : LineT let {line} = this.props; if (line != null) { mobx.action(() => { - GlobalModel.lineSettingsModal.set(line); + GlobalModel.lineSettingsModal.set(line.linenum); })(); } } @@ -670,7 +670,7 @@ class LineText extends React.Component<{screen : LineContainerModel, line : Line e.stopPropagation(); if (line != null) { mobx.action(() => { - GlobalModel.lineSettingsModal.set(line); + GlobalModel.lineSettingsModal.set(line.linenum); })(); } } diff --git a/src/main.tsx b/src/main.tsx index 9f70d708..46f2f86b 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -2007,7 +2007,7 @@ class Main extends React.Component<{}, {}> { - + diff --git a/src/model.ts b/src/model.ts index 60fdb0b3..88f91304 100644 --- a/src/model.ts +++ b/src/model.ts @@ -2418,7 +2418,7 @@ class Model { screenSettingsModal : OV<{sessionId : string, screenId : string}> = mobx.observable.box(null, {name: "screenSettingsModal"}); sessionSettingsModal : OV = mobx.observable.box(null, {name: "sessionSettingsModal"}); clientSettingsModal : OV = mobx.observable.box(false, {name: "clientSettingsModal"}); - lineSettingsModal : OV = mobx.observable.box(null, {name: "lineSettingsModal"}); + lineSettingsModal : OV = mobx.observable.box(null, {name: "lineSettingsModal"}); // linenum remotesModalModel : RemotesModalModel; @@ -3386,18 +3386,18 @@ class CommandRunner { GlobalModel.submitCommand("line", "view", [sessionId, screenId, lineNumStr], {"nohist": "1"}, false); } - lineArchive(lineArg : string, archive : boolean) { + lineArchive(lineArg : string, archive : boolean) : Promise { let kwargs = {"nohist": "1"}; let archiveStr = (archive ? "1" : "0"); - GlobalModel.submitCommand("line", "archive", [lineArg, archiveStr], kwargs, false); + return GlobalModel.submitCommand("line", "archive", [lineArg, archiveStr], kwargs, false); } - lineSet(lineArg : string, opts : {renderer? : string}) { + lineSet(lineArg : string, opts : {renderer? : string}) : Promise { let kwargs = {"nohist": "1"}; if ("renderer" in opts) { kwargs["renderer"] = opts.renderer ?? ""; } - GlobalModel.submitCommand("line", "set", [lineArg], kwargs, false); + return GlobalModel.submitCommand("line", "set", [lineArg], kwargs, false); } createNewSession() { diff --git a/src/settings.tsx b/src/settings.tsx index 6c135a8d..59aba90f 100644 --- a/src/settings.tsx +++ b/src/settings.tsx @@ -480,20 +480,9 @@ class SessionSettingsModal extends React.Component<{sessionId : string}, {}> { } @mobxReact.observer -class LineSettingsModal extends React.Component<{line : LineType}, {}> { - tempArchived : OV; - tempRenderer : OV; +class LineSettingsModal extends React.Component<{linenum : number}, {}> { rendererDropdownActive : OV = mobx.observable.box(false, {name: "lineSettings-rendererDropdownActive"}); - - constructor(props : any) { - super(props); - let {line} = props; - if (line == null) { - return; - } - this.tempArchived = mobx.observable.box(!!line.archived, {name: "lineSettings-tempArchived"}); - this.tempRenderer = mobx.observable.box(line.renderer, {name: "lineSettings-renderer"}); - } + errorMessage : OV = mobx.observable.box(null, {name: "ScreenSettings-errorMessage"}); @boundMethod closeModal() : void { @@ -502,27 +491,14 @@ class LineSettingsModal extends React.Component<{line : LineType}, {}> { })(); } - @boundMethod - handleOK() : void { - let {line} = this.props; - mobx.action(() => { - GlobalModel.lineSettingsModal.set(null); - })(); - if (this.tempRenderer.get() != line.renderer) { - GlobalCommandRunner.lineSet(line.lineid, { - "renderer": this.tempRenderer.get(), - }); - } - if (this.tempArchived.get() != !!line.archived) { - GlobalCommandRunner.lineArchive(line.lineid, this.tempArchived.get()); - } - } - @boundMethod handleChangeArchived(val : boolean) : void { - mobx.action(() => { - this.tempArchived.set(val); - })(); + let line = this.getLine(); + if (line == null) { + return; + } + let prtn = GlobalCommandRunner.lineArchive(line.lineid, val); + commandRtnHandler(prtn, this.errorMessage); } @boundMethod @@ -532,19 +508,35 @@ class LineSettingsModal extends React.Component<{line : LineType}, {}> { })(); } + getLine() : LineType { + let screen = GlobalModel.getActiveScreen(); + if (screen == null) { + return; + } + return screen.getLineByNum(this.props.linenum); + } + @boundMethod clickSetRenderer(renderer : string) : void { + let line = this.getLine(); + if (line == null) { + return; + } + let prtn = GlobalCommandRunner.lineSet(line.lineid, {renderer: renderer}); + commandRtnHandler(prtn, this.errorMessage); mobx.action(() => { - this.tempRenderer.set(renderer); this.rendererDropdownActive.set(false); })(); } renderRendererDropdown() : any { - let {line} = this.props; - let renderer = this.tempRenderer.get() ?? "terminal"; + let line = this.getLine(); + if (line == null) { + return null; + } let plugins = PluginModel.rendererPlugins; let plugin : RendererPluginType = null; + let renderer = line.renderer ?? "terminal"; return (
@@ -569,8 +561,11 @@ class LineSettingsModal extends React.Component<{line : LineType}, {}> { } render() { - let {line} = this.props; + let line = this.getLine(); if (line == null) { + setTimeout(() => { + this.closeModal(); + }, 0); return null; } return ( @@ -597,18 +592,14 @@ class LineSettingsModal extends React.Component<{line : LineType}, {}> { Archived
- -
- will be archived - will be un-archived -
+
+