+ // Used for virtual mode, where items *cannot* be re-arranged
+ 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;
+ }
+