ensure tab ordering

This commit is contained in:
Matt Parker
2025-10-22 21:21:38 +10:00
parent 8e037a582d
commit 64b186d6ff
2 changed files with 11 additions and 9 deletions

View File

@@ -353,12 +353,15 @@ public partial class SharpIdeCodeEdit : CodeEdit
_fileChangingSuppressBreakpointToggleEvent = false; _fileChangingSuppressBreakpointToggleEvent = false;
if (fileLinePosition is not null) SetFileLinePosition(fileLinePosition.Value); if (fileLinePosition is not null) SetFileLinePosition(fileLinePosition.Value);
}); });
await Task.WhenAll(syntaxHighlighting, razorSyntaxHighlighting, setTextTask); // Text must be set before setting syntax highlighting _ = Task.GodotRun(async () =>
await this.InvokeAsync(async () => SetSyntaxHighlightingModel(await syntaxHighlighting, await razorSyntaxHighlighting)); {
await diagnostics; await Task.WhenAll(syntaxHighlighting, razorSyntaxHighlighting, setTextTask); // Text must be set before setting syntax highlighting
await this.InvokeAsync(async () => SetDiagnostics(await diagnostics)); await this.InvokeAsync(async () => SetSyntaxHighlightingModel(await syntaxHighlighting, await razorSyntaxHighlighting));
await projectDiagnosticsForFile; await diagnostics;
await this.InvokeAsync(async () => SetProjectDiagnostics(await projectDiagnosticsForFile)); await this.InvokeAsync(async () => SetDiagnostics(await diagnostics));
await projectDiagnosticsForFile;
await this.InvokeAsync(async () => SetProjectDiagnostics(await projectDiagnosticsForFile));
});
} }
public void UnderlineRange(int line, int caretStartCol, int caretEndCol, Color color, float thickness = 1.5f) public void UnderlineRange(int line, int caretStartCol, int caretEndCol, Color color, float thickness = 1.5f)

View File

@@ -160,12 +160,11 @@ public partial class IdeRoot : Control
// Preserves order of tabs // Preserves order of tabs
foreach (var (file, linePosition, isSelected) in filesToOpen) foreach (var (file, linePosition, isSelected) in filesToOpen)
{ {
GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelFireAndForget(file, linePosition); await GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelAsync(file, linePosition);
await Task.Delay(10).ConfigureAwait(false); // TODO: Do this properly - use InvokeParallelAsync, and fix FileExternallySelected waiting on syntax highlighting etc before returning
} }
// Select the selected tab // Select the selected tab
var selectedFile = filesToOpen.SingleOrDefault(f => f.IsSelected); var selectedFile = filesToOpen.SingleOrDefault(f => f.IsSelected);
if (selectedFile.Item1 is not null) GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelFireAndForget(selectedFile.Item1, selectedFile.Item2); if (selectedFile.Item1 is not null) await GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelAsync(selectedFile.Item1, selectedFile.Item2);
}); });
var tasks = solutionModel.AllProjects.Select(p => p.MsBuildEvaluationProjectTask).ToList(); var tasks = solutionModel.AllProjects.Select(p => p.MsBuildEvaluationProjectTask).ToList();