Esempio n. 1
0
        static void SetOptions()
        {
            if (EnableScrollingUnderMouse)
            {
                swf.Application.AddMessageFilter(new ScrollMessageFilter());
            }

            if (BubbleMouseEvents)
            {
                var bubble = new BubbleEventFilter();
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseWheel(c, e), null, Win32.WM.MOUSEWHEEL);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseMove(c, e), null, Win32.WM.MOUSEMOVE);
                bubble.AddBubbleMouseEvents((c, cb, e) => cb.OnMouseDown(c, e), true, Win32.WM.LBUTTONDOWN, Win32.WM.RBUTTONDOWN, Win32.WM.MBUTTONDOWN);
                bubble.AddBubbleMouseEvents((c, cb, e) => {
                    cb.OnMouseDoubleClick(c, e);
                    if (!e.Handled)
                    {
                        cb.OnMouseDown(c, e);
                    }
                }, null, Win32.WM.LBUTTONDBLCLK, Win32.WM.RBUTTONDBLCLK, Win32.WM.MBUTTONDBLCLK);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.LBUTTONUP, b => MouseButtons.Primary);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.RBUTTONUP, b => MouseButtons.Alternate);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.MBUTTONUP, b => MouseButtons.Middle);
                swf.Application.AddMessageFilter(bubble);
            }
            if (BubbleKeyEvents)
            {
                var bubble = new BubbleEventFilter();
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyDown(c, e), Win32.WM.KEYDOWN, KeyEventType.KeyDown);
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyDown(c, e), Win32.WM.SYSKEYDOWN, KeyEventType.KeyDown);
                bubble.AddBubbleKeyCharEvent((c, cb, e) => cb.OnKeyDown(c, e), Win32.WM.CHAR, KeyEventType.KeyDown);
                bubble.AddBubbleKeyCharEvent((c, cb, e) => cb.OnKeyDown(c, e), Win32.WM.SYSCHAR, KeyEventType.KeyDown);
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyUp(c, e), Win32.WM.KEYUP, KeyEventType.KeyUp);
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyUp(c, e), Win32.WM.SYSKEYUP, KeyEventType.KeyUp);
                swf.Application.AddMessageFilter(bubble);
            }
        }
Esempio n. 2
0
        static void SetOptions()
        {
            if (EtoEnvironment.Platform.IsWindows && EnableScrollingUnderMouse)
            {
                swf.Application.AddMessageFilter(new ScrollMessageFilter());
            }

            if (BubbleMouseEvents)
            {
                var bubble = new BubbleEventFilter();
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseWheel(c, e), null, Win32.WM.MOUSEWHEEL);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseMove(c, e), null, Win32.WM.MOUSEMOVE);
                bubble.AddBubbleMouseEvents((c, cb, e) => cb.OnMouseDown(c, e), true, Win32.WM.LBUTTONDOWN, Win32.WM.RBUTTONDOWN, Win32.WM.MBUTTONDOWN);
                bubble.AddBubbleMouseEvents((c, cb, e) => {
                    cb.OnMouseDoubleClick(c, e);
                    if (!e.Handled)
                    {
                        cb.OnMouseDown(c, e);
                    }
                }, null, Win32.WM.LBUTTONDBLCLK, Win32.WM.RBUTTONDBLCLK, Win32.WM.MBUTTONDBLCLK);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.LBUTTONUP, b => MouseButtons.Primary);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.RBUTTONUP, b => MouseButtons.Alternate);
                bubble.AddBubbleMouseEvent((c, cb, e) => cb.OnMouseUp(c, e), false, Win32.WM.MBUTTONUP, b => MouseButtons.Middle);
                swf.Application.AddMessageFilter(bubble);
            }
            if (BubbleKeyEvents)
            {
                var bubble = new BubbleEventFilter();

                Action <Control, Control.ICallback, KeyEventArgs> keyDown = (c, cb, e) =>
                {
                    cb.OnKeyDown(c, e);
                    c.Properties[SuppressKeyPressKey] = e.Handled;
                };

                Action <Control, Control.ICallback, KeyEventArgs> keyPress = (c, cb, e) =>
                {
                    if (!c.Properties.Get <bool>(SuppressKeyPressKey))
                    {
                        if (!char.IsControl(e.KeyChar))
                        {
                            var tia = new TextInputEventArgs(e.KeyChar.ToString());
                            cb.OnTextInput(c, tia);
                            e.Handled = tia.Cancel;
                        }

                        if (!e.Handled)
                        {
                            cb.OnKeyDown(c, e);
                        }
                    }
                    else
                    {
                        e.Handled = true;
                        c.Properties.Remove(SuppressKeyPressKey);
                    }
                };

                bubble.AddBubbleKeyEvent(keyDown, Win32.WM.KEYDOWN, KeyEventType.KeyDown);
                bubble.AddBubbleKeyEvent(keyDown, Win32.WM.SYSKEYDOWN, KeyEventType.KeyDown);
                bubble.AddBubbleKeyCharEvent(keyPress, Win32.WM.CHAR, KeyEventType.KeyDown);
                bubble.AddBubbleKeyCharEvent(keyPress, Win32.WM.SYSCHAR, KeyEventType.KeyDown);
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyUp(c, e), Win32.WM.KEYUP, KeyEventType.KeyUp);
                bubble.AddBubbleKeyEvent((c, cb, e) => cb.OnKeyUp(c, e), Win32.WM.SYSKEYUP, KeyEventType.KeyUp);
                swf.Application.AddMessageFilter(bubble);
            }
        }