Пример #1
0
        public static bool SetFocus(MaterialFocusGroup p_container)
        {
            MaterialFocusGroup v_oldFocus = GetFocus();

            if (p_container != null)
            {
                if (v_oldFocus != p_container)
                {
                    var v_index = FocusOrder.IndexOf(p_container);
                    if (v_index >= 0)
                    {
                        FocusOrder.RemoveAt(v_index);
                    }

                    if (FocusOrder.Count > 0)
                    {
                        FocusOrder.Insert(0, p_container);
                    }
                    else
                    {
                        FocusOrder.Add(p_container);
                    }
                    //Call Focus Events
                    if (v_oldFocus != null)
                    {
                        v_oldFocus.HandleOnLoseFocus();
                    }

                    p_container.HandleOnGainFocus();

                    return(true);
                }
            }
            return(false);
        }
Пример #2
0
        public static void SetFocus(FocusGroup p_container)
        {
            FocusGroup v_oldFocus = GetFocus();

            if (p_container != null)
            {
                if (v_oldFocus != p_container)
                {
                    FocusOrder.RemoveChecking(p_container);
                    if (FocusOrder.Count > 0)
                    {
                        FocusOrder.Insert(0, p_container);
                    }
                    else
                    {
                        FocusOrder.Add(p_container);
                    }
                    //Call Focus Events
                    if (v_oldFocus != null && v_oldFocus.OnLoseFocusCallback != null)
                    {
                        v_oldFocus.OnLoseFocusCallback.Invoke();
                    }
                    if (p_container.OnGainFocusCallback != null)
                    {
                        p_container.OnGainFocusCallback.Invoke();
                    }
                }
            }
        }
Пример #3
0
 public static void SetFocus(FocusContainer p_container)
 {
     if (p_container != null && GetFocus() != p_container)
     {
         FocusOrder.RemoveChecking(p_container);
         if (FocusOrder.Count > 0)
         {
             FocusOrder.Insert(0, p_container);
         }
         else
         {
             FocusOrder.Add(p_container);
         }
     }
 }
Пример #4
0
        public static bool RemoveFocus(MaterialFocusGroup p_container, bool p_keepInList)
        {
            if (p_container != null)
            {
                if (!p_container.enabled)
                {
                    p_keepInList = false;
                }
                MaterialFocusGroup v_oldFocus = GetFocus();
                var v_index = FocusOrder.IndexOf(p_container);
                if (v_index >= 0)
                {
                    FocusOrder.RemoveAt(v_index);
                }
                if (p_keepInList)
                {
                    FocusOrder.Add(p_container);
                    var v_newIndex = FocusOrder.IndexOf(p_container);
                    //Focus cant change because we have only one object in list
                    if (v_newIndex == v_index)
                    {
                        return(false);
                    }
                }
                //Call Focus Events
                if (v_oldFocus == p_container)
                {
                    MaterialFocusGroup v_newFocus = GetFocus();
                    if (v_oldFocus != null)
                    {
                        v_oldFocus.HandleOnLoseFocus();
                    }

                    if (v_newFocus != null)
                    {
                        v_newFocus.HandleOnGainFocus();
                    }

                    return(true);
                }
                else if (v_oldFocus != null)
                {
                    v_oldFocus.StartKeyTriggerUpdateRoutine();
                }
            }
            return(false);
        }