Browse Source

Fixed NullReferenceException when opening a file without syntax highlighting.

Don't switch between tabs inside a WorkbenchWindow when pressing Ctrl+Tab.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4216 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
bcef5f830f
  1. 7
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
  2. 17
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs
  3. 27
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
  4. 2
      src/Main/Base/Project/Src/TextEditor/Conditions/TextContentCondition.cs

7
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs

@ -45,6 +45,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -45,6 +45,13 @@ namespace ICSharpCode.SharpDevelop.Gui
dockingManager.Loaded += dockingManager_Loaded;
}
#if DEBUG
internal void WriteState(TextWriter output)
{
}
#endif
void dockingManager_Loaded(object sender, RoutedEventArgs e)
{
// LoadConfiguration doesn't do anything until the docking manager is loaded,

17
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

@ -237,10 +237,19 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -237,10 +237,19 @@ namespace ICSharpCode.SharpDevelop.Gui
viewContents.ForEach(vc => vc.Dispose());
}
class TabControlWithoutShortcuts : TabControl
{
protected override void OnKeyDown(KeyEventArgs e)
{
// We don't call base.KeyDown to prevent the TabControl from handling Ctrl+Tab.
// Instead, we let the key press bubble up to the DocumentPane.
}
}
private void CreateViewTabControl()
{
if (viewTabControl == null) {
viewTabControl = new TabControl();
viewTabControl = new TabControlWithoutShortcuts();
viewTabControl.TabStripPlacement = Dock.Bottom;
this.SetContent(viewTabControl);
@ -412,6 +421,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -412,6 +421,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
}
// Forward focus to the content.
/// <inheritdoc/>
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
@ -423,5 +433,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -423,5 +433,10 @@ namespace ICSharpCode.SharpDevelop.Gui
e.Handled = true;
}
}
public override string ToString()
{
return "[AvalonWorkbenchWindow: " + this.Title + "]";
}
}
}

27
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -299,9 +299,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -299,9 +299,6 @@ namespace ICSharpCode.SharpDevelop.Gui
LoadViewContentMemento(content);
WorkbenchLayout.ShowView(content, switchToOpenedView);
if (switchToOpenedView) {
content.WorkbenchWindow.SelectWindow();
}
}
public void ShowPad(PadDescriptor content)
@ -479,5 +476,29 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -479,5 +476,29 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
}
#if DEBUG
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (!e.Handled && e.Key == Key.D && e.KeyboardDevice.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt)) {
StringWriter output = new StringWriter();
output.WriteLine("Keyboard.FocusedElement = " + GetElementName(Keyboard.FocusedElement));
output.WriteLine("ActiveContent = " + GetElementName(this.ActiveContent));
output.WriteLine("ActiveViewContent = " + GetElementName(this.ActiveViewContent));
output.WriteLine("ActiveWorkbenchWindow = " + GetElementName(this.ActiveWorkbenchWindow));
((AvalonDockLayout)workbenchLayout).WriteState(output);
LoggingService.Debug(output.ToString());
}
}
static string GetElementName(object element)
{
if (element == null)
return "<null>";
else
return element.GetType().FullName + ": " + element.ToString();
}
#endif
}
}

2
src/Main/Base/Project/Src/TextEditor/Conditions/TextContentCondition.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Conditions @@ -29,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Conditions
IViewContent content = WorkbenchSingleton.Workbench.ActiveViewContent;
if (content is ITextEditorProvider) {
var ctrl = (content as ITextEditorProvider).TextEditor.GetService(typeof(AvalonEdit.TextEditor)) as AvalonEdit.TextEditor;
if (ctrl != null && ctrl.SyntaxHighlighting.Name != null) {
if (ctrl != null && ctrl.SyntaxHighlighting != null) {
return string.Equals(textcontent, ctrl.SyntaxHighlighting.Name, StringComparison.OrdinalIgnoreCase);
}
}

Loading…
Cancel
Save