protected override void ExecuteDefaultAction(EventBase evt) { if (evt == null) { return; } // no call to base.ExecuteDefaultAction(evt): // - we dont want mouse click to directly give focus to IMGUIContainer: // they should be handled by IMGUI and if an IMGUI control grabs the // keyboard, the IMGUIContainer will gain focus via FocusController.SyncIMGUIFocus. // - same thing for tabs: IMGUI should handle them. // - we dont want to set the PseudoState.Focus flag on IMGUIContainer. // They are focusable, but only for the purpose of focusing their children. // Here, we set flags that will be acted upon in DoOnGUI(), since we need to change IMGUI state. if (evt.eventTypeId == BlurEvent.TypeId()) { // A lost focus event is ... a lost focus event. // The specific handling of the IMGUI will be done in the DoOnGUI() above... lostFocus = true; // On lost focus, we need to repaint to remove any focused element blue borders. IncrementVersion(VersionChangeType.Repaint); } else if (evt.eventTypeId == FocusEvent.TypeId()) { FocusEvent fe = evt as FocusEvent; receivedFocus = true; focusChangeDirection = fe.direction; m_IsFocusDelegated = fe.IsFocusDelegated; } else if (evt.eventTypeId == DetachFromPanelEvent.TypeId()) { if (elementPanel != null) { elementPanel.IMGUIContainersCount--; } } else if (evt.eventTypeId == AttachToPanelEvent.TypeId()) { if (elementPanel != null) { elementPanel.IMGUIContainersCount++; // Set class names for foldout depth. SetFoldoutDepthClass(); } } }
public override void HandleEvent(EventBase evt) { if (evt.eventTypeId == AttachToPanelEvent.TypeId() && evt is AttachToPanelEvent attachEvent) { textHandle = attachEvent.destinationPanel.contextType == ContextType.Editor ? TextHandleFactory.GetEditorHandle() : TextHandleFactory.GetRuntimeHandle(); #if UNITY_EDITOR (attachEvent.destinationPanel as BaseVisualElementPanel)?.OnTextElementAdded(this); #endif } else if (evt.eventTypeId == DetachFromPanelEvent.TypeId() && evt is DetachFromPanelEvent detachEvent) { #if UNITY_EDITOR (detachEvent.originPanel as BaseVisualElementPanel)?.OnTextElementRemoved(this); #endif } base.HandleEvent(evt); }