diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs
index e2dfa930e9..34344de871 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpInsightItem.cs
@@ -2,12 +2,12 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.ComponentModel;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
-using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Xml;
@@ -31,6 +31,7 @@ namespace CSharpBinding.Completion
get {
if (header == null) {
header = GenerateHeader();
+ OnPropertyChanged("Header");
}
return header;
}
@@ -45,6 +46,8 @@ namespace CSharpBinding.Completion
this.highlightedParameterIndex = parameterIndex;
if (header != null)
header = GenerateHeader();
+ OnPropertyChanged("Header");
+ OnPropertyChanged("Content");
}
FlowDocumentScrollViewer GenerateHeader()
@@ -94,6 +97,7 @@ namespace CSharpBinding.Completion
get {
if (content == null) {
GenerateHeader();
+ OnPropertyChanged("Content");
}
return content;
}
@@ -132,5 +136,14 @@ namespace CSharpBinding.Completion
}
}
}
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ void OnPropertyChanged(string propertyName)
+ {
+ var handler = PropertyChanged;
+ if (handler != null)
+ handler(this, new PropertyChangedEventArgs(propertyName));
+ }
}
}
diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItem.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItem.cs
index c08da37e12..31737b0550 100644
--- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItem.cs
+++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompletionItem.cs
@@ -210,6 +210,15 @@ namespace ICSharpCode.XamlBinding
public object Content {
get { return ctor.Documentation; }
}
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ var handler = PropertyChanged;
+ if (handler != null)
+ handler(this, e);
+ }
}
class MemberInsightItem : IInsightItem
@@ -237,5 +246,14 @@ namespace ICSharpCode.XamlBinding
public object Content {
get { return member.Documentation; }
}
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ var handler = PropertyChanged;
+ if (handler != null)
+ handler(this, e);
+ }
}
}
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopInsightWindow.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopInsightWindow.cs
index 18718abd6f..7232ce4139 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopInsightWindow.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopInsightWindow.cs
@@ -37,6 +37,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
OnPropertyChanged("CurrentHeader");
OnPropertyChanged("CurrentContent");
OnPropertyChanged("CurrentIndexText");
+ insightWindow.OnSelectedItemChanged(EventArgs.Empty);
}
public event PropertyChangedEventHandler PropertyChanged;
@@ -78,7 +79,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
}
- void OnPropertyChanged(string propertyName)
+ internal void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
@@ -119,6 +120,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
TextDocument document;
Caret caret;
+ IInsightItem oldSelectedItem;
void AttachEvents()
{
@@ -157,11 +159,30 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected virtual void OnSelectedItemChanged(EventArgs e)
{
+ if (oldSelectedItem != null)
+ oldSelectedItem.PropertyChanged -= SelectedItemPropertyChanged;
+ oldSelectedItem = SelectedItem;
+ if (oldSelectedItem != null)
+ oldSelectedItem.PropertyChanged += SelectedItemPropertyChanged;
if (SelectedItemChanged != null) {
SelectedItemChanged(this, e);
}
}
+ void SelectedItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ var provider = Provider as SDItemProvider;
+ if (provider == null) return;
+ switch (e.PropertyName) {
+ case "Header":
+ provider.OnPropertyChanged("CurrentHeader");
+ break;
+ case "Content":
+ provider.OnPropertyChanged("CurrentContent");
+ break;
+ }
+ }
+
public event EventHandler CaretPositionChanged;
protected virtual void OnCaretPositionChanged(EventArgs e)
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/InsightWindow.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/InsightWindow.cs
index d606bad92d..972baf8f74 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/InsightWindow.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/InsightWindow.cs
@@ -34,14 +34,14 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
///
protected override void OnSourceInitialized(EventArgs e)
{
- base.OnSourceInitialized(e);
-
Rect caret = this.TextArea.Caret.CalculateCaretRectangle();
Point pointOnScreen = this.TextArea.TextView.PointToScreen(caret.Location - this.TextArea.TextView.ScrollOffset);
Rect workingArea = System.Windows.Forms.Screen.FromPoint(pointOnScreen.ToSystemDrawing()).WorkingArea.ToWpf().TransformFromDevice(this);
MaxHeight = workingArea.Height;
MaxWidth = Math.Min(workingArea.Width, Math.Max(1000, workingArea.Width * 0.6));
+
+ base.OnSourceInitialized(e);
}
///
diff --git a/src/Main/Base/Project/Editor/CodeCompletion/IInsightItem.cs b/src/Main/Base/Project/Editor/CodeCompletion/IInsightItem.cs
index 57b9a004d1..3b9866b84c 100644
--- a/src/Main/Base/Project/Editor/CodeCompletion/IInsightItem.cs
+++ b/src/Main/Base/Project/Editor/CodeCompletion/IInsightItem.cs
@@ -2,13 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.ComponentModel;
namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{
///
/// An item in the insight window.
///
- public interface IInsightItem
+ public interface IInsightItem : INotifyPropertyChanged
{
object Header { get; }
object Content { get; }