mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2026-05-25 10:42:30 +00:00
Cache keyboard driver reference in AvaloniaDynamicTextInputHandler
Store the AvaloniaKeyboardDriver reference during construction to ensure safe and consistent event subscription/unsubscription. This prevents issues if the InputManager.KeyboardDriver property is replaced between construction and disposal.
This commit is contained in:
parent
6f0b3f0663
commit
84c7d55bea
1 changed files with 6 additions and 4 deletions
|
|
@ -15,6 +15,7 @@ namespace Ryujinx.Ava.UI.Applet
|
|||
class AvaloniaDynamicTextInputHandler : IDynamicTextInputHandler
|
||||
{
|
||||
private MainWindow _parent;
|
||||
private AvaloniaKeyboardDriver _avaloniaKeyboardDriver;
|
||||
private readonly OffscreenTextBox _hiddenTextBox;
|
||||
private bool _canProcessInput;
|
||||
private IDisposable _textChangedSubscription;
|
||||
|
|
@ -27,6 +28,7 @@ namespace Ryujinx.Ava.UI.Applet
|
|||
|
||||
if (_parent.InputManager.KeyboardDriver is AvaloniaKeyboardDriver avaloniaKeyboardDriver)
|
||||
{
|
||||
_avaloniaKeyboardDriver = avaloniaKeyboardDriver;
|
||||
avaloniaKeyboardDriver.KeyPressed += AvaloniaDynamicTextInputHandler_KeyPressed;
|
||||
avaloniaKeyboardDriver.KeyRelease += AvaloniaDynamicTextInputHandler_KeyRelease;
|
||||
avaloniaKeyboardDriver.TextInput += AvaloniaDynamicTextInputHandler_TextInput;
|
||||
|
|
@ -115,11 +117,11 @@ namespace Ryujinx.Ava.UI.Applet
|
|||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_parent.InputManager.KeyboardDriver is AvaloniaKeyboardDriver avaloniaKeyboardDriver)
|
||||
if (_avaloniaKeyboardDriver != null)
|
||||
{
|
||||
avaloniaKeyboardDriver.KeyPressed -= AvaloniaDynamicTextInputHandler_KeyPressed;
|
||||
avaloniaKeyboardDriver.KeyRelease -= AvaloniaDynamicTextInputHandler_KeyRelease;
|
||||
avaloniaKeyboardDriver.TextInput -= AvaloniaDynamicTextInputHandler_TextInput;
|
||||
_avaloniaKeyboardDriver.KeyPressed -= AvaloniaDynamicTextInputHandler_KeyPressed;
|
||||
_avaloniaKeyboardDriver.KeyRelease -= AvaloniaDynamicTextInputHandler_KeyRelease;
|
||||
_avaloniaKeyboardDriver.TextInput -= AvaloniaDynamicTextInputHandler_TextInput;
|
||||
}
|
||||
|
||||
_textChangedSubscription?.Dispose();
|
||||
|
|
|
|||
Loading…
Reference in a new issue