int GetFixedAdjustedIndex (Keys key)
{
int result;
switch (key) {
case Keys.Left:
if (view == View.List)
result = focused_item_index - rows;
else
result = focused_item_index - 1;
break;
case Keys.Right:
if (view == View.List)
result = focused_item_index + rows;
else
result = focused_item_index + 1;
break;
case Keys.Up:
if (view != View.List)
result = focused_item_index - cols;
else
result = focused_item_index - 1;
break;
case Keys.Down:
if (view != View.List)
result = focused_item_index + cols;
else
result = focused_item_index + 1;
break;
default:
return -1;
}
if (result < 0 || result >= items.Count)
result = focused_item_index;
return result;
}