public virtual void MouseStatusChanged(EMouseStatus e, Vector2 pos)
 {
     if (OnMouse != null)
     {
         OnMouse(this, e, pos);
     }
 }
Example #2
0
        public int HandleMouseEvent(Event e)
        {
            // Console.WriteLine();
            // Console.WriteLine("SGUI-IM: Handling mouse event " + e);
            SGroup lastWindowDragging = _WindowDragging;

            EventType    type   = e.type;
            EMouseStatus status = EMouseStatus.Outside;

            switch (type)
            {
            case EventType.MouseUp: status = EMouseStatus.Up; break;

            case EventType.MouseDown: status = EMouseStatus.Down; break;

            case EventType.MouseDrag: status = EMouseStatus.Drag; break;
            }
            Vector2 pos = e.mousePosition;

            int handled = HandleMouseEventIn(e, null);

            if (handled != -1)
            {
                if (type != EventType.MouseMove)
                {
                    _RegisteredNextElement = false;
                    for (int i = 0; i < _OPs.Count; i++)
                    {
                        _RecreateOperation(i, handled);
                    }

                    _ComponentElements[handled]?.SetMouseStatus(_Secret, status, pos);
                }
                else
                {
                    for (int i = 0; i < _Elements.Count; i++)
                    {
                        SElement elem = _Elements[i];
                        if (elem == null)
                        {
                            continue;
                        }
                        // TODO replace GetFirstComponentID with possible future HasComponentID
                        elem.SetMouseStatus(_Secret, GetFirstComponentID(elem) == handled ? EMouseStatus.Inside : EMouseStatus.Outside, pos);
                    }
                }
            }

            if (lastWindowDragging == null && _WindowDragging != null)
            {
                IList <SElement> children = _WindowDragging.Parent?.Children ?? _WindowDragging.Root.Children;
                children.Remove(_WindowDragging);
                children.Insert(children.Count, _WindowDragging);
            }

            // Console.WriteLine("SGUI-IM: Mouse event handled: " + handled);
            // Console.WriteLine();
            return(handled);
        }
Example #3
0
        public override void MouseStatusChanged(EMouseStatus e, Vector2 pos)
        {
            base.MouseStatusChanged(e, pos);

            if (e == EMouseStatus.Down)
            {
                OnClick?.Invoke(this);
            }
        }
Example #4
0
        public override void MouseStatusChanged(EMouseStatus e, Vector2 pos)
        {
            base.MouseStatusChanged(e, pos);

            if (e == EMouseStatus.Down)
            {
                Focus();
            }
        }
        public SElement()
        {
            IsHovered       = true;
            WasHovered      = true;
            MouseStatus     = EMouseStatus.Inside;
            MouseStatusPrev = EMouseStatus.Inside;

            Children.ListChanged  += HandleChange;
            Modifiers.ListChanged += HandleModifierChange;
            if (SGUIRoot.Main != null)
            {
                SGUIRoot.Main.AdoptedChildren.Add(this);
                Foreground = SGUIRoot.Main.Foreground;
                Background = SGUIRoot.Main.Background;
            }
        }
Example #6
0
        public override void MouseStatusChanged(EMouseStatus e, Vector2 pos)
        {
            base.MouseStatusChanged(e, pos);

            if (e == EMouseStatus.Down)
            {
                IsClicked = true;
            }
            if (e == EMouseStatus.Up && IsClicked)
            {
                if (OnClick != null)
                {
                    OnClick(this);
                }
                IsClicked = false;
            }
            if (e == EMouseStatus.Outside)
            {
                IsClicked = false;
            }
        }
 public virtual void SetMouseStatus(int secret, EMouseStatus e, Vector2 pos)
 {
     Backend.VerifySecret(secret);
     if (MouseStatus != e)
     {
         if (e != EMouseStatus.Inside && e != EMouseStatus.Outside)
         {
             MouseStatusChanged(e, pos);
         }
         else
         {
             bool inside = e == EMouseStatus.Inside;
             if (IsHovered != inside)
             {
                 MouseStatusChanged(e, pos);
             }
             WasHovered = IsHovered;
             IsHovered  = inside;
         }
     }
     MouseStatusPrev = MouseStatus;
     MouseStatus     = e;
 }
Example #8
0
 public virtual void MouseStatusChanged(EMouseStatus e, Vector2 pos)
 {
     OnMouse?.Invoke(this, e, pos);
 }