private void SetSelectedControlToControlAtPosition(int mouseX, int mouseY)
{
GUIControl controlFound = null;
int zorderFound = -1;
foreach (GUIControl control in _gui.Controls)
{
if ((mouseX >= control.Left) && (mouseX < control.Left + control.Width) &&
(mouseY >= control.Top) && (mouseY < control.Top + control.Height) &&
(control.ZOrder > zorderFound))
{
controlFound = control;
zorderFound = control.ZOrder;
}
}
_selectedControl = controlFound;
// check for ctrl
if (controlFound != null)
{
if (Utilities.IsControlPressed())
{
if (_selected.Contains(controlFound) && _selected.Count > 1)
{
_selected.Remove(controlFound);
if (_selected.Count > 0)
{
_selectedControl = _selected[_selected.Count - 1];
}
else _selectedControl = null;
}
else if (!_selected.Contains(controlFound))
{
if (controlFound.MemberOf != null)
{
foreach (GUIControl gc in controlFound.MemberOf)
{
_selected.Add(gc);
}
}
else _selected.Add(controlFound);
}
}
else
{
if (!_selected.Contains(controlFound))
{
_selected.Clear();
if (controlFound.MemberOf != null)
{
foreach (GUIControl gc in controlFound.MemberOf)
{
_selected.Add(gc);
}
}
else _selected.Add(controlFound);
}
_selectedControl = controlFound;
}
}
else if (!Utilities.IsControlPressed())
{
_selected.Clear();
_selectedControl = null;
}
if (_selectedControl == null)
{
DeSelectControl();
}
}