Browse Source

Fixed Base classes in Local Variables pad

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@401 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
184294d145
  1. 31
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BaseClassItem.cs
  2. 2
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
  3. 15
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/VariableItem.cs
  4. 11
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectVariable.cs

31
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BaseClassItem.cs

@ -12,21 +12,16 @@ using DebuggerLibrary; @@ -12,21 +12,16 @@ using DebuggerLibrary;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
class BaseClassItem: VariableListItem
class BaseClassItem: VariableItem
{
ObjectVariable variable;
public override bool IsValid {
get {
return variable != null &&
variable.HasBaseClass &&
variable.BaseClass.Type != "System.Object";
}
}
public BaseClassItem(Variable baseClassOfVariable): base()
public BaseClassItem(Variable uncastedVariable)
{
this.variable = baseClassOfVariable as ObjectVariable;
ObjectVariable variable = uncastedVariable as ObjectVariable;
if (variable != null && variable.HasBaseClass && variable.BaseClass.Type != "System.Object") {
this.Variable = variable.BaseClass;
} else {
this.Variable = null;
}
Refresh();
}
@ -37,14 +32,18 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -37,14 +32,18 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
SetTexts("<Base class>",
variable.BaseClass.Value.ToString(),
variable.BaseClass.Type);
Variable.Value.ToString(),
Variable.Type);
ImageIndex = 0; // Class
if (variable.BaseClass.MayHaveSubVariables) { // Always true
if (IsExpanded) {
UpdateSubVariables();
} else {
if (Variable.MayHaveSubVariables) { // Always true
Items.Add(new PlaceHolderItem()); // Show plus icon
}
}
}
}
}

2
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs

@ -156,7 +156,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -156,7 +156,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
VariableItem variableItem = item as VariableItem;
if (variableItem != null && !variables.Contains(variableItem.Variable.Name)) {
if (variableItem != null && !(item is BaseClassItem) && !variables.Contains(variableItem.Variable.Name)) {
toBeRemoved.Add(item);
}
}

15
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/VariableItem.cs

@ -34,6 +34,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -34,6 +34,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
protected VariableItem()
{
}
public VariableItem(Variable variable): base()
{
this.variable = variable;
@ -63,16 +68,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -63,16 +68,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
ImageIndex = 1; // Field
}
if (variable.MayHaveSubVariables && !IsExpanded) {
Items.Add(new PlaceHolderItem()); // Show plus icon
}
if (IsExpanded) {
UpdateSubVariables();
} else {
if (variable.MayHaveSubVariables) {
Items.Add(new PlaceHolderItem()); // Show plus icon
}
}
}
void UpdateSubVariables() {
protected void UpdateSubVariables() {
if (!baseClassItemAdded) {
VariableListItem baseClassItem = new BaseClassItem(variable);
if (baseClassItem.IsValid) {

11
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectVariable.cs

@ -101,7 +101,13 @@ namespace DebuggerLibrary @@ -101,7 +101,13 @@ namespace DebuggerLibrary
public bool HasBaseClass {
get {
if (baseClass == null) baseClass = GetBaseClass();
if (baseClass == null) {
try {
baseClass = GetBaseClass();
} catch (DebuggerException) {
baseClass = null;
}
}
return (baseClass != null);
}
}
@ -129,12 +135,11 @@ namespace DebuggerLibrary @@ -129,12 +135,11 @@ namespace DebuggerLibrary
corModuleSuperclass = m.CorModule;
break;
}
if (classProps.SuperClassToken == 0) throw new DebuggerException("Unable to get base class: " + fullTypeName);
}
// If it has no base class
if ((classProps.SuperClassToken & 0x00FFFFFF) == 0) {
return null;
throw new DebuggerException("Unable to get base class: " + fullTypeName);
} else {
ICorDebugClass superClass;
corModuleSuperclass.GetClassFromToken(classProps.SuperClassToken, out superClass);

Loading…
Cancel
Save