add icon with custom draw
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using Godot;
|
using Godot;
|
||||||
|
using Microsoft.VisualStudio.Shared.VSCodeDebugProtocol.Messages;
|
||||||
|
|
||||||
namespace SharpIDE.Godot.Features.Debug_.Tab.SubTabs;
|
namespace SharpIDE.Godot.Features.Debug_.Tab.SubTabs;
|
||||||
|
|
||||||
@@ -13,6 +14,21 @@ public partial class ThreadsVariablesSubTab
|
|||||||
var variable = _variableReferenceLookup.GetValueOrDefault(treeItem);
|
var variable = _variableReferenceLookup.GetValueOrDefault(treeItem);
|
||||||
if (variable is null) return;
|
if (variable is null) return;
|
||||||
|
|
||||||
|
const int iconSize = 18;
|
||||||
|
var icon = variable.PresentationHint?.Kind switch
|
||||||
|
{
|
||||||
|
VariablePresentationHint.KindValue.Data => _fieldIcon,
|
||||||
|
VariablePresentationHint.KindValue.Property => _propertyIcon,
|
||||||
|
VariablePresentationHint.KindValue.Class => _staticMembersIcon,
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
if (icon is null)
|
||||||
|
{
|
||||||
|
// unlike sharpdbg and presumably vsdbg, netcoredbg does not set PresentationHint for variables
|
||||||
|
if (variable.Name == "Static members") icon = _staticMembersIcon; // Will not currently occur, as 'Static members' are not handled by this custom draw
|
||||||
|
else icon = _fieldIcon;
|
||||||
|
}
|
||||||
|
|
||||||
var font = _variablesTree.GetThemeFont(ThemeStringNames.Font);
|
var font = _variablesTree.GetThemeFont(ThemeStringNames.Font);
|
||||||
var fontSize = _variablesTree.GetThemeFontSize(ThemeStringNames.FontSize);
|
var fontSize = _variablesTree.GetThemeFontSize(ThemeStringNames.FontSize);
|
||||||
const float padding = 4.0f;
|
const float padding = 4.0f;
|
||||||
@@ -20,6 +36,10 @@ public partial class ThreadsVariablesSubTab
|
|||||||
var currentX = rect.Position.X + padding;
|
var currentX = rect.Position.X + padding;
|
||||||
var textYPos = rect.Position.Y + (rect.Size.Y + fontSize) / 2 - 2;
|
var textYPos = rect.Position.Y + (rect.Size.Y + fontSize) / 2 - 2;
|
||||||
|
|
||||||
|
var iconRect = new Rect2(currentX, rect.Position.Y + (rect.Size.Y - iconSize) / 2, iconSize, iconSize);
|
||||||
|
_variablesTree.DrawTextureRect(icon, iconRect, false);
|
||||||
|
currentX += iconSize + padding;
|
||||||
|
|
||||||
_variablesTree.DrawString(font, new Vector2(currentX, textYPos), variable.Name, HorizontalAlignment.Left, -1,
|
_variablesTree.DrawString(font, new Vector2(currentX, textYPos), variable.Name, HorizontalAlignment.Left, -1,
|
||||||
fontSize, VariableNameColor);
|
fontSize, VariableNameColor);
|
||||||
var variableNameDrawnSize = font.GetStringSize(variable.Name, HorizontalAlignment.Left, -1, fontSize).X;
|
var variableNameDrawnSize = font.GetStringSize(variable.Name, HorizontalAlignment.Left, -1, fontSize).X;
|
||||||
|
|||||||
@@ -142,24 +142,12 @@ public partial class ThreadsVariablesSubTab : Control
|
|||||||
{
|
{
|
||||||
var variableItem = _variablesTree.CreateItem(parentItem);
|
var variableItem = _variablesTree.CreateItem(parentItem);
|
||||||
_variableReferenceLookup[variableItem] = variable;
|
_variableReferenceLookup[variableItem] = variable;
|
||||||
var icon = variable.PresentationHint?.Kind switch
|
|
||||||
{
|
|
||||||
VariablePresentationHint.KindValue.Data => _fieldIcon,
|
|
||||||
VariablePresentationHint.KindValue.Property => _propertyIcon,
|
|
||||||
VariablePresentationHint.KindValue.Class => _staticMembersIcon,
|
|
||||||
_ => null
|
|
||||||
};
|
|
||||||
if (icon is null)
|
|
||||||
{
|
|
||||||
// unlike sharpdbg and presumably vsdbg, netcoredbg does not set PresentationHint for variables
|
|
||||||
if (variable.Name == "Static members") icon = _staticMembersIcon;
|
|
||||||
else icon = _fieldIcon;
|
|
||||||
}
|
|
||||||
variableItem.SetIcon(0, icon);
|
|
||||||
variableItem.SetMetadata(0, new Vector2I(0, variable.VariablesReference));
|
variableItem.SetMetadata(0, new Vector2I(0, variable.VariablesReference));
|
||||||
if (variable.Name == "Static members")
|
if (variable.Name == "Static members")
|
||||||
{
|
{
|
||||||
variableItem.SetTooltipText(0, null);
|
variableItem.SetTooltipText(0, null);
|
||||||
|
variableItem.SetIcon(0, _staticMembersIcon);
|
||||||
variableItem.SetText(0, "Static members");
|
variableItem.SetText(0, "Static members");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user