diff options
| author | Mary Guillemard <mary@mary.zone> | 2024-03-02 12:51:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-02 12:51:05 +0100 |
| commit | ec6cb0abb4b7669895b6e96fd7581c93b5abd691 (patch) | |
| tree | 128c862ff5faea0b219467656d4023bee7faefb5 /src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs | |
| parent | 53b5985da6b9d7b281d9fc25b93bfd1d1918a107 (diff) | |
infra: Make Avalonia the default UI (#6375)
* misc: Move Ryujinx project to Ryujinx.Gtk3
This breaks release CI for now but that's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* misc: Move Ryujinx.Ava project to Ryujinx
This breaks CI for now, but it's fine.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* infra: Make Avalonia the default UI
Should fix CI after the previous changes.
GTK3 isn't build by the release job anymore, only by PR CI.
This also ensure that the test-ava update package is still generated to
allow update from the old testing channel.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix missing copy in create_app_bundle.sh
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Fix syntax error
Signed-off-by: Mary Guillemard <mary@mary.zone>
---------
Signed-off-by: Mary Guillemard <mary@mary.zone>
Diffstat (limited to 'src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs')
| -rw-r--r-- | src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs b/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs deleted file mode 100644 index 531d0061..00000000 --- a/src/Ryujinx.Ava/UI/Applet/AvaloniaDynamicTextInputHandler.cs +++ /dev/null @@ -1,162 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Input; -using Avalonia.Threading; -using Ryujinx.Ava.Input; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.Windows; -using Ryujinx.HLE.UI; -using System; -using System.Threading; -using HidKey = Ryujinx.Common.Configuration.Hid.Key; - -namespace Ryujinx.Ava.UI.Applet -{ - class AvaloniaDynamicTextInputHandler : IDynamicTextInputHandler - { - private MainWindow _parent; - private readonly OffscreenTextBox _hiddenTextBox; - private bool _canProcessInput; - private IDisposable _textChangedSubscription; - private IDisposable _selectionStartChangedSubscription; - private IDisposable _selectionEndtextChangedSubscription; - - public AvaloniaDynamicTextInputHandler(MainWindow parent) - { - _parent = parent; - - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).KeyPressed += AvaloniaDynamicTextInputHandler_KeyPressed; - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).KeyRelease += AvaloniaDynamicTextInputHandler_KeyRelease; - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).TextInput += AvaloniaDynamicTextInputHandler_TextInput; - - _hiddenTextBox = _parent.HiddenTextBox; - - Dispatcher.UIThread.Post(() => - { - _textChangedSubscription = _hiddenTextBox.GetObservable(TextBox.TextProperty).Subscribe(TextChanged); - _selectionStartChangedSubscription = _hiddenTextBox.GetObservable(TextBox.SelectionStartProperty).Subscribe(SelectionChanged); - _selectionEndtextChangedSubscription = _hiddenTextBox.GetObservable(TextBox.SelectionEndProperty).Subscribe(SelectionChanged); - }); - } - - private void TextChanged(string text) - { - TextChangedEvent?.Invoke(text ?? string.Empty, _hiddenTextBox.SelectionStart, _hiddenTextBox.SelectionEnd, true); - } - - private void SelectionChanged(int selection) - { - if (_hiddenTextBox.SelectionEnd < _hiddenTextBox.SelectionStart) - { - _hiddenTextBox.SelectionStart = _hiddenTextBox.SelectionEnd; - } - - TextChangedEvent?.Invoke(_hiddenTextBox.Text ?? string.Empty, _hiddenTextBox.SelectionStart, _hiddenTextBox.SelectionEnd, true); - } - - private void AvaloniaDynamicTextInputHandler_TextInput(object sender, string text) - { - Dispatcher.UIThread.InvokeAsync(() => - { - if (_canProcessInput) - { - _hiddenTextBox.SendText(text); - } - }); - } - - private void AvaloniaDynamicTextInputHandler_KeyRelease(object sender, KeyEventArgs e) - { - var key = (HidKey)AvaloniaKeyboardMappingHelper.ToInputKey(e.Key); - - if (!(KeyReleasedEvent?.Invoke(key)).GetValueOrDefault(true)) - { - return; - } - - e.RoutedEvent = OffscreenTextBox.GetKeyUpRoutedEvent(); - - Dispatcher.UIThread.InvokeAsync(() => - { - if (_canProcessInput) - { - _hiddenTextBox.SendKeyUpEvent(e); - } - }); - } - - private void AvaloniaDynamicTextInputHandler_KeyPressed(object sender, KeyEventArgs e) - { - var key = (HidKey)AvaloniaKeyboardMappingHelper.ToInputKey(e.Key); - - if (!(KeyPressedEvent?.Invoke(key)).GetValueOrDefault(true)) - { - return; - } - - e.RoutedEvent = OffscreenTextBox.GetKeyUpRoutedEvent(); - - Dispatcher.UIThread.InvokeAsync(() => - { - if (_canProcessInput) - { - _hiddenTextBox.SendKeyDownEvent(e); - } - }); - } - - public bool TextProcessingEnabled - { - get - { - return Volatile.Read(ref _canProcessInput); - } - set - { - Volatile.Write(ref _canProcessInput, value); - } - } - - public event DynamicTextChangedHandler TextChangedEvent; - public event KeyPressedHandler KeyPressedEvent; - public event KeyReleasedHandler KeyReleasedEvent; - - public void Dispose() - { - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).KeyPressed -= AvaloniaDynamicTextInputHandler_KeyPressed; - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).KeyRelease -= AvaloniaDynamicTextInputHandler_KeyRelease; - (_parent.InputManager.KeyboardDriver as AvaloniaKeyboardDriver).TextInput -= AvaloniaDynamicTextInputHandler_TextInput; - - _textChangedSubscription?.Dispose(); - _selectionStartChangedSubscription?.Dispose(); - _selectionEndtextChangedSubscription?.Dispose(); - - Dispatcher.UIThread.Post(() => - { - _hiddenTextBox.Clear(); - _parent.ViewModel.RendererHostControl.Focus(); - - _parent = null; - }); - } - - public void SetText(string text, int cursorBegin) - { - Dispatcher.UIThread.Post(() => - { - _hiddenTextBox.Text = text; - _hiddenTextBox.CaretIndex = cursorBegin; - }); - } - - public void SetText(string text, int cursorBegin, int cursorEnd) - { - Dispatcher.UIThread.Post(() => - { - _hiddenTextBox.Text = text; - _hiddenTextBox.SelectionStart = cursorBegin; - _hiddenTextBox.SelectionEnd = cursorEnd; - }); - } - } -} |
