public void OnGUI()
        {
            /*
             * selectionBox.x = Event.current.mousePosition.x;
             * selectionBox.y = Event.current.mousePosition.y;
             * selectionBox.width = 128;
             * selectionBox.height = 128;
             */


            if (SF_GUI.ReleasedRawLMB() && boxSelecting)
            {
                ExecuteBoxSelect();
            }


            if (SF_GUI.PressedLMB() && SF_GUI.HoldingBoxSelect())
            {
                boxSelecting = true;

                if (!SF_GUI.MultiSelectModifierHeld())
                {
                    DeselectAll(registerUndo: true);
                }

                selectionBox.x = Event.current.mousePosition.x;
                selectionBox.y = Event.current.mousePosition.y;
                Event.current.Use();
            }


            // Duplicate, copy, cut, paste
            EventType et = Application.platform == RuntimePlatform.OSXEditor ? EventType.KeyDown : EventType.KeyUp;             // TODO: Use KeyDown for Windows too



            if (SF_GUI.HoldingControl() && Event.current.type == et && !SF_Node.isEditingAnyNodeTextField)
            {
                switch (Event.current.keyCode)
                {
                case (KeyCode.D):
                    DuplicateSelection();
                    break;

                case (KeyCode.C):
                    CopySelection();
                    break;

                case (KeyCode.X):
                    CutSelection();
                    break;

                case (KeyCode.V):
                    PasteFromClipboard();
                    break;
                }
            }

            // Selection box
            if (boxSelecting)
            {
                selectionBox.width  = Event.current.mousePosition.x - selectionBox.x;
                selectionBox.height = Event.current.mousePosition.y - selectionBox.y;

                if (Event.current.isMouse)
                {
                    Event.current.Use();
                }
            }

            if (SF_GUI.PressedDelete() && !SF_Node.isEditingAnyNodeTextField)
            {
                DeleteSelected();
                Event.current.Use();
            }
        }