소스 검색

Allowing list items selection (#302)

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

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

@@ -151,7 +151,7 @@ namespace Terminal.Gui {
 			set {
 				if (source == null)
 					return;
-				
+
 				if (top < 0 || top >= source.Count)
 					throw new ArgumentException ("value");
 				top = value;
@@ -279,7 +279,7 @@ namespace Terminal.Gui {
 		{
 			if (source == null)
 				return base.ProcessKey (kb);
-			
+
 			switch (kb.Key) {
 			case Key.CursorUp:
 			case Key.ControlP:
@@ -379,7 +379,10 @@ namespace Terminal.Gui {
 		/// </summary>
 		public override void PositionCursor()
 		{
-			Move (0, selected-top);
+			if (allowsMarking)
+				Move (1, selected - top);
+			else
+				Move (0, selected - top);
 		}
 
 		public override bool MouseEvent(MouseEvent me)
@@ -387,16 +390,21 @@ namespace Terminal.Gui {
 			if (!me.Flags.HasFlag (MouseFlags.Button1Clicked))
 				return false;
 
-			if (!HasFocus) 
+			if (!HasFocus)
 				SuperView.SetFocus (this);
 
 			if (source == null)
 				return false;
-			
+
 			if (me.Y + top >= source.Count)
 				return true;
 
 			selected = top + me.Y;
+			if (allowsMarking) {
+				Source.SetMark (SelectedItem, !Source.IsMarked (SelectedItem));
+				SetNeedsDisplay ();
+				return true;
+			}
 			if (SelectedChanged != null)
 				SelectedChanged();
 			SetNeedsDisplay ();