Errors when using GUILayout in ModalWindow

I am trying to show a modal window and fill it using GUILayout. I have done this in another script without any problems, and can’t see what I’m doing differently here.

When I use “Begin/End Horizontal”, I get this error:
“ArgumentException: Getting control 1’s position in a group with only 1 controls when doing Repaint”. I have googled the error and other answers don’t seem to be related.

void OnGUI() {        
    if (UserLoggingIn) {
        GUI.ModalWindow(1, loginWindowRect, LoginWindow, "Login");
    }
}

void LoginWindow(int windowID) {
    GUILayout.BeginHorizontal();
    if (GUILayout.Button("Cancel")) {
        Debug.Log("Cancel");
    }
    if (GUILayout.Button("Login")) {
        Debug.Log("Login");
    }        
    GUILayout.EndHorizontal();
}

If I remove the Horizontal lines, the error clears, but the buttons do not respond. I can highlight the buttons, but clicking them does nothing.

void LoginWindow(int windowID) {
    if (GUILayout.Button("Cancel")) {
        Debug.Log("Cancel");
    }
    if (GUILayout.Button("Login")) {
        Debug.Log("Login");
    }        
}

I’m wondering if another script could be interfering, but can’t see how. Any ideas? The property UserLoggingIn is not being changed after initialisation.

I only just asked the question, but I found what was causing it so might as well leave an answer for others.

The issue was that I was giving the ModalWindow an id that was already being used by another Window. Changing the id solved this. The error message was not particularly helpful!

GUI.ModalWindow(2, loginWindowRect, LoginWindow, "Login");