- Timestamp:
- 07/22/19 14:12:15 (5 years ago)
- Location:
- stable
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk merged: 17009,17126
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Core.Views
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Core.Views merged: 17009,17126
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs
r17097 r17147 37 37 [Content(typeof(ReadOnlyCheckedItemList<>), true)] 38 38 public partial class CheckedItemListView<T> : ItemListView<T> where T : class, IItem { 39 private bool suppressCheckedEvents; 40 39 41 public new ICheckedItemList<T> Content { 40 42 get { return (ICheckedItemList<T>)base.Content; } … … 84 86 if (doubleClick) { 85 87 e.NewValue = e.CurrentValue; 86 doubleClick = false;87 88 } else { 88 var checkedItem = (T)itemsListView.Items[e.Index].Tag;89 89 bool check = e.NewValue == CheckState.Checked; 90 if (Content.ItemChecked(checkedItem) != check) { 91 if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check); 92 else e.NewValue = e.CurrentValue; 93 } 90 if (Content.ItemChecked(e.Index) == check) return; 91 92 suppressCheckedEvents = true; 93 try { 94 if (itemsListView.SelectedIndices.Count > 1 95 && itemsListView.SelectedIndices.Contains(e.Index)) { 96 if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedIndices.Cast<int>(), check); 97 else e.NewValue = e.CurrentValue; 98 } else { 99 var checkedItem = (T)itemsListView.Items[e.Index].Tag; 100 if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check); 101 else e.NewValue = e.CurrentValue; 102 } 103 } finally { suppressCheckedEvents = false; } 94 104 } 95 105 } 96 106 97 107 protected void itemsListView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { 98 if (e.Clicks > 1) 99 doubleClick = true; 108 doubleClick = e.Clicks > 1; 100 109 } 101 110 … … 139 148 Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged), sender, e); 140 149 else { 141 UpdateCheckedItemState(e.Items);150 if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items); 142 151 SetNumberOfCheckItems(); 143 152 } … … 175 184 176 185 private void UpdateCheckedItemState(IEnumerable<IndexedItem<T>> items) { 177 foreach (var item in items) { 178 var isChecked = Content.ItemChecked(item.Value); 179 if (itemsListView.Items[item.Index].Checked != isChecked) 180 itemsListView.Items[item.Index].Checked = isChecked; 181 } 186 itemsListView.BeginUpdate(); 187 try { 188 foreach (var item in items) { 189 var isChecked = Content.ItemChecked(item.Value); 190 if (itemsListView.Items[item.Index].Checked != isChecked) 191 itemsListView.Items[item.Index].Checked = isChecked; 192 } 193 } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); } 182 194 } 183 195 }
Note: See TracChangeset
for help on using the changeset viewer.