Browse Source

rename should not be executed, if the name is not valid or the selection was changed

pull/334/head
Siegfried Pammer 12 years ago
parent
commit
8cf4ce9a91
  1. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
  2. 33
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs

@ -191,6 +191,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -191,6 +191,7 @@ namespace ICSharpCode.WpfDesign.AddIn
void OnPropertyGridPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (propertyGridView.PropertyGrid.ReloadActive) return;
if (e.PropertyName == "Name") {
if (!propertyGridView.PropertyGrid.IsNameCorrect) return;
@ -205,7 +206,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -205,7 +206,7 @@ namespace ICSharpCode.WpfDesign.AddIn
// rename the member
IMember member = info.CompilationUnit.Classes [0].AllMembers.FirstOrDefault(m => m.Name == propertyGridView.PropertyGrid.OldName);
if (member != null) {
if (member != null && propertyGridView.PropertyGrid.Name != null) {
FindReferencesAndRenameHelper.RenameMember(member, propertyGridView.PropertyGrid.Name);
}
}

33
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs

@ -158,14 +158,17 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -158,14 +158,17 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
}
}
IEnumerable<DesignItem> selectedItems;
IList<DesignItem> selectedItems;
public IEnumerable<DesignItem> SelectedItems {
get {
return selectedItems;
}
set {
selectedItems = value;
if (value != null)
selectedItems = value.ToList();
else
selectedItems = null;
RaisePropertyChanged("SelectedItems");
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(
delegate {
@ -179,16 +182,26 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid @@ -179,16 +182,26 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid
Filter = null;
}
volatile bool reloadActive;
public bool ReloadActive {
get { return reloadActive; }
}
void Reload()
{
Clear();
if (SelectedItems == null || SelectedItems.Count() == 0) return;
if (SelectedItems.Count() == 1) SingleItem = SelectedItems.First();
foreach (var md in GetDescriptors()) {
if (PassesFilter(md.Name))
AddNode(md);
reloadActive = true;
try {
Clear();
if (selectedItems == null || selectedItems.Count == 0) return;
if (selectedItems.Count == 1) SingleItem = selectedItems[0];
foreach (var md in GetDescriptors()) {
if (PassesFilter(md.Name))
AddNode(md);
}
} finally {
reloadActive = false;
}
}

Loading…
Cancel
Save