diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs
index 84192784bf..c6b85ebf0c 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs
@@ -25,11 +25,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
get { return pad.IsZoomControlVisible; }
set { pad.IsZoomControlVisible = value; }
}
-
- public override void Run()
- {
- IsChecked = !IsChecked;
- }
}
public sealed class ToggleMethodViewCommand : AbstractCheckableMenuCommand
@@ -50,11 +45,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
get { return pad.IsMethodView; }
set { pad.IsMethodView = value; }
}
-
- public override void Run()
- {
- IsChecked = !IsChecked;
- }
}
public sealed class ParallelStacksViewCommand : AbstractComboBoxCommand
diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/FormsCommands.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/FormsCommands.cs
index 84c91f9139..79c0fc1b43 100644
--- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/FormsCommands.cs
+++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/FormsCommands.cs
@@ -428,9 +428,6 @@ namespace ICSharpCode.FormsDesigner.Commands
}
}
- public override void Run()
- {
- }
}
#endregion
diff --git a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
index 97b4ba5b48..1e446e3596 100755
--- a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
@@ -458,10 +458,5 @@ namespace ICSharpCode.SharpDevelop.Gui
get { return pad.WordWrap; }
set { pad.WordWrap = value; }
}
-
- public override void Run()
- {
- IsChecked = !IsChecked;
- }
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageViewToolbarCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageViewToolbarCommands.cs
index 28f95aff41..874fb5edee 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageViewToolbarCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageViewToolbarCommands.cs
@@ -83,10 +83,5 @@ namespace ICSharpCode.SharpDevelop.Gui
checkBox = (ToolBarCheckBox)Owner;
}
}
-
- public override void Run()
- {
- IsChecked = !IsChecked;
- }
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPadCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPadCommands.cs
index a091a1fb49..7b02284a80 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPadCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPadCommands.cs
@@ -29,10 +29,5 @@ namespace ICSharpCode.SharpDevelop.Gui
PropertyPad.Grid.HelpVisible = value;
}
}
-
- public override void Run()
- {
- PropertyPad.Grid.HelpVisible = !PropertyPad.Grid.HelpVisible;
- }
}
}
diff --git a/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj b/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj
index 8f77b7f2c1..5b90e44f28 100644
--- a/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj
+++ b/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj
@@ -72,6 +72,7 @@
+
diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs
new file mode 100644
index 0000000000..f005c0245a
--- /dev/null
+++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs
@@ -0,0 +1,55 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Threading;
+using System.Windows;
+using System.Windows.Data;
+using System.Windows.Input;
+using System.Windows.Threading;
+
+namespace ICSharpCode.Core.Presentation
+{
+ sealed class MenuCheckBox : CoreMenuItem
+ {
+ BindingExpressionBase isCheckedBinding;
+
+ public MenuCheckBox(UIElement inputBindingOwner, Codon codon, object caller)
+ : base(codon, caller)
+ {
+ this.Command = CommandWrapper.GetCommand(codon, caller, true);
+ CommandWrapper wrapper = this.Command as CommandWrapper;
+ if (wrapper != null) {
+ ICheckableMenuCommand cmd = wrapper.GetAddInCommand() as ICheckableMenuCommand;
+ if (cmd != null) {
+ isCheckedBinding = SetBinding(IsCheckedProperty, new Binding("IsChecked") { Source = cmd, Mode = BindingMode.OneWay });
+ }
+ }
+
+ if (!string.IsNullOrEmpty(codon.Properties["shortcut"])) {
+ KeyGesture kg = MenuService.ParseShortcut(codon.Properties["shortcut"]);
+ MenuCommand.AddGestureToInputBindingOwner(inputBindingOwner, kg, this.Command, null);
+ this.InputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture);
+ }
+ }
+
+ public override void UpdateStatus()
+ {
+ base.UpdateStatus();
+ if (isCheckedBinding != null)
+ isCheckedBinding.UpdateTarget();
+ }
+
+ protected override void OnClick()
+ {
+ base.OnClick();
+ Dispatcher.BeginInvoke(
+ DispatcherPriority.DataBind,
+ new Action(
+ delegate {
+ if (isCheckedBinding != null)
+ isCheckedBinding.UpdateTarget();
+ }));
+ }
+ }
+}
diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs
index 11c3efc788..1a22b7184f 100644
--- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs
@@ -214,8 +214,7 @@ namespace ICSharpCode.Core.Presentation
case "Separator":
return new ConditionalSeparator(codon, descriptor.Caller, false);
case "CheckBox":
- return "CheckBox";
- //return new MenuCheckBox(codon, descriptor.Caller);
+ return new MenuCheckBox(context.InputBindingOwner, codon, descriptor.Caller);
case "Item":
case "Command":
return new MenuCommand(context.InputBindingOwner, codon, descriptor.Caller, createCommand, context.ActivationMethod);
diff --git a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarCheckBox.cs b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarCheckBox.cs
index 19651dc479..ef8ee86f2f 100644
--- a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarCheckBox.cs
+++ b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarCheckBox.cs
@@ -6,6 +6,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
+using System.Windows.Threading;
namespace ICSharpCode.Core.Presentation
{
@@ -52,12 +53,20 @@ namespace ICSharpCode.Core.Presentation
this.Visibility = Visibility.Collapsed;
else
this.Visibility = Visibility.Visible;
+ if (isCheckedBinding != null)
+ isCheckedBinding.UpdateTarget();
}
protected override void OnClick()
{
base.OnClick();
- isCheckedBinding.UpdateTarget();
+ Dispatcher.BeginInvoke(
+ DispatcherPriority.DataBind,
+ new Action(
+ delegate {
+ if (isCheckedBinding != null)
+ isCheckedBinding.UpdateTarget();
+ }));
}
}
}