فهرست منبع

Only invoke SelectionChanged if the selected item is different than the last selected item.

BDisp 5 سال پیش
والد
کامیت
7cf5ba062b
1فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 9 3
      Terminal.Gui/Views/ListView.cs

+ 9 - 3
Terminal.Gui/Views/ListView.cs

@@ -454,16 +454,22 @@ namespace Terminal.Gui {
 			return true;
 		}
 
+		int lastSelectedItem = -1;
+
 		/// <summary>
 		/// Invokes the SelectedChanged event if it is defined.
 		/// </summary>
 		/// <returns></returns>
 		public virtual bool OnSelectedChanged ()
 		{
-			var value = source.ToList () [selected];
-			SelectedChanged?.Invoke (this, new ListViewItemEventArgs (selected, value));
+			if (selected != lastSelectedItem) {
+				var value = source.ToList () [selected];
+				SelectedChanged?.Invoke (this, new ListViewItemEventArgs (selected, value));
+				lastSelectedItem = selected;
+				return true;
+			}
 
-			return true;
+			return false;
 		}
 
 		/// <summary>