Browse Source

Fixed SD2-1248: Adding many warnings in the current file to the error drawer takes a long time - do not refresh text editor after each individual error/warning

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2358 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
b74d53be68
  1. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs
  2. 28
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs

@ -707,7 +707,7 @@ namespace ICSharpCode.TextEditor @@ -707,7 +707,7 @@ namespace ICSharpCode.TextEditor
}
/// <remarks>
/// Overwritten refresh method that locks if the control is in
/// Overwritten refresh method that does nothing if the control is in
/// an update cycle.
/// </remarks>
public override void Refresh()

28
src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs

@ -49,12 +49,31 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -49,12 +49,31 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
TaskService.Added += new TaskEventHandler(OnAdded);
TaskService.Removed += new TaskEventHandler(OnRemoved);
TaskService.Cleared += new EventHandler(OnCleared);
TaskService.InUpdateChanged += OnInUpdateChanged;
textEditor.FileNameChanged += new EventHandler(SetErrors);
DebuggerService.DebugStarted += OnDebugStarted;
DebuggerService.DebugStopped += OnDebugStopped;
}
bool isDisposed;
bool requireTextEditorRefresh;
void RefreshTextEditor()
{
if (TaskService.InUpdate) {
requireTextEditorRefresh = true;
} else {
textEditor.Refresh();
}
}
void OnInUpdateChanged(object sender, EventArgs e)
{
if (requireTextEditorRefresh) {
requireTextEditorRefresh = false;
textEditor.Refresh();
}
}
/// <summary>
/// Deregisters the event handlers so the error drawer (and associated TextEditorControl)
@ -68,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -68,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
TaskService.Added -= new TaskEventHandler(OnAdded);
TaskService.Removed -= new TaskEventHandler(OnRemoved);
TaskService.Cleared -= new EventHandler(OnCleared);
TaskService.InUpdateChanged -= OnInUpdateChanged;
textEditor.FileNameChanged -= new EventHandler(SetErrors);
DebuggerService.DebugStarted -= OnDebugStarted;
DebuggerService.DebugStopped -= OnDebugStopped;
@ -99,7 +119,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -99,7 +119,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
VisualError ve = marker as VisualError;
if (ve != null && ve.Task == t) {
textEditor.Document.MarkerStrategy.RemoveMarker(marker);
textEditor.Refresh();
RefreshTextEditor();
break;
}
}
@ -108,7 +128,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -108,7 +128,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
void OnCleared(object sender, EventArgs e)
{
if (ClearErrors()) {
textEditor.Refresh();
RefreshTextEditor();
}
}
@ -158,9 +178,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -158,9 +178,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
length = 2; // use minimum length
}
textEditor.Document.MarkerStrategy.AddMarker(new VisualError(offset, length, task));
if (refresh) {
textEditor.Refresh();
}
if (refresh) RefreshTextEditor();
}
}

Loading…
Cancel
Save