Browse Source

- fixed SD2-1523 - Watch pad right click shows two context menus based on patch from http://community.sharpdevelop.net/forums/t/9006.aspx

- applied patch for drag&drop in Watch pad from http://community.sharpdevelop.net/forums/t/9320.aspx
- fixed NullReferenceException in ValueNode if either Watch Pad or LocalVarPad are not opened (added comments)


git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3962 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Siegfried Pammer 17 years ago
parent
commit
b47cf83b0e
  1. 1
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
  2. 47
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/WatchPad.cs
  3. 1
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs
  4. 5
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs
  5. 5
      src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.Input.cs
  6. 8
      src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.cs

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

@ -62,6 +62,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -62,6 +62,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
instance = this;
}
/// <remarks>Always check if Instance is null, might be null if pad is not opened!</remarks>
public static LocalVarPad Instance {
get { return instance; }
}

47
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/WatchPad.cs

@ -74,6 +74,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -74,6 +74,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
public override void SetValue(TreeNodeAdv node, object value)
{
if (string.IsNullOrEmpty(value as string))
MessageBox.Show("You can not set name to an empty string!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (((TreeViewVarNode)node).Content is ValueNode)
((ValueNode)((TreeViewVarNode)node).Content).SetName(value.ToString());
@ -82,6 +86,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -82,6 +86,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
((TextNode)((TreeViewVarNode)node).Content).SetName(value.ToString());
}
}
}
public override void MouseDown(TreeNodeAdvMouseEventArgs args)
{
if (args.Node == null) {
@ -93,6 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -93,6 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
ContextMenuStrip menu = ((IContextMenu)content).GetContextMenu();
if (menu != null) {
menu.Show(args.Node.Tree, args.Location);
args.Handled = true;
}
} else {
base.MouseDown(args);
@ -105,6 +111,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -105,6 +111,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
TreeViewAdv watchList;
Process debuggedProcess;
List<TextNode> watches;
static WatchPad instance;
/// <remarks>Always check if Instance is null, might be null if pad is not opened!</remarks>
public static WatchPad Instance {
get { return instance; }
}
public WatchPad()
{
instance = this;
}
public List<TextNode> Watches {
get { return watches; }
@ -154,16 +171,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -154,16 +171,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
watchList.NodeControls.Add(typeControl);
watchList.AutoRowHeight = true;
watchList.MouseDoubleClick += new MouseEventHandler(watchList_DoubleClick);
watchList.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu");
watchList.AllowDrop = true;
watchList.DragEnter += new DragEventHandler(watchList_DragEnter);
watchList.DragDrop += new DragEventHandler(watchList_DragDrop);
watches = new List<TextNode>();
RedrawContent();
}
void watchList_DragDrop(object sender, DragEventArgs e)
{
watchList.BeginUpdate();
TextNode text = new TextNode(e.Data.GetData(DataFormats.StringFormat).ToString());
TreeViewVarNode node = new TreeViewVarNode(this.debuggedProcess, this.watchList, text);
watches.Add(text);
watchList.Root.Children.Add(node);
watchList.EndUpdate();
node.IsSelected = true;
this.RefreshPad();
}
void watchList_DragEnter(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.StringFormat)) {
e.Effect = DragDropEffects.Copy;
}
else {
e.Effect = DragDropEffects.None;
}
}
void watchList_DoubleClick(object sender, MouseEventArgs e)
{
if (watchList.SelectedNode == null)

1
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs

@ -82,6 +82,7 @@ namespace Debugger.AddIn.TreeModel @@ -82,6 +82,7 @@ namespace Debugger.AddIn.TreeModel
ContextMenuStrip menu = ((IContextMenu)content).GetContextMenu();
if (menu != null) {
menu.Show(args.Node.Tree, args.Location);
args.Handled = true;
}
} else {
base.MouseDown(args);

5
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs

@ -233,8 +233,13 @@ namespace Debugger.AddIn.TreeModel @@ -233,8 +233,13 @@ namespace Debugger.AddIn.TreeModel
hexView.Text = ResourceService.GetString("MainWindow.Windows.Debug.LocalVariables.ShowInHexadecimal");
hexView.Checked = DebuggingOptions.Instance.ShowValuesInHexadecimal;
hexView.Click += delegate {
// refresh all pads that use ValueNode for display
DebuggingOptions.Instance.ShowValuesInHexadecimal = !DebuggingOptions.Instance.ShowValuesInHexadecimal;
// always check if instance is null, might be null if pad is not opened
if (LocalVarPad.Instance != null)
LocalVarPad.Instance.RefreshPad();
if (WatchPad.Instance != null)
WatchPad.Instance.RefreshPad();
};
menu.Items.AddRange(new ToolStripItem[] {

5
src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.Input.cs

@ -155,8 +155,11 @@ namespace Aga.Controls.Tree @@ -155,8 +155,11 @@ namespace Aga.Controls.Tree
if (args.Node != null && args.Control != null)
args.Control.MouseDown(args);
if (!args.Handled)
if (!args.Handled) {
Input.MouseDown(args);
base.ContextMenuStrip = _cms;
} else
base.ContextMenuStrip = null;
base.OnMouseDown(e);
}

8
src/Libraries/TreeViewAdv/Aga.Controls/Tree/TreeViewAdv.cs

@ -41,6 +41,14 @@ namespace Aga.Controls.Tree @@ -41,6 +41,14 @@ namespace Aga.Controls.Tree
private IncrementalSearch _search;
private List<TreeNodeAdv> _expandingNodes = new List<TreeNodeAdv>();
private AbortableThreadPool _threadPool = new AbortableThreadPool();
private ContextMenuStrip _cms;
public new ContextMenuStrip ContextMenuStrip {
set {
base.ContextMenuStrip = value;
_cms = value;
}
}
#region Public Events

Loading…
Cancel
Save