mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2024-10-02 16:50:20 -07:00

* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2208 warnings * Address or silence dotnet format CA1806 and a few CA1854 warnings * Address dotnet format CA1822 warnings * Make dotnet format succeed in style mode * Address dotnet format CA2208 warnings properly * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Format if-blocks correctly * Another rebase, another dotnet format run * Run dotnet format whitespace after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Fix build issues * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Second dotnet format pass * Update src/Ryujinx/Modules/Updater/Updater.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Add trailing commas and improve formatting * Fix formatting and naming issues * Rename nvStutterWorkaround to nvidiaStutterWorkaround * Use using declarations and extend resource lifetimes * Fix GTK issues * Add formatting for generated files * Add trailing commas --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
109 lines
2.8 KiB
C#
109 lines
2.8 KiB
C#
using Gdk;
|
|
using Gtk;
|
|
using System;
|
|
using System.Numerics;
|
|
using Size = System.Drawing.Size;
|
|
|
|
namespace Ryujinx.Input.GTK3
|
|
{
|
|
public class GTK3MouseDriver : IGamepadDriver
|
|
{
|
|
private Widget _widget;
|
|
private bool _isDisposed;
|
|
|
|
public bool[] PressedButtons { get; }
|
|
|
|
public Vector2 CurrentPosition { get; private set; }
|
|
public Vector2 Scroll { get; private set; }
|
|
|
|
public GTK3MouseDriver(Widget parent)
|
|
{
|
|
_widget = parent;
|
|
|
|
_widget.MotionNotifyEvent += Parent_MotionNotifyEvent;
|
|
_widget.ButtonPressEvent += Parent_ButtonPressEvent;
|
|
_widget.ButtonReleaseEvent += Parent_ButtonReleaseEvent;
|
|
_widget.ScrollEvent += Parent_ScrollEvent;
|
|
|
|
PressedButtons = new bool[(int)MouseButton.Count];
|
|
}
|
|
|
|
|
|
[GLib.ConnectBefore]
|
|
private void Parent_ScrollEvent(object o, ScrollEventArgs args)
|
|
{
|
|
Scroll = new Vector2((float)args.Event.X, (float)args.Event.Y);
|
|
}
|
|
|
|
[GLib.ConnectBefore]
|
|
private void Parent_ButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
|
|
{
|
|
PressedButtons[args.Event.Button - 1] = false;
|
|
}
|
|
|
|
[GLib.ConnectBefore]
|
|
private void Parent_ButtonPressEvent(object o, ButtonPressEventArgs args)
|
|
{
|
|
PressedButtons[args.Event.Button - 1] = true;
|
|
}
|
|
|
|
[GLib.ConnectBefore]
|
|
private void Parent_MotionNotifyEvent(object o, MotionNotifyEventArgs args)
|
|
{
|
|
if (args.Event.Device.InputSource == InputSource.Mouse)
|
|
{
|
|
CurrentPosition = new Vector2((float)args.Event.X, (float)args.Event.Y);
|
|
}
|
|
}
|
|
|
|
public bool IsButtonPressed(MouseButton button)
|
|
{
|
|
return PressedButtons[(int)button];
|
|
}
|
|
|
|
public Size GetClientSize()
|
|
{
|
|
return new Size(_widget.AllocatedWidth, _widget.AllocatedHeight);
|
|
}
|
|
|
|
public string DriverName => "GTK3";
|
|
|
|
public event Action<string> OnGamepadConnected
|
|
{
|
|
add { }
|
|
remove { }
|
|
}
|
|
|
|
public event Action<string> OnGamepadDisconnected
|
|
{
|
|
add { }
|
|
remove { }
|
|
}
|
|
|
|
public ReadOnlySpan<string> GamepadsIds => new[] { "0" };
|
|
|
|
public IGamepad GetGamepad(string id)
|
|
{
|
|
return new GTK3Mouse(this);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
if (_isDisposed)
|
|
{
|
|
return;
|
|
}
|
|
|
|
GC.SuppressFinalize(this);
|
|
|
|
_isDisposed = true;
|
|
|
|
_widget.MotionNotifyEvent -= Parent_MotionNotifyEvent;
|
|
_widget.ButtonPressEvent -= Parent_ButtonPressEvent;
|
|
_widget.ButtonReleaseEvent -= Parent_ButtonReleaseEvent;
|
|
|
|
_widget = null;
|
|
}
|
|
}
|
|
}
|