@ -43,12 +43,18 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
if ( definition = = null )
if ( definition = = null )
throw new ArgumentNullException ( "definition" ) ;
throw new ArgumentNullException ( "definition" ) ;
this . definition = definition ;
this . definition = definition ;
this . definition . Updated + = ( sender , e ) = > UpdateDerivedTypes ( ) ;
this . definition . Updated + = OnDefinitionUpdated ;
this . text = SD . ResourceService . GetString ( "MainWindow.Windows.ClassBrowser.DerivedTypes" ) ;
this . text = SD . ResourceService . GetString ( "MainWindow.Windows.ClassBrowser.DerivedTypes" ) ;
derivedTypes = new SimpleModelCollection < ITypeDefinitionModel > ( ) ;
derivedTypes = new SimpleModelCollection < ITypeDefinitionModel > ( ) ;
childrenLoaded = false ;
childrenLoaded = false ;
}
}
protected override void DetachEventHandlers ( )
{
this . definition . Updated - = OnDefinitionUpdated ;
base . DetachEventHandlers ( ) ;
}
protected override IModelCollection < object > ModelChildren {
protected override IModelCollection < object > ModelChildren {
get {
get {
if ( ! childrenLoaded ) {
if ( ! childrenLoaded ) {
@ -59,6 +65,14 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
}
}
}
}
void OnDefinitionUpdated ( object sender , EventArgs e )
{
// Listing the derived types can be expensive; so it's better to switch back to lazy-loading
// (collapsing the node if necessary)
SwitchBackToLazyLoading ( ) ;
childrenLoaded = false ;
}
public override SharpTreeNode FindChildNodeRecursively ( Func < SharpTreeNode , bool > predicate )
public override SharpTreeNode FindChildNodeRecursively ( Func < SharpTreeNode , bool > predicate )
{
{
// Don't search children of this node, because they are repeating type nodes from elsewhere
// Don't search children of this node, because they are repeating type nodes from elsewhere