public void Mouse_InputReceived(object sender, Extensibility.Input.MouseEventArgs e) { //e.Log(); //_viewModel.AddMessageInternal("Mouse Input", // string.Format("name={0} {1}", // e.Client != null ? e.Client.Name : "(no client)", // e.ToString())); }
internal void OnMouseInputReceived(object sender, Model.Input.MouseInput e) { // do not forward mouse-move events to extensions (they are unecessary, and it wastes cpu) // TODO: consider dispatching on a 'tile-snapped' basis, if 'tile under cursor' would change, dispatch a single update if (e.WM == WinAPI.WM.MOUSEMOVE) { return; } // TODO: consider queued mouse input instead of spawning a new task fro every event Task.Factory.StartNew(delegate() { // translate input var client = GetClientByHandle(e.WindowHandle) ?? GetActiveClient(); // dispatch to extensions _extensions.Values.ToList() .ForEach(ext => { try { var L_e = new Extensibility.Input.MouseEventArgs { Client = client, Handled = e.Handled, Time = e.Time, IsAbsolute = e.IsAbsolute, X = e.Point.X, Y = e.Point.Y, WM = e.WM, Flags = e.Flags, }; ext.Bridge.Mouse.OnInputReceived(client, L_e); e.Handled = e.Handled || L_e.Handled; } catch (Exception ex) { ex.Log(); } }); }, TaskCreationOptions.PreferFairness); }
public void Mouse_InputReceived(object sender, Extensibility.Input.MouseEventArgs e) { _lastInputTimestamp = DateTime.UtcNow.Ticks; }