From 934f0bcdded601a3da910d0e6b508d203f0238e4 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Sat, 29 Nov 2025 13:40:53 +1000 Subject: [PATCH] display file icon in tab --- .../Features/CodeEditor/CodeEditorPanel.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs b/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs index a9657df..cd0db1b 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs @@ -8,6 +8,7 @@ using SharpIDE.Application.Features.Run; using SharpIDE.Application.Features.SolutionDiscovery; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Godot.Features.IdeSettings; +using SharpIDE.Godot.Features.SolutionExplorer; namespace SharpIDE.Godot.Features.CodeEditor; @@ -98,7 +99,7 @@ public partial class CodeEditorPanel : MarginContainer { _tabContainer.AddChild(newTab); var newTabIndex = _tabContainer.GetTabCount() - 1; - _tabContainer.SetTabIcon(newTabIndex, CsFileTexture); + _tabContainer.SetIconsForFileExtension(file, newTabIndex); _tabContainer.SetTabTitle(newTabIndex, file.Name); _tabContainer.SetTabTooltip(newTabIndex, file.Path); _tabContainer.CurrentTab = newTabIndex; @@ -155,4 +156,19 @@ public partial class CodeEditorPanel : MarginContainer await _runService.SendDebuggerStepOver(threadId); }); } +} + +file static class TabContainerExtensions +{ + extension(TabContainer tabContainer) + { + public void SetIconsForFileExtension(SharpIdeFile file, int newTabIndex) + { + var (icon, overlayIcon) = FileIconHelper.GetIconForFileExtension(file.Extension); + tabContainer.SetTabIcon(newTabIndex, icon); + + // Unfortunately TabContainer doesn't have a SetTabIconOverlay method + //tabContainer.SetIconOverlay(0, overlayIcon); + } + } } \ No newline at end of file