Esempio n. 1
0
        protected override void DefaultInputOverride(WndWindowMessage message, ControlCallbackContext context)
        {
            // TODO: Capture input on mouse down.
            // TODO: Only fire click event when mouse was pressed and released inside same button.

            switch (message.MessageType)
            {
            case WndWindowMessageType.MouseUp:
                context.WindowManager.Focus(this);
                Click?.Invoke(this, EventArgs.Empty);
                break;

            case WndWindowMessageType.MouseEnter:
            case WndWindowMessageType.MouseMove:
            case WndWindowMessageType.MouseExit:
            case WndWindowMessageType.MouseDown:

                break;

            case WndWindowMessageType.KeyDown:
                if (!IsReadOnly)
                {
                    var character = KeyMap.GetCharacter(message.Key);

                    // Not a printable character
                    if (character == '\0')
                    {
                        switch (message.Key)
                        {
                        case Veldrid.Key.BackSpace:
                            if (Text.Length > 0)
                            {
                                Text = Text.Remove(Text.Length - 1, 1);
                            }
                            break;
                        }
                    }
                    else
                    {
                        if (message.Modifiers.HasFlag(Veldrid.ModifierKeys.Shift))
                        {
                            Text += char.ToUpperInvariant(character);
                        }
                        else
                        {
                            Text += char.ToLowerInvariant(character);
                        }
                    }
                }
                break;

            default:
                logger.Info($"Unhandled event: {message.MessageType} {message.Element} {message.MousePosition} {message.Key}");
                break;
            }
        }