protected void _SetActiveBrowser(Browser browser)
        {
            if (ActiveBrowser)
            {
                if (activeBrowserUI && forcingFocus)
                {
                    activeBrowserUI.ForceKeyboardHasFocus(false);
                    forcingFocus = false;
                }
            }

            _activeBrowser  = browser;
            activeBrowserUI = ActiveBrowser.GetComponent <PointerUIBase>();
            if (!activeBrowserUI)
            {
                //We can't focus the browser when we type, so the typed letters won't appear as we type.
                Debug.LogWarning("Browser does not have a PointerUI, external keyboard may not work properly.");
            }
        }
        private void InitCursor()
        {
            pointerUI    = GetComponent <PointerUIBase>();
            cursorHolder = new GameObject("Cursor for " + name);
            cursorHolder.transform.localScale = new Vector3(size, size, size);
            //If we place it in the parent, the scale can get wonky in some cases.
            //so don't cursorHolder.transform.parent = transform;

            cursorImage                  = GameObject.CreatePrimitive(PrimitiveType.Quad);
            cursorImage.name             = "Cursor Image";
            cursorImage.transform.parent = cursorHolder.transform;
            var mr = cursorImage.GetComponent <MeshRenderer>();

            mr.sharedMaterial = Resources.Load <Material>("Browser/CursorDecal");
            Destroy(cursorImage.GetComponent <Collider>());
            cursorImage.transform.SetParent(cursorHolder.transform, false);
            cursorImage.transform.localPosition = Vector3.zero;
            cursorImage.transform.localScale    = new Vector3(cursorSize, cursorSize, cursorSize);
            cursorHolder.SetActive(false);
        }