internal static void DoTextField(Rect position, int id, GUIContent content, bool multiline, int maxLength, GUIStyle style) { if (GUIUtilityUnstrip.GetMonoStateObject(typeof(TextEditorUnstrip), id) is TextEditorUnstrip textEditor) { if (maxLength >= 0 && content.text.Length > maxLength) { content.text = content.text.Substring(0, maxLength); } textEditor.m_Content.text = content.text; textEditor.SaveBackup(); textEditor.position = position; textEditor.style = style; textEditor.multiline = multiline; textEditor.controlID = id; textEditor.DetectFocusChange(); HandleTextFieldEventForDesktop(position, id, content, multiline, maxLength, style, textEditor); textEditor.UpdateScrollOffsetIfNeeded(Event.current); } }
private static Vector2 BeginScrollView_Impl(Rect position, Vector2 scrollPosition, Rect viewRect, bool alwaysShowHorizontal, bool alwaysShowVertical, GUIStyle horizontalScrollbar, GUIStyle verticalScrollbar, GUIStyle background) { // GUIUtility.CheckOnGUI(); int controlID = GUIUtility.GetControlID(GUI.s_ScrollviewHash, FocusType.Passive); ScrollViewStateUnstrip scrollExt; try { scrollExt = (ScrollViewStateUnstrip)GUIUtilityUnstrip.GetMonoStateObject(typeof(ScrollViewStateUnstrip), controlID); } catch { return(Vector2.zero); } bool apply = scrollExt.apply; if (apply) { scrollPosition = scrollExt.scrollPosition; scrollExt.apply = false; } scrollExt.position = position; scrollExt.scrollPosition = scrollPosition; scrollExt.visibleRect = scrollExt.viewRect = viewRect; var rect = scrollExt.visibleRect; rect.width = position.width; rect.height = position.height; ScrollStack.Push(scrollExt); Rect screenRect = new Rect(position.x, position.y, position.width, position.height); EventType type = Event.current.type; if (type != EventType.Layout) { if (type != EventType.Used) { bool flag = alwaysShowVertical; bool flag2 = alwaysShowHorizontal; if (flag2 || viewRect.width > screenRect.width) { rect.height = position.height - horizontalScrollbar.fixedHeight + (float)horizontalScrollbar.margin.top; screenRect.height -= horizontalScrollbar.fixedHeight + (float)horizontalScrollbar.margin.top; flag2 = true; } if (flag || viewRect.height > screenRect.height) { rect.width = position.width - verticalScrollbar.fixedWidth + (float)verticalScrollbar.margin.left; screenRect.width -= verticalScrollbar.fixedWidth + (float)verticalScrollbar.margin.left; flag = true; if (!flag2 && viewRect.width > screenRect.width) { rect.height = position.height - horizontalScrollbar.fixedHeight + (float)horizontalScrollbar.margin.top; screenRect.height -= horizontalScrollbar.fixedHeight + (float)horizontalScrollbar.margin.top; flag2 = true; } } if (Event.current.type == EventType.Repaint && background != GUIStyle.none) { background.Draw(position, position.Contains(Event.current.mousePosition), false, flag2 && flag, false); } if (flag2 && horizontalScrollbar != GUIStyle.none) { scrollPosition.x = HorizontalScroll( new Rect( position.x, position.yMax - horizontalScrollbar.fixedHeight, screenRect.width, horizontalScrollbar.fixedHeight), scrollPosition.x, Mathf.Min(screenRect.width, viewRect.width), 0f, viewRect.width, horizontalScrollbar ); } else { GUIUtility.GetControlID(GUI.s_SliderHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); scrollPosition.x = ((horizontalScrollbar == GUIStyle.none) ? Mathf.Clamp(scrollPosition.x, 0f, Mathf.Max(viewRect.width - position.width, 0f)) : 0f); } if (flag && verticalScrollbar != GUIStyle.none) { scrollPosition.y = VerticalScroll( new Rect( screenRect.xMax + (float)verticalScrollbar.margin.left, screenRect.y, verticalScrollbar.fixedWidth, screenRect.height), scrollPosition.y, Mathf.Min(screenRect.height, viewRect.height), 0f, viewRect.height, verticalScrollbar ); } else { GUIUtility.GetControlID(GUI.s_SliderHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); scrollPosition.y = ((verticalScrollbar == GUIStyle.none) ? Mathf.Clamp(scrollPosition.y, 0f, Mathf.Max(viewRect.height - position.height, 0f)) : 0f); } } } else { GUIUtility.GetControlID(GUI.s_SliderHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_SliderHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); GUIUtility.GetControlID(GUI.s_RepeatButtonHash, FocusType.Passive); } GUIClip.Push(screenRect, new Vector2( Mathf.Round(-scrollPosition.x - viewRect.x), Mathf.Round(-scrollPosition.y - viewRect.y)), Vector2.zero, false ); return(scrollPosition); }
private SliderStateUnstrip GetSliderState() { return((SliderStateUnstrip)GUIUtilityUnstrip.GetMonoStateObject(typeof(SliderStateUnstrip), this.id)); }