소스 검색

Fixes #831. Ensures ListView's SelectedItemChanged event always been invoked on enter.

BDisp 5 년 전
부모
커밋
48d3034bbf
1개의 변경된 파일5개의 추가작업 그리고 5개의 파일을 삭제
  1. 5 5
      Terminal.Gui/Views/ListView.cs

+ 5 - 5
Terminal.Gui/Views/ListView.cs

@@ -516,7 +516,7 @@ namespace Terminal.Gui {
 		/// <returns></returns>
 		public virtual bool OnSelectedChanged ()
 		{
-			if (selected != lastSelectedItem) {
+			if (selected != lastSelectedItem && source?.Count > 0) {
 				var value = source.ToList () [selected];
 				SelectedItemChanged?.Invoke (new ListViewItemEventArgs (selected, value));
 				lastSelectedItem = selected;
@@ -550,10 +550,10 @@ namespace Terminal.Gui {
 		}
 
 		///<inheritdoc/>
-		public override bool OnMouseEnter (MouseEvent mouseEvent)
+		public override bool OnLeave (View view)
 		{
-			if (source?.Count > 0 && selected >= 0 && lastSelectedItem == -1) {
-				lastSelectedItem = selected;
+			if (lastSelectedItem > -1) {
+				lastSelectedItem = -1;
 				return true;
 			}
 
@@ -573,7 +573,7 @@ namespace Terminal.Gui {
 		public override bool MouseEvent(MouseEvent me)
 		{
 			if (!me.Flags.HasFlag (MouseFlags.Button1Clicked) && !me.Flags.HasFlag (MouseFlags.Button1DoubleClicked) &&
-				me.Flags != MouseFlags.WheeledDown && me.Flags != MouseFlags.WheeledUp)
+				me.Flags != MouseFlags.WheeledDown && me.Flags != MouseFlags.WheeledUp && !CanFocus)
 				return false;
 
 			if (!HasFocus)