Browse Source

Allow using shortcuts from the main menu when a debugger tool tip has focus.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2874 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
300ed4da78
  1. 7
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  2. 35
      src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs
  3. 14
      src/Main/ICSharpCode.SharpDevelop.Widgets/Project/TreeGrid/DynamicTreeRow.cs

7
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -25,6 +25,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -25,6 +25,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
if (build.LastBuildResults.ErrorCount == 0) {
IProject startupProject = ProjectService.OpenSolution.StartupProject;
if (startupProject != null) {
LoggingService.Info("Debugger Command: Start (withDebugger=" + withDebugger + ")");
startupProject.Start(withDebugger);
} else {
MessageService.ShowError("${res:BackendBindings.ExecutionManager.CantExecuteDLLError}");
@ -47,6 +48,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -47,6 +48,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: Continue");
DebuggerService.CurrentDebugger.Continue();
}
}
@ -55,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -55,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: Break");
DebuggerService.CurrentDebugger.Break();
}
}
@ -63,6 +66,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -63,6 +66,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: Stop");
DebuggerService.CurrentDebugger.Stop();
}
}
@ -71,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -71,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: StepOver");
DebuggerService.CurrentDebugger.StepOver();
}
}
@ -79,6 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -79,6 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: StepInto");
DebuggerService.CurrentDebugger.StepInto();
}
}
@ -87,6 +93,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -87,6 +93,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
LoggingService.Info("Debugger Command: StepOut");
DebuggerService.CurrentDebugger.StepOut();
}
}

35
src/Main/Base/Project/Src/Services/Debugger/DebuggerGridControl.cs

@ -70,11 +70,42 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -70,11 +70,42 @@ namespace ICSharpCode.SharpDevelop.Debugging
EndUpdate();
}
DynamicTreeRow.ChildForm frm;
class TooltipForm : DynamicTreeRow.ChildForm
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (base.ProcessCmdKey(ref msg, keyData)) {
return true;
} else {
Console.WriteLine("Handling " + keyData);
var i = FindItemByShortcut(Gui.WorkbenchSingleton.MainForm.MainMenuStrip.Items, keyData);
if (i != null)
i.PerformClick();
return false;
}
}
static ToolStripMenuItem FindItemByShortcut(ToolStripItemCollection c, Keys shortcut)
{
foreach (ToolStripItem i in c) {
ToolStripMenuItem mi = i as ToolStripMenuItem;
if (mi != null) {
if (mi.ShortcutKeys == shortcut && mi.Enabled)
return mi;
mi = FindItemByShortcut(mi.DropDownItems, shortcut);
if (mi != null)
return mi;
}
}
return null;
}
}
TooltipForm frm;
public void ShowForm(ICSharpCode.TextEditor.TextArea textArea, TextLocation logicTextPos)
{
frm = new DynamicTreeRow.ChildForm();
frm = new TooltipForm();
frm.AllowResizing = false;
frm.Owner = textArea.FindForm();
int ypos = (textArea.Document.GetVisibleLine(logicTextPos.Y) + 1) * textArea.TextView.FontHeight - textArea.VirtualTop.Y;

14
src/Main/ICSharpCode.SharpDevelop.Widgets/Project/TreeGrid/DynamicTreeRow.cs

@ -213,7 +213,7 @@ namespace ICSharpCode.SharpDevelop.Widgets.TreeGrid @@ -213,7 +213,7 @@ namespace ICSharpCode.SharpDevelop.Widgets.TreeGrid
plus.RaiseItemChanged();
Timer timer = new Timer();
timer.Interval = 85;
timer.Tick += delegate(object sender2, EventArgs e2) {
timer.Tick += delegate(object sender2, EventArgs e2) {
((Timer)sender2).Stop();
((Timer)sender2).Dispose();
blockClickEvent = false;
@ -441,6 +441,18 @@ namespace ICSharpCode.SharpDevelop.Widgets.TreeGrid @@ -441,6 +441,18 @@ namespace ICSharpCode.SharpDevelop.Widgets.TreeGrid
Close();
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (base.ProcessCmdKey(ref msg, keyData)) {
return true;
} else {
ChildForm owner = Owner as ChildForm;
if (owner != null)
return owner.ProcessCmdKey(ref msg, keyData);
return false;
}
}
}
#endregion
}

Loading…
Cancel
Save