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); } }
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); } }