|
@@ -450,17 +450,18 @@ namespace Terminal.Gui {
|
|
|
{
|
|
|
if (source.Count == 0){
|
|
|
// Do we set lastSelectedItem to zero here?
|
|
|
- return false; //Nothing for us to move to
|
|
|
- }
|
|
|
+ return false; //Nothing for us to move to
|
|
|
+ }
|
|
|
if (selected >= source.Count) {
|
|
|
// If for some reason we are currently outside of the
|
|
|
// valid values range, we should select the bottommost valid value.
|
|
|
// This can occur if the backing data source changes.
|
|
|
- selected = source.Count - 1;
|
|
|
+ selected = source.Count - 1;
|
|
|
OnSelectedChanged ();
|
|
|
SetNeedsDisplay ();
|
|
|
- } else if (selected + 1 < source.Count) { //can move by down by one.
|
|
|
+ } else if (selected + 1 < source.Count) { //can move by down by one.
|
|
|
selected++;
|
|
|
+
|
|
|
if (selected >= top + Frame.Height)
|
|
|
top++;
|
|
|
OnSelectedChanged ();
|
|
@@ -481,26 +482,25 @@ namespace Terminal.Gui {
|
|
|
{
|
|
|
if (source.Count == 0){
|
|
|
// Do we set lastSelectedItem to zero here?
|
|
|
- return false; //Nothing for us to move to
|
|
|
- }
|
|
|
+ return false; //Nothing for us to move to
|
|
|
+ }
|
|
|
if (selected >= source.Count) {
|
|
|
// If for some reason we are currently outside of the
|
|
|
// valid values range, we should select the bottommost valid value.
|
|
|
// This can occur if the backing data source changes.
|
|
|
- selected = source.Count - 1;
|
|
|
+ selected = source.Count - 1;
|
|
|
OnSelectedChanged ();
|
|
|
SetNeedsDisplay ();
|
|
|
- } else if (selected > 0) {
|
|
|
- selected--;
|
|
|
+ } else if (selected > 0) {
|
|
|
+ selected--;
|
|
|
if (selected > Source.Count) {
|
|
|
- selected = Source.Count - 1;
|
|
|
- }
|
|
|
- if (selected < top)
|
|
|
+ selected = Source.Count - 1;
|
|
|
+ }
|
|
|
+ if (selected < top)
|
|
|
top = selected;
|
|
|
OnSelectedChanged ();
|
|
|
SetNeedsDisplay ();
|
|
|
}
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -560,7 +560,8 @@ namespace Terminal.Gui {
|
|
|
/// <returns></returns>
|
|
|
public virtual bool OnOpenSelectedItem ()
|
|
|
{
|
|
|
- var value = source.ToList () [selected];
|
|
|
+ if (source.Count <= selected ||selected < 0) return false;
|
|
|
+ var value = source.ToList () [selected];
|
|
|
OpenSelectedItem?.Invoke (new ListViewItemEventArgs (selected, value));
|
|
|
|
|
|
return true;
|